开发流程

成功接入以后,可以在​​蚂蚁金服开放平台​​网页&移动应用中,看到我的应用列表中多了一个“应用2.0签约******”的应用:

支付宝当面付_开放平台

现在我们可以开发接入了,总体分为以下几个步骤(参考​​当面付文档​​,​​当面付开发流程​​):

  • 配置当面付公钥私钥
  • 找到“应用2.0签约******”的应用,点击右侧查看详情
    支付宝当面付_开放平台_02
  • 在应用信息中设置公钥
    支付宝当面付_代码示例_03
    支付宝官方提供了密钥生成工具,很简单,使用工具生成应用公钥和私钥,应用公钥设置到支付宝,应用私钥保存到本地,应用公钥设置到支付宝后,支付宝会生成一个支付宝公钥,保存到本地。​​具体参见这里​
  • 开发:我是使用python作为后端,使用​​这个开源库​​,下面是简单代码示例:
from alipay import AliPay
import time

# 密钥工具生成的私钥,和支付宝公钥(我保存在了文件中)
app_private_key_string = open("app_private_key.pem").read()
alipay_public_key_string = open("alipay_public_key.txt").read()

print(alipay_public_key_string)
'''
这里打印应该是这种格式(如果支付宝密钥生成工具生成的密钥没有头尾要自己加上)
私钥格式:
-----BEGIN RSA PRIVATE KEY-----
base64 encoded content
-----END RSA PRIVATE KEY-----

公钥格式:
-----BEGIN PUBLIC KEY-----
base64 encoded content
-----END PUBLIC KEY-----
'''

alipay = AliPay(
appid="2019***********", # 应用列表中“应用2.0签约******”的appid
app_notify_url=None, # 默认回调url
app_private_key_string=app_private_key_string, # 应用私钥
alipay_public_key_string=alipay_public_key_string, # 支付宝公钥
sign_type="RSA2", # RSA 或者 RSA2(具体要看你的密钥是什么类型)
debug=False # 默认False
)

out_trade_no = "out_trade_no_123"
# 创建订单
result = alipay.api_alipay_trade_precreate(
subject="test subject", # 订单标题
out_trade_no=out_trade_no, # 订单号(不可重复)
total_amount=0.1 # 订单金额,单位元
)

print(result)
# 这里应该打印出{'code': '10000', 'msg': 'Success', 'out_trade_no': 'out_trade_no_123', 'qr_code': 'https://qr.alipay.com/bax05832mvaotxhcpjeh6074'}
# 其中用qr_code生成二维码,支付宝扫描即可付款

# check order status
paid = False
for i in range(30):
# check every 3s, and 10 times in all
print("now sleep 3s")
time.sleep(3)
result = alipay.api_alipay_trade_query(out_trade_no=out_trade_no)
if result.get("trade_status", "") == "TRADE_SUCCESS":
paid = True
break
print("not paid...")

# order is not paid in 30s , cancel this order
if paid is False:
print("支付失败,取消订单")
alipay.api_alipay_trade_cancel(out_trade_no=out_trade_no)
else:
print("支付成功")