第三方支付现在已经基本普及,作为一个程序员如果连这个都需要介绍的话那就有点不像话了。
流程图
数据流程:
1.购买
2.生成订单
3.订单签名
4.调用安全支付服务
5.回调支付结果
6.商户验签支付结果
7.结束
接入流程
一.接入前的准备
1,商户前期准备:签约首先,商户需要在 https://ms.alipay.com 进行注册,并签约安全支付服务。签约成功后可获取支付宝分配的合作商户 ID(PartnerID),账户 ID(SellerID)
2.密匙配置:签约成功后,商户可登陆 https://ms.alipay.com 获取商户账号对应的支付宝公钥,具体获取步骤请见 “RSA 密钥详解”。接着,商户生成商户公钥和商户私钥(具体生成步骤请见 “ RSA 密钥详解”),并登陆https://ms.alipay.com,上传商户公钥(具体上传步骤请见 “ RSA 密钥详解”)。至此,接入前期准备工作完成,下一节将使用 demo 测试准备工作是否正确。
二。Demo
注意:不要在模拟器下测试Demo,否则可能导致付款账户被锁定
1。Demo 配置运行
1.导入
2.打开PartnerConfig.java”文件,按照注释添加商户账号信息,具体包括:合作商户 ID、账户 ID、支付宝公钥(即服务器公钥)、商户公钥、商户私钥。
public static final String PARTNER = "2088112738535023";
// 收款支付宝账号
public static final String SELLER = " bangninjia@126.com";
// 商户私钥,自助生成
public static final String RSA_PRIVATE = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAM99AHDnDbybtO/z/XqieV1Y1jHH3Y5m9XCGNXPMBSkIU5nzc/jLmrl034GnlaoB5q3OH2Ze99Tet816OmWfDqmCoZZIZ8g3cw8ntgM92lxwAd97Lh76NtwDQ5KN1slBw2ZUkszyvNq/VGyjqiE/270JwQWslo9qMHaPldpL/Z2tAgMBAAECgYBAYujtIDYaDjOCtrM1CBAjUHr/bacqFncZmPwjV+9OAWB4CJ03Wm9EF6l4AXonDHn5+1mxGc1MSGS/JavTdx1EG0uPyDc16BpSWbvlmKsPQgUKyAs6Fugyl11PowIDvf29geukQcKLVwhgLYHPd5hH1GO1UAF+cj/IsjIWFaGhoQJBAPtIjh8p3DBvAbgvh5fBEwjX0b6q95jkbbfdQZS4YgWFdoaP70Zq3KYw3dHVGgLJxWGxCSW2wEwoHuLzZjNwyeUCQQDTYgGOJYM0PcMkJVnEhy4S2/+mQb7WBU+mBWooUK61lUpajZuBj8xBZggrHkPU4iQB/wWOVCc8XdPaq9ctw6gpAkBH6Sya6HzV836XeiqgmCVdW33vxbeTrpNjkdMJv3Z1xAr2WUyNZ1l7yfJA8W4/LATrfyFyBImlgbnNEwDFadqtAkAr6EakbRxUxKN9JZkA3odueW4f7bYjJJVHygYj+6Zep3T7XEC559Gon/YAZtf2J0cNdxiDWO2Rd3fjCyC2K9cJAkBEQP43KekFeDdADP0QDNhG/bWfqWHfVim46EOxgJr8yw8Kr9SfinQfQZvPKPEFBvorK90/jtsukmwvEaaK+WZj";
// 支付宝公钥
public static final String RSA_PUBLIC = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB";
类名 | 说明 |
AlixDemo | 主 Activity |
Base64 | Base64 编码类,签名及验签,必须 |
MobileSecurePayer | 封装了对安全支付的调用,可参考性较强 |
MobileSecurePayHelper | 实现安全支付插件的检测,更新下载,安装,可参考性较强 |
Networkmanager | 网络连接管理 |
PartnerConfig | 商户账户信息配置 |
ResultChecker | AlixPay 返回结果的解析处理,可参考性较强 |
Rsa | RSA 签名验签类,必须 |
result = mAlixPay.pay(orderInfo);
AliXPay 函数具体说明请见 AlixPay 方法描述。
1)、 AliXpay.pay()方法的返回。该方法将返回表示支付结果的字符串
2)、支付宝服务器通知。商户需要提供一个 http 协议的接口,包含在参数里传递给安全支付,即 notify_url。支付宝服务器在支付完成后,会用 POST 方法调用 notufy_url,以 xml 为数据格式传输支付结果。
为了提升用户体验,避免捆绑安装旧版本的安全支付服务之后,接着又需要重新升级并安装成最新版本,我们目前推荐结合使用以上两种集成方式。在最新的 demo 中,会首先连接支付宝服务器,检测并判断捆绑在第三方客户端中的 alipay_plugin.apk 是否为最新版本,如果是,则直接安装。如果捆绑在第三方客户端中的 alipay_plugin.apk 不是最新版本,则从服务器中下载最新版本的安装包,然后进行安装。
4、 错误代码列表
错误编号 | 说明 |
9000 | 操作成功 |
4000
|
系统异常
|
4001
|
数据格式不正确
|
4003
|
该用户绑定的支付宝账户被冻结或不允许支付
|
4004 | 该用户已解除绑定 |
4005
|
订单支付失败
|
4006
|
AlixPay 返回结果的解析处理,可参考性较强
|
4010
|
重新绑定账户
|
6000
|
支付服务正在进行升级操作
|
6001
|
用户中途取消支付操作
|
6002
|
网络连接异常
|
错误编号 | 说明 |
9000 | 操作成功 |
4000
|
系统异常
|
4001
|
数据格式不正确
|
4003
|
该用户绑定的支付宝账户被冻结或不允许支付
|
4004 | 该用户已解除绑定 |
4005
|
订单支付失败
|
4006
|
AlixPay 返回结果的解析处理,可参考性较强
|
4010
|
重新绑定账户
|
6000
|
支付服务正在进行升级操作
|
6001
|
用户中途取消支付操作
|
6002
|
网络连接异常
|