Android 第三方支付

第三方支付现在已经基本普及,作为一个程序员如果连这个都需要介绍的话那就有点不像话了。

流程图


数据流程:
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、支付宝公钥(即服务器公钥)、商户公钥、商户私钥。


        示例代码:
// 合作身份者id,以2088开头的16位纯数字
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";
3.运行项目
运行后会提示要求安装支付宝安全支付服务,点击安装。付款测试。

出现这个图片就代表密匙配置有误
Demo 结构说明
类名 说明 
AlixDemo  主 Activity
Base64 Base64 编码类,签名及验签,必须
MobileSecurePayer 封装了对安全支付的调用,可参考性较强
MobileSecurePayHelper 实现安全支付插件的检测,更新下载,安装,可参考性较强 
Networkmanager 网络连接管理 
PartnerConfig  商户账户信息配置 
ResultChecker AlixPay 返回结果的解析处理,可参考性较强 
Rsa  RSA 签名验签类,必须

安全支付集成
1.添加jar文件
添加 demo 中的  alipay_msp.jar  包添加工程中
2.初始化安全服务
在调用安全支付进行支付前,需要先初始化安全支付服务。
3.订单数据生成
在调用安全支付时,需要提交订单信息 orderInfo 其中参数以“key=value”形式呈现,参数之间以“&”分割,所有参数不可缺。

partner="2088002007260245"&seller="2088002007260245"&out_trade_no= "500000000006548"&subject=" 商 品 名 称 "&body=" 这 是 商 品 描 述 "&total_fee="30"&notify_url=" http://notify.java.jpxx.org/index.jsp "&sign="kU2Fa3x6V985g8ayTozI1eJ5fHtm8%2FJGeJQf9in%2BcVmRJjHaExbirn GGKJ%2F7B63drqc4Kjlk%2FSg6vtSIkOtdvVBrRDpYaKxXVqkJTzRYgUwrrpMudbIj 9aMS2O3dHG0GPyL4Zb6jKDYXHabGG0aBJY3QA7JuTJ23t6SqV%2B5f1xg%3D"&sign type="RSA"

        其中 sign 值的生成,需要特别注意的是:对数据签名后得到的 sign 值必须进行 URLEncode,之后才可作为参数。
4.调用安全支付
准备好参数后,即可调用安全支付进入支付流程并获得调用结果,代码如下:
        result = mAlixPay.pay(orderInfo);
        AliXPay 函数具体说明请见 AlixPay 方法描述。
5.支付结果获取和处理
 调用安全支付后,将通过两种途径获得支付结果:
1)、 AliXpay.pay()方法的返回。该方法将返回表示支付结果的字符串
2)、支付宝服务器通知。商户需要提供一个 http 协议的接口,包含在参数里传递给安全支付,即 notify_url。支付宝服务器在支付完成后,会用 POST 方法调用 notufy_url,以 xml 为数据格式传输支付结果。
四。应用的发布
目前,我们为第三方应用客户端提供了两种集成安全支付服务的方式。第一种是运行时安装,即将安全支付服务安装包 apk 与第三方应用客户端整合在一起,在恰当的时机,由第三方应用客户端释放并安装安全支付服务安装包 apk。另一种则称为动态下载安装,在此种情况下,安全支付服务安装包 apk 是预先存放在约定的远程服务器中,第三方应用客户端可以从此处下载 apk 并进行安装。
        为了提升用户体验,避免捆绑安装旧版本的安全支付服务之后,接着又需要重新升级并安装成最新版本,我们目前推荐结合使用以上两种集成方式。在最新的 demo 中,会首先连接支付宝服务器,检测并判断捆绑在第三方客户端中的 alipay_plugin.apk 是否为最新版本,如果是,则直接安装。如果捆绑在第三方客户端中的 alipay_plugin.apk 不是最新版本,则从服务器中下载最新版本的安装包,然后进行安装。
错误代码列表


4、 错误代码列表
错误编号 说明 
9000  操作成功
4000
系统异常
4001
数据格式不正确
4003
该用户绑定的支付宝账户被冻结或不允许支付
4004 该用户已解除绑定
4005
订单支付失败
4006
AlixPay 返回结果的解析处理,可参考性较强 
4010
重新绑定账户
6000
支付服务正在进行升级操作
6001
用户中途取消支付操作
6002
网络连接异常

4、 错误代码列表
错误编号 说明 
9000  操作成功
4000
系统异常
4001
数据格式不正确
4003
该用户绑定的支付宝账户被冻结或不允许支付
4004 该用户已解除绑定
4005
订单支付失败
4006
AlixPay 返回结果的解析处理,可参考性较强 
4010
重新绑定账户
6000
支付服务正在进行升级操作
6001
用户中途取消支付操作
6002
网络连接异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值