Android Google Pay
Google Pay 接入前提
- 安装 18.1.3 或更高版本的 Google Play 服务
- 安装 Google Pay 应用并添加付款方式
- 加入Google Pay 测试卡套件群组 以添加测试卡
- 遵守 Google Pay API 使用限制政策 和 Google Play 开发者政策
接入流程
- 引入
Google Pay
SDK-v1.0.0 - 创建
GooglePayLauncher
实例,添加Google Pay
支付回调 - 初始化
Google Pay
配置信息,确定是否支持Google Pay
付款 - 调用下单接口,
productType
请传CARD
- 从下单接口响应中获取
transactionId
,调用GooglePayLauncher
的pay
方法
引入SDK
在 app/build.gradle 文件的 dependencies 块中添加
groovy
dependencies {
implementation files('libs/onerway-core-v1.0.2.aar')
implementation files('libs/onerway-googlepay-v1.0.0.aar')
implementation 'com.google.android.gms:play-services-wallet:19.3.0'
}
1
2
3
4
5
2
3
4
5
初始化SDK
1. 创建 GooglePayLauncher
实例
该操作必须要在 Activity#onCreate()
内完成
java
Environment environment = Environment.SANDBOX; // SANDBOX、PRODUCTION
launcher = new GooglePayLauncher(this, environment, new PaymentHandler() {
@Override
public void onCompleted(PaymentResult result) {
String status = result.getStatus();
switch (status) {
case PaymentResult.PENDING:
Toast.makeText(GooglePayActivity.this, "处理中!", Toast.LENGTH_LONG).show();
break;
case PaymentResult.SUCCEEDED:
Toast.makeText(GooglePayActivity.this, "支付完成!", Toast.LENGTH_LONG).show();
break;
case PaymentResult.FAILED:
Toast.makeText(GooglePayActivity.this, "支付失败!" + result.getMessage(), Toast.LENGTH_LONG).show();
break;
case PaymentResult.CANCEL:
Toast.makeText(GooglePayActivity.this, "支付取消!", Toast.LENGTH_LONG).show();
break;
}
}
@Override
public void onError(PacypayException e) {
Toast.makeText(GooglePayActivity.this, "支付失败: " + e.getCode() + "=" + e.getMessage(), Toast.LENGTH_LONG).show();
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2. 创建 Google Pay
按钮
2.1 内置支付按钮 推荐
引入 GooglePay 按钮
xml
<com.onerway.checkout.googlepay.GooglePayButton
android:id="@+id/btn_google_pay"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
1
2
3
4
2
3
4
创建配置信息,具体参数可参考 GooglePay文档
java
String gatewayMerchantId = "800096"; // 生产环境请替换成商户自己的 gatewayMerchantId
// 初始化配置信息
GooglePayConfig config = new GooglePayConfig.Builder()
.setGooglePayEnvironment(GooglePayEnvironment.TEST)
.build(gatewayMerchantId);
GooglePayButton btn = findViewById(R.id.btn_google_pay);
btn.initialize(config, new GooglePayReadyCallback() {
@Override
public void onReady(boolean isAvailable) {
// 判断设备是否支持 GooglePay
if (!isAvailable) {
Toast.makeText(GooglePayActivity.this, "该设备暂不支持 GooglePay !", Toast.LENGTH_LONG).show();
}
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.2 自定义按钮支付
创建配置信息,具体参数可参考 GooglePay文档
java
String gatewayMerchantId = "800096"; // 生产环境请替换成商户自己的 gatewayMerchantId
// 初始化配置信息
GooglePayConfig config = new GooglePayConfig.Builder()
.setGooglePayEnvironment(GooglePayEnvironment.TEST)
.build(gatewayMerchantId);
launcher.initialize(config, new GooglePayReadyCallback() {
@Override
public void onReady(boolean isAvailable) {
if (!isAvailable) {
Toast.makeText(GooglePayActivity.this, "该设备暂不支持 GooglePay !", Toast.LENGTH_LONG).show();
}
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
注意
自定按钮样式请遵循 Google Pay品牌指南
3. 调用下单接口
4. 根据下单接口响应中的 transactionId
调用 GooglePay
支付
java
// 在(自定义)按钮的点击事件中调用 launcher 的 payment 方法
String transactionId = "下单接口返回的 transactionId";
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launcher.payment(transactionId); // 启动 Google Pay
}
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8