1、该文章描述了流行的第三方支付整合的方法和文档查看地址信息等。
参考资料第三方api平台
2.总体技术要求
2.1.设计概括
针对不同的支付类型调用设置不同的jar包,方便根据不同的支付方式,支付完成上报做为jar包,根据需求集成相应的jar包。因为支付sdk需要给第三方使用,所有的支付平台只要的sign参数都需要服务器直接加密完成,将结果返回给客户端,去调起api。
支付完成上报接口
上报参数说明:
参数名称 | 必选 | 类型 | 描述 |
order_id | 是 | String | 订单ID |
status | 是 | int | 支付结果,1=成功,0=失败 |
product_id | 是 | String | 集成支付的app产品 |
pay_type | 是 | int | 支付类型,支付宝=1,微信=2,3=银联,4=和支付 |
微信支付
参考资料 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5
2.1.1.1.集成微信支付需要
参数名称 | 必选 | 类型 | 描述 |
appid | 是 | String | 公众账号ID |
partnerid | 是 | String | 支付结果,1=成功,0=失败 |
prepayid | 是 | String | 预支付交易会话ID |
package | 是 | String | 扩展字段写固定值Sign=WXPay |
noncestr | 是 | String | 随机字符串 |
timestamp | 是 | String | 时间戳 |
sign | 是 | String | 签名 |
参数组装格式demo
{
“appid”: “wx3fe5995cacb9b63e”,
“partnerid”: “1288820601”,
“prepayid”: “wx20160106103528a4be380d440881448989”,
“noncestr”: “4c6be569d5c342058ab1496f951b279e”,
“timestamp”: “1452047729”,
“package”: “Sign=WXPay”,
“sign”: “8F40D811230E569C979109B91552096C”
}
2.1.1.2.支付结果回调
参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:
publicvoidonResp(BaseRespresp){
if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
}
}
由于回调需要WXPayEntryActivity 而且放在特定的包下面,jar无法帮其完成,需要集成sdk的app自己处理 WXPayEntryActivity的回调,并配置
返回结果回调中errCode值列表:
返回码 | 必选 |
0 | 支付成功 |
-1 | 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 |
-2 | 无需处理。发生场景:用户不支付了,点击取消,返回APP。 |
支付宝支付
资料参考
https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.8MCe0H&treeId=59&articleId=103662&docType=1
2.1.1.3.支付宝支付
调用支付宝需要的参数结构
partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&sign="lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D"&sign_type="RSA"
2.1.1.4.支付宝结果回调
返回值: 本方法调用的返回结果,参数说明见“同步通知参数说明”。字符串格式,形式一般如下:
resultStatus={9000};memo={};result={partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&success="true"&sign_type="RSA"&sign="hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="}
客户端返回码
返回码 | 含义 |
9000 | 订单支付成功 |
8000 | 正在处理中 |
4000 | 订单支付失败 |
6001 | 用户中途取消 |
6002 | 网络连接出错 |
银联支付
2.1.1.5.银联调用app所需参数
参数名称 | 必选 | 类型 | 描述 |
orderInfo | 是 | String | 订单信息为交易流水号,即TN,为商户后台从银联后台获取。 |
mode | 是 | String | 银联后台环境标识,“00”将在银联正式环境发起交易,“01”将在银联测试环境发起交易 |
activity 用于启动支付控件的活动对象
2.1.1.6.银联控件返回参数
返回码 | 含义 |
success | 支付成功 |
fail | 支付失败 |
cancel | 支付取消 |