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

支付取消