- Contents
- Before you get started开始之前
- Configure your project配置你的项目
- Add dependencies添加依赖关系
- Modify your Manifest修改你的清单
开始之前
在开始之前,请查看以下先决条件:
- 您的设备必须安装Google Play服务版本11.4.x或更新版本
- 安装并向Google Pay添加付款方式
- 向Google添加付款方式
- 坚持我们的Google Pay API可接受使用政策和Google Play开发者政策
如果您在应用程序中实施购买按钮以满足以下任一情况:
- 让Google为您处理付款
- 销售电影或游戏等数码产品
然后,使用Google Play应用内结算 。
如果您还没有Android Studio,请下载并安装Android Studio 。
添加依赖关系
Google Pay API是Google Play服务的一部分,因此您只需导入Google Play服务库即可获取所需的一切。 或者,您可以选择要自己编译的API。
要导入整个Google Play服务库,请参阅设置Google Play服务 。
如果您更愿意选择性地仅编译所需的API,请打开应用程序模块中的build.gradle
文件,并将以下内容添加到依赖性块中:
dependencies {
compile 'com.google.android.gms:play-services-wallet:11.4.0'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:appcompat-v7:24.1.1'
}
有关最新的Google Pay API版本信息,请参阅设置Google Play服务 。 有关支持库的最新信息,请参阅支持库设置 。
修改你的清单
要在您的应用中启用Google Pay,您需要将以下Google Pay API元数据添加到AndroidManifest.xml
的标记中:
...
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
以下步骤显示了如何将您的应用程序与Google Pay API集成。
第1步:创建PaymentsClient实例
在Activity
的onCreate
方法中创建一个PaymentsClient
的实例。 这允许与付款API交互。
private PaymentsClient mPaymentsClient;
@Override
public void onCreate() {
super.onCreate();
mPaymentsClient = Wallet.getPaymentsClient( this, new Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST) .build());
}
第2步:调用isReadyToPay API
实现isReadyToPay
方法,如以下示例所示:
private void isReadyToPay() {
IsReadyToPayRequest request = IsReadyToPayRequest.newBuilder()
.addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD) .addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD) .build();
Task<Boolean> task = mPaymentsClient.isReadyToPay(request);
task.addOnCompleteListener( new OnCompleteListener<Boolean>() {
public void onComplete(Task<Boolean> task) {
try {
boolean result = task.getResult(ApiException.class);
if (result == true) {
// Show Google as payment option.
} else {
// Hide Google as payment option.
}
} catch (ApiException exception) {
}
}
});
}
第3步:创建PaymentDataRequest对象
创建createPaymentDataRequest
方法。 根据您使用的付款处理器,使用正确的参数启动PaymentMethodTokenizationParameters
对象。 另外,请确保使用addAllowedPaymentMethods
指定允许的付款方式。
private PaymentDataRequest createPaymentDataRequest() {
PaymentDataRequest.Builder request = PaymentDataRequest.newBuilder()
.setTransactionInfo( TransactionInfo.newBuilder()
.setTotalPriceStatus(WalletConstants.TOTAL_PRICE_STATUS_FINAL)
.setTotalPrice("10.00")
.setCurrencyCode("USD") .build())
.addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD)
.addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD)
.setCardRequirements( CardRequirements.newBuilder()
.addAllowedCardNetworks( Arrays.asList(
WalletConstants.CARD_NETWORK_AMEX,
WalletConstants.CARD_NETWORK_DISCOVER,
WalletConstants.CARD_NETWORK_VISA,
WalletConstants.CARD_NETWORK_MASTERCARD)
) .build());
PaymentMethodTokenizationParameters params = PaymentMethodTokenizationParameters.newBuilder()
.setPaymentMethodTokenizationType(
WalletConstants.PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY)
.addParameter("gateway", "yourGateway")
.addParameter("gatewayMerchantId", "yourMerchantIdGivenFromYourGateway")
.build();
request.setPaymentMethodTokenizationParameters(params);
return request.build();
}
标记类型可以是以下之一:
- PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY :如果您使用支持Google Pay API的支付提供商,请使用此标记化类型。在
PaymentMethodTokenizationParameters
对象中包含任何提供者特定的参数。 您将收到一个付款标记,可以直接向您的处理器收费。以下处理器目前支持此方法:
- Adyen
- 布伦特里
- EBANX
- PaySafe
- 条纹
- Vantiv
- WorldPay的
- PAYMENT_METHOD_TOKENIZATION_TYPE_DIRECT :如果您不使用支持的支付提供程序直接请求和处理支付凭证,
- 请使用此标记化类型。在
PaymentMethodTokenizationParameters
对象中包含publicKey
参数,然后按照付款数据加密中
- 的说明解密安全支付卡行业数据安全标准(PCI DSS)兼容服务器环境中的凭证。
第4步:创建OnClickListener对象
为Checkout
操作定义一个OnClickListener
,它将生成一个PaymentDataRequest
对象,如下例所示。
findViewById(R.id.buy_button)
.setOnClickListener(
新的View.OnClickListener(){
@覆盖
public void onClick(View view){
PaymentDataRequest request = createPaymentDataRequest();
if(request!= null){
AutoResolveHelper.resolveTask(
mPaymentsClient.loadPaymentData(请求),
这个,
// LOAD_PAYMENT_DATA_REQUEST_CODE是一个常量值
//你定义
LOAD_PAYMENT_DATA_REQUEST_CODE );
}
}
});
PaymentDataRequest
对象是表示支付数据请求的PaymentDataRequest
,它提供必要的信息来支持支付。 使用AutoResolveHelper
类自动解决任务,然后在Activity
类的onActivityResult()
方法中处理结果。
第5步:处理PaymentData响应对象
当您调用loadPaymentData
, PaymentData
对象返回到onActivityResult
。 解析PaymentData
对象以获取付款提供商可以收取的付款凭证。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case LOAD_PAYMENT_DATA_REQUEST_CODE:
switch (resultCode) {
case Activity.RESULT_OK:
PaymentData paymentData = PaymentData.getFromIntent(data);
String token = paymentData.getPaymentMethodToken().getToken();
break;
case Activity.RESULT_CANCELED:
break;
case AutoResolveHelper.RESULT_ERROR:
Status status = AutoResolveHelper.getStatusFromIntent(data);
// Log the status for debugging.
// Generally, there is no need to show an error to
// the user as the Google Pay API will do that. break;
default:
// Do nothing.
}
break;
default:
// Do nothing.
}
}
第6步:请参阅您的付款处理器
有关如何完成交易的更多信息,请参阅付款处理器的文档。
- Adyen
- 布伦特里
- PaySafe
- 条纹
- Vantiv
- WorldPay的
测试你的应用程序
在本节中,您将学习如何测试您的应用程序,以确保它已准备好进行生产。
关于测试环境
我们的测试环境不会在PaymentsData
响应中返回实时计费令牌,但测试环境允许我们测试您的预购工作流程。 在您的应用程序有生产访问权限之前,您将在付款选择器上看到Unrecognized App
错误。
WalletOptions
environment
参数的值指示服务器是在生产环境还是在测试环境中运行。environment
价值可以是下列之一:
WalletConstants.ENVIRONMENT_PRODUCTION
WalletConstants.ENVIRONMENT_TEST
要进行测试和开发,请使用WalletConstants.ENVIRONMENT_TEST
。
回顾我们的品牌要求
为了确保您遵守我们的准则和标准,请确保您的应用程序符合我们的品牌准则 。
部署您的应用程序
在本节中,您将学习如何准备您的应用程序进行生产并开始接受实际支付。
访问生产环境
准备好部署Google Pay API集成后,请注册以获取访问权限并使用生产凭据进行测试。
使用释放键为您的应用签名
当您的应用程序指向Google Pay API生产环境时,如果用于签名Android应用程序的签名密钥指纹与注册到Google Play的版本密钥指纹不匹配,则Google Pay API将返回ERROR_CODE_MERCHANT_ACCOUNT_ERROR (405)
。 这通常发生在开发中的应用程序从测试环境切换到生产环境之后。
要解决此问题,请确保提供给Google的指纹与用于签署Android应用的密钥的指纹相匹配。 一旦Android应用程序被签名,您可以使用以下命令验证用于签名的密钥的指纹:
//首先从APK中提取META-INF / CERT.RSA
jar -xvf
META-INF / CERT.RSA
充气:META-INF / CERT.RSA
keytool -printcert -file META-INF / CERT.RSA
证书指纹:
MD5:77:41:C5:C1:DD:3F:6C:09:88:FA:33:3D:83:5F:D3:9E
SHA1:EC:4A:EE:DC:F4:02:EA:87:0A:C5:09:C0:58:06:91:E7:EA:41:09:9D
签名算法名称:SHA1withRSA
将SHA1与提供给Google Play的指纹进行匹配。
使用以下步骤来配置您的应用程序的生产:
- 确保您的API是使用释放密钥签名的, 而不是您在测试环境中使用的调试密钥 。 调试密钥在生产环境中不起作用。
- 将
WalletOptions
环境参数设置为WalletConstants.ENVIRONMENT_PRODUCTION
。