APP内支付的接入总结(支付宝&APP STORE)
支付接入(JAVA端)
支付宝(新版)
· 安卓APP内的支付宝支付接入
支付宝的接入文档有新版和旧版之分,看的时候真的是杂乱无章,也可能是我找的地方不太对吧……测试了好几天终于找见了一个目前(2017.10)能通过的数据版本,记录一下。
第一步:接入支付宝SDK
下载地址:https://docs.open.alipay.com/54/104509
里面有SDK包和一个DEMO(DEMO有用)。
产品介绍:https://docs.open.alipay.com/204
里面是APP接入的大概步骤。
下面是自己画的一个大概流程:
1、APP客户端发送一个用户的支付请求给APP服务器,包括订单金额、订单商品等信息。
2、APP服务器生成一个本地的订单号out_trade_id返回给客户端,作透传参数,并且返回加签后参数。
3、APP客户端按照支付宝接入文档的格式传送数据给支付宝方,其中包括本地订单ID(透传值)和一个支付宝的异步回调地址notify_url,来调起支付宝网页版或APP版来完成输入账号和密码来完成支付。
4、用户支付成功后,支付宝会返回两个回调信息:一个是同步信息,立即返回,一个是异步信息,发送到异步回调地址notify_url中。详细说明:https://docs.open.alipay.com/204/105301/ 。本例中APP项目中无可用的HTTP回调地址,不能接收到异步确认回调,故需要后续单独请求支付宝方做支付确认。
5、APP客户端接收到支付宝方的同步返回后,将透传的本地订单号out_trade_id和支付宝方的订单号trade_id传回APP服务器。
6、APP服务器接收到两个订单号,再次发送到ALIPAY进行查询。https://docs.open.alipay.com/api 该地址下的alipay.trade.query
7、支付信息返回
8、验签并发放道具并且通知APP客户端充值成功。
坑:
1、加签:支付验证发送给ALIPAY的请求参数,在上图第二步中使用。按照接入文档上的参数请求了好久,还从网上查了各种参数结构都不行,最后用了DEMO中的请求参数格式,才请求成功。如下:
之前的所有请求数据中biz_content都是作为辅助数据出现的,与out_trade_id等数据是并列出现的,怎么都调不通,后来换到了基本所有数据都在biz_content中,然后并列的只有notify_url后就调通了……
加签使用的是ali-sdk自带的sdkExecute()方法,如上图。
2、验签:待写
App Store
没有透传,待续。。。