在你的项目中集成 Android pay支付

设置Google Pay API

开始之前

在开始之前,请查看以下先决条件:

如果您在应用程序中实施购买按钮以满足以下任一情况:
  • 让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的<application>标记中:

 
   
  <application>
  ...
 
<!-- Enables the Google Pay API -->
 
<meta-data
   
android:name="com.google.android.gms.wallet.api.enabled"
   
android:value="true" />
</application>
 


以下步骤显示了如何将您的应用程序与Google Pay API集成。

第1步:创建PaymentsClient实例

ActivityonCreate方法中创建一个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对象中包含任何提供者特定的参数。 您将收到一个付款标记,可以直接向您的处理器收费。

    以下处理器目前支持此方法:

  • PAYMENT_METHOD_TOKENIZATION_TYPE_DIRECT :如果您不使用支持的支付提供程序直接请求和处理支付凭证,
  • 请使用此标记化类型。PaymentMethodTokenizationParameters对象中包含publicKey参数,然后按照付款数据加密中
  • 的说明解密安全支付卡行业数据安全标准(PCI DSS)兼容服务器环境中的凭证。

第4步:创建OnClickListener对象

Checkout操作定义一个OnClickListener ,它将生成一个PaymentDataRequest对象,如下例所示。

 
  
findViewByIdR.id.buy_button
   
.setOnClickListener
       
新的View.OnClickListener(){
         
@覆盖
         
public void onClickView view){
           
PaymentDataRequest request = createPaymentDataRequest();
           
ifrequest!= 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步:请参阅您的付款处理器

有关如何完成交易的更多信息,请参阅付款处理器的文档。

测试你的应用程序

在本节中,您将学习如何测试您的应用程序,以确保它已准备好进行生产。

关于测试环境

我们的测试环境不会在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

 
证书指纹:
   
MD57741C5C1DD3F6C0988FA333D835FD39E
   
SHA1EC4AEEDCF402EA870AC509C0580691E7EA41099D
   
签名算法名称:SHA1withRSA

将SHA1与提供给Google Play的指纹进行匹配。

配置您的应用程序的生产

使用以下步骤来配置您的应用程序的生产:

  1. 确保您的API是使用释放密钥签名的, 而不是您在测试环境中使用的调试密钥 。 调试密钥在生产环境中不起作用。
  2. WalletOptions环境参数设置为WalletConstants.ENVIRONMENT_PRODUCTION 。

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值