Android接入Android-paySDK说明文档
一、产品介绍
1. 场景介绍
Sdk可以简化商家在 App 应用中集成微信和支付宝支付功能的步骤。 商家APP调用Sdk预支付接口,Sdk 再调用自己的的后台接口并返回微信和支付宝支付需要的参数。用户可以参照android-paysdk1.x-d9lab-DEMO实现Android应用集成微信/支付宝支付功能。
2. 产品展示
3. 资源下载
Sdk:https://kdfiles.d9lab.net/group1/M00/01/9B/cHxzJF-aueWAZSlYAADt3l_toZQ499.aar
Demo:https://kdfiles.d9lab.net/group1/M00/01/9B/cHxzJF-aukOAUKtcATk6T03zwWw626.rar
二、Android客户端集成
1. 准备工作
1.1 商家注册
使用微信/支付宝支付之前,需要先在微信/支付宝开放平台进行商家注册,获取你应用的AppId;
1.1.1 微信注册
(注意:使用微信支付时,需要对你在平台上注册的移动应用的包名、应用签名、AppId三者进行校验)
1.1.2 支付宝注册:
1.2 微信/支付宝支付SDK下载
1.2.1 微信支付
1.2.2 支付宝支付
具体微信/支付宝的支付Sdk接入流程请参考开放平台文档继承流程。
或参考android-paysdk1.x-D9lab-DEMO的实现。
2. 导入android-paysdk
以下内容可参考 android-paysdk1.x-d9lab-DEMO 的实现。
2.1 加入libs
将 android-paysdk1.x-d9lab.aar 包放在您的应用工程的 libs 目录下(图片中文件名仅做示例,请以实际 预支付Sdk 文件名为准):
2.2 引入libs
在主项目的 build.gradle 中,添加下面的内容,将 libs 目录作为依赖仓库:
allprojects {
repositories {
// 添加下面的内容
flatDir {
dirs 'libs'
}
// ... jcenter() 等其他仓库
}
}
2.3 添加依赖
在您 App Module 的 build.gradle 中,添加下面的内容,将预支付 Sdk 作为项目依赖:
dependencies {
...
//添加下面内容
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files("libs/android-paysdk1.3-d9lab.aar") //sdk aar包中是代码和资源文件
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.github.GrenderG:Toasty:1.4.2'
implementation 'com.orhanobut:logger:2.2.0'
implementation 'org.greenrobot:eventbus:3.2.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
implementation 'com.squareup.okio:okio:2.6.0' //这些都是使用sdk需要的依赖
}
至此,预支付 Sdk 开发资源导入完成。
3. 使用微信/支付宝支付
3.1 准备工作
PaySDK 对象为商户提供预支付功能,获取当前订单使用微信支付和支付宝支付需要的数据。
使用 PaySDK对象调用预支付并拉起微信/支付宝支付,代码示例:
3.1.1 向SDK注册应用信息
//这一步必须要先做
String platformId = " "; //填写你在本平台平台上面注册的platformId
Boolean isAliPayCert = true; //支付宝是否使用证书支付方式,默认值为true
PaySDK.getInstance().init(platformId, isAliPayCert); //向SDK注册信息
3.1.2 传入订单信息
/**
* 传入自己的订单参数
* 这些是必传参数
*/
String orderNum = "d9lab12345678910"; //订单编号
String productName = "奶茶"; //商品名称(多个商品可以拼接)
String amount = "0.01"; //商品总价(保留两位小数)
String sign = "d9lab"; //订单签名
String nonceStr = "j48g39chb7gnh883znu"; //随机字符串
3.1.3 创建微信预支付模型
另外创建一个名为WxPrePayModel的类,并在该类中添加代码如下:
import com.google.gson.annotations.SerializedName;
public class WxPrePayModel {
@SerializedName("package")
private String mPackage; // "Sign=WXPay"
private String appid; // 微信或支付宝平台注册的AppId
private String sign; // 订单签名
private String partnerid; // 合伙人ID
private String prepayid; // 预支付ID
private String noncestr; // 随机字符串
private String timestamp; // 时间戳
}
该Model将被用于接收Sdk返回的参数,并可以直接用于向微信后台发起正式支付请求。
3.2 开始支付
3.2.1 使用Sdk进行微信支付
PaySDK.getInstance().wxPrePay(orderNum, productName, amount, sign, nonceStr, new IWxPayCallback() {
@Override
public void onWxPrePaySuccess(WxPrePayModel wxPrePayModel) {
startWechatPay(wxPrePayModel);
//wxPrePayModel为微信支付所需数据 startWechatPay()可以换成自己用于发起正式微信支付的方法
}
@Override
public void onWxPrePayFailure(String message) { }
@Override
public void onWxPrePayError(int code, String message) { }
@Override
public void onWxPrePayComplete() { }
});
3.2.2 使用Sdk进行支付宝支付
PaySDK.getInstance().aliPrePay(orderNum, productName, amount, sign, nonceStr, new IAliPayCallback() {
@Override
public void onAliPrePaySuccess(String aliPayInfo) {
startAliPay(aliPayInfo);
//aliPayInfo为支付宝支付所需数据 startAliPay()换成自己用于发起正式支付宝支付的方法
}
@Override
public void onAliPrePayFailure(String message) { }
@Override
public void onAliPrePayError(int code, String message) { }
@Override
public void onAliPrePayComplete() { }
});
三、运行android-paysdk1.x-d9lab-DEMO
1. 设置platformId
在app包下面的MainActivity中修改自己注册的platformId
2. 修改包名
将app中AndroidManifest的package和build.gradle(app)中的applicationId改为你在微信开放平台注册的应用包名
3. 配置keystore
在app的build.gradle的android { } 中配置你的keystore,用于生成你在微信开放平台注册的应用签名
四、参数说明
1. 请求参数
参数类型 | 参数名称 | 参数说明 |
---|---|---|
String | platformId | 本平台上面注册的platformId |
Boolean | isAliPayCert | 支付宝是否使用根证书 |
String | orderNum | 订单编号 |
String | productName | 商品名称(多个商品可以拼接) |
String | amount | 商品总价(保留两位小数) |
String | sign | 订单签名 |
String | noneStr | 随机字符串 |
2. 响应参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
响应码 | code | 是 | int | 200 | 成功时为200 |
成功标志位 | success | 是 | Boolean | true | 值为true时说明获取成功,false为失败 |
返回消息提示 | message | 是 | String | 获取成功 | 提示成功或失败的相关信息 |
3. 返回值
以下字段在使用返回信息success结果为true的时候有返回值
字段名 | 变量名 | 必填 | 类型 | 示例值 |
---|---|---|---|---|
包名 | package | 是 | String | Sign=WXPay |
应用ID | appid | 是 | String | wx7c31422179662e6c |
签名 | sign | 是 | String | 99FDDF3F1FFAC08493A4F58FEE671EB6 |
partnerid | partnerid | 是 | String | 1557376081 |
预支付Id | perpayid | 是 | String | wx3015221972709665dc30ac24e485f00000 |
随机字符串 | noncestr | 是 | String | 1601450539756 |
时间戳 | timestamp | 是 | String | 1601450539 |