按照惯例,首先通读一遍官网文档。
微信支付
前期准备
微信开放平台
注册账号,创建应用,开通微信支付,这些大家都会的。
微信商户平台
APP支付文档
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1 ,如果仅按照文档来,保证每次支付结果都是-1,对,只有-1,没有任何其他信息,不得不说,坑比。
APP支付时序图
大概了解下支付流程:
接入SDK
引入libs
SDK下载:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1 ,将libammsdk.jar放到libs文件夹下
配置debug签名
创建应用需要填写应用签名,配置在debug下直接用的正式的key,这样就不用每次打包才能调起微信客户端
WXPayEntryActivity
这个文档没有半点介绍,WXPayEntryActivity是支付结束的回调,和微信分享WXEntryActivity类似,必须放在包名.wxapi下,页面可以自己写。
AndroidManifest.xml中注册
网络权限注册不用说了。
支付接口调用
|
|
为了安全,APP端调起支付的参数需要商户后台系统提供接口返回,参数说明文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
问题
以为这样就可以调起微信客户端支付了,没有想到一直返回支付结果为-1,没有多余的信息提示,不亏是微信,Android代码就是简洁!我们看到文档返回-1的提示“可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。”,我反复检查签名、APPID均没有错误,后台也确定sign信息正确,哎,我表示很无奈,iOS也调用了,他们提示”支付场景非法“,原来是由于后台之前做web支付,trade_type没有改成APP,改了我这边就能正常调起了。
支付宝接入
前期准备
注册账号,创建应用,开通支付功能,这些也不说了。
接入文档
支付交互流程
接入SDK
SDK下载:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Q5gnm8&treeId=193&articleId=104509&docType=1 ,
将alipaySdk-xxxxxxxx.jar包放到libs文件夹下
AndroidManifest.xml
添加权限
添加声明
支付接口调用
支付行为需要在独立的非ui线程中执行,代码如下:
同样为了安全,这里orderInfo是后台接口返回,参数说明文档:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.DwA283&treeId=59&articleId=103663&docType=1
这样就over了,相比于微信支付,简单的不能再简单。
orderString内容
|
|
问题
1、系统繁忙,请稍后再试(ALI40247)
检查下 服务端使用 alipay.trade.app.pay 接口的私钥是不是和 APPID 应用下的公钥匹配,进行「秘钥匹配」工具:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1