在你的项目中集成 Android pay支付
設置Google Pay API
- 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為您處理付款
- 銷售電影或游戲等數碼產品
配置你的項目
如果您還沒有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實例
在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.RSAjar -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的指紋進行匹配。
配置您的應用程序的生產
使用以下步驟來配置您的應用程序的生產:
?
總結
以上是生活随笔為你收集整理的在你的项目中集成 Android pay支付的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Prometheus监控(三)—— 钉钉
- 下一篇: 什么是GP、LP、VC、PE、FOF