最近在折腾支付宝的移动支付(alipay.trade.app.pay), 直观的来说就是让iOS或者Android应用唤起支付宝,支付宝支付成功之后再返回应用。
支付宝APP支付没有提供Python的SDK,后台和iOS以及Android的对接难免遇到了些问题,尤其是SHA1withRSA签名的部分。本文将会简单介绍一下支付宝APP支付的一些流程以及原理,希望能够给后来的Pythoner一些解决思路。
支付宝APP支付的流程
服务端拼接Order String, 对Order String进行SHA1withRSA签名并返回给APP,注意此时服务端并没有向支付宝发起请求。
APP调用支付宝的SDK,传入Order String进行支付。
支付成功之后,本地APP支付宝同步传回的result。服务端异步收到支付宝的消息。
Order String的拼接
将字典的key,value按照字母表的顺序排列在一起即可。比如原本是一个字典:
data = {
"out_trade_no": "201601020304",
"biz_content": {"product": "xxx", "title": "xxx"}
}
排序之后得到 biz_content={"product":"xxx","title":"xxx"}&out_trade_no=201601020304 。请注意这里的value并没有进行url encode。
以下的代码可以帮你生成Order String。biz_content是一个json的字符串,