alipay提供的sdk接口支持java、php、.net
应用于python中,使用github上的第三方sdk,参考:https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
私钥与公钥的生成可以使用alipay提供的RSA生成工具。
开发文档:
快速接入>>https://docs.open.alipay.com/270/105899/
沙箱使用>>https://docs.open.alipay.com/200/105311/
对于notify_url的异步回调验证,基于Django:
@csrf_exempt
def verify_pay(request):
alipay = get_alipay()
data_0 = request.POST.copy()
data = {}
for key in data_0:
data[key] = data_0[key]
signature = data.pop('sign')
# print(json.dumps(data))
# print(signature)
# verify
success_l = alipay.verify(data, signature)
if success_l and data['trade_status'] in ("TRADE_SUCCESS", "TRADE_FINISHED" ):
print 'success'
notify_url属于异步通知,POST方法,成功率取决于应用服务器;return_url属于同步通知,GET方法,成功率取决于用户;
统一创建接口工具部分:
def get_alipay():
# 创建用于进行支付宝支付的工具对象
alipay = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None, # 默认回调url
app_private_key_path=os.path.join(settings.ROOT_PATH, 'apay/paytest/rsa_private_key.pem'),
alipay_public_key_path=os.path.join(settings.ROOT_PATH, 'apay/paytest/alipay_public_key.pem'),
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
sign_type='RSA2', # RSA 或者 RSA2
debug=False # 默认False 配合沙箱模式使用
)
return alipay
对于同步验证:
response = alipay.api_alipay_trade_query(out_trade_no=order_id) # response是一个字典