支付宝当面付
https://blog.csdn.net/rankun1/article/details/92401295
接入流程
點(diǎn)擊在這里進(jìn)入,登陸支付寶賬戶選擇立即接入。
經(jīng)營(yíng)內(nèi)容選擇百貨零售-超市-超市(非平臺(tái)類)
營(yíng)業(yè)執(zhí)照可不上傳
店鋪招牌 百度即可
提交申請(qǐng)后十多分鐘就可收到通過通知。
開發(fā)流程
成功接入以后,可以在螞蟻金服開放平臺(tái)網(wǎng)頁&移動(dòng)應(yīng)用中,看到我的應(yīng)用列表中多了一個(gè)“應(yīng)用2.0簽約******”的應(yīng)用:
現(xiàn)在我們可以開發(fā)接入了,總體分為以下幾個(gè)步驟(參考當(dāng)面付文檔,當(dāng)面付開發(fā)流程):
配置當(dāng)面付公鑰私鑰
找到“應(yīng)用2.0簽約******”的應(yīng)用,點(diǎn)擊右側(cè)查看詳情
在應(yīng)用信息中設(shè)置公鑰
支付寶官方提供了密鑰生成工具,很簡(jiǎn)單,使用工具生成應(yīng)用公鑰和私鑰,應(yīng)用公鑰設(shè)置到支付寶,應(yīng)用私鑰保存到本地,應(yīng)用公鑰設(shè)置到支付寶后,支付寶會(huì)生成一個(gè)支付寶公鑰,保存到本地。具體參見這里開發(fā):我是使用python作為后端,使用這個(gè)開源庫,下面是簡(jiǎn)單代碼示例:
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)
'''
這里打印應(yīng)該是這種格式(如果支付寶密鑰生成工具生成的密鑰沒有頭尾要自己加上)
私鑰格式:
-----BEGIN RSA PRIVATE KEY-----
base64 encoded content
-----END RSA PRIVATE KEY-----
公鑰格式:
-----BEGIN PUBLIC KEY-----
base64 encoded content
-----END PUBLIC KEY-----
'''
alipay = AliPay(
appid="2019***********", # 應(yīng)用列表中“應(yīng)用2.0簽約******”的appid
app_notify_url=None, # 默認(rèn)回調(diào)url
app_private_key_string=app_private_key_string, # 應(yīng)用私鑰
alipay_public_key_string=alipay_public_key_string, # 支付寶公鑰
sign_type="RSA2", # RSA 或者 RSA2(具體要看你的密鑰是什么類型)
debug=False # 默認(rèn)False
)
out_trade_no = "out_trade_no_123"
# 創(chuàng)建訂單
result = alipay.api_alipay_trade_precreate(
subject="test subject", # 訂單標(biāo)題
out_trade_no=out_trade_no, # 訂單號(hào)(不可重復(fù))
total_amount=0.1 # 訂單金額,單位元
)
print(result)
# 這里應(yīng)該打印出{'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("支付成功")
其他
當(dāng)面付相關(guān)接口
這里查看交易數(shù)據(jù)
總結(jié)
- 上一篇: 钉钉授权第三方WEB网站扫码登录
- 下一篇: CAD如何设置打印时不产生plot.lo