日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發(fā)布時(shí)間:2023/12/14 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在你的项目中集成 Android pay支付 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

設(shè)置Google Pay API

  • Contents
  • Before you get started開始之前?
  • Configure your project配置你的項(xiàng)目?
    • Add dependencies添加依賴關(guān)系?
    • Modify your Manifest修改你的清單?

開始之前

在開始之前,請(qǐng)查看以下先決條件:

  • 您的設(shè)備必須安裝Google Play服務(wù)版本11.4.x或更新版本
  • 安裝并向Google Pay添加付款方式
  • 向Google添加付款方式
  • 堅(jiān)持我們的Google Pay API可接受使用政策和Google Play開發(fā)者政策
如果您在應(yīng)用程序中實(shí)施購(gòu)買按鈕以滿足以下任一情況:
  • 讓Google為您處理付款
  • 銷售電影或游戲等數(shù)碼產(chǎn)品
然后,使用Google Play應(yīng)用內(nèi)結(jié)算?。

配置你的項(xiàng)目

如果您還沒有Android Studio,請(qǐng)下載并安裝Android Studio?。

添加依賴關(guān)系

Google Pay API是Google Play服務(wù)的一部分,因此您只需導(dǎo)入Google Play服務(wù)庫(kù)即可獲取所需的一切。?或者,您可以選擇要自己編譯的API。

要導(dǎo)入整個(gè)Google Play服務(wù)庫(kù),請(qǐng)參閱設(shè)置Google Play服務(wù)?。

如果您更愿意選擇性地僅編譯所需的API,請(qǐng)打開應(yīng)用程序模塊中的build.gradle文件,并將以下內(nèi)容添加到依賴性塊中:

?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'?}?

有關(guān)最新的Google Pay API版本信息,請(qǐng)參閱設(shè)置Google Play服務(wù)?。?有關(guān)支持庫(kù)的最新信息,請(qǐng)參閱支持庫(kù)設(shè)置?。

修改你的清單

要在您的應(yīng)用中啟用Google Pay,您需要將以下Google Pay API元數(shù)據(jù)添加到AndroidManifest.xml的<application>標(biāo)記中:

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


以下步驟顯示了如何將您的應(yīng)用程序與Google Pay API集成。

第1步:創(chuàng)建PaymentsClient實(shí)例

在Activity的onCreate方法中創(chuàng)建一個(gè)PaymentsClient的實(shí)例。?這允許與付款A(yù)PI交互。

?private PaymentsClient mPaymentsClient;?? ? ? ?@Override?? ? ? public void onCreate() { ??super.onCreate();? mPaymentsClient = Wallet.getPaymentsClient( this, new Wallet.WalletOptions.Builder() .setEnvironment(WalletConstants.ENVIRONMENT_TEST) .build());?}

第2步:調(diào)用isReadyToPay API

實(shí)現(xiàn)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步:創(chuàng)建PaymentDataRequest對(duì)象

創(chuàng)建createPaymentDataRequest方法。?根據(jù)您使用的付款處理器,使用正確的參數(shù)啟動(dòng)PaymentMethodTokenizationParameters對(duì)象。?另外,請(qǐng)確保使用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();?}

標(biāo)記類型可以是以下之一:

  • PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY?:如果您使用支持Google Pay API的支付提供商,請(qǐng)使用此標(biāo)記化類型。在PaymentMethodTokenizationParameters對(duì)象中包含任何提供者特定的參數(shù)。?您將收到一個(gè)付款標(biāo)記,可以直接向您的處理器收費(fèi)。

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

    • Adyen
    • 布倫特里
    • EBANX
    • PaySafe
    • 條紋
    • Vantiv
    • WorldPay的
  • PAYMENT_METHOD_TOKENIZATION_TYPE_DIRECT?:如果您不使用支持的支付提供程序直接請(qǐng)求和處理支付憑證,
  • 請(qǐng)使用此標(biāo)記化類型。在PaymentMethodTokenizationParameters對(duì)象中包含publicKey參數(shù),然后按照付款數(shù)據(jù)加密中
  • 的說明解密安全支付卡行業(yè)數(shù)據(jù)安全標(biāo)準(zhǔn)(PCI DSS)兼容服務(wù)器環(huán)境中的憑證。

第4步:創(chuàng)建OnClickListener對(duì)象

為Checkout操作定義一個(gè)OnClickListener?,它將生成一個(gè)PaymentDataRequest對(duì)象,如下例所示。

findViewByIdR.id.buy_button
? ?
.setOnClickListener
? ? ? ?
新的View.OnClickListener(){
? ? ? ? ?
@覆蓋
? ? ? ? ?
public void onClickView view){
? ? ? ? ? ?
PaymentDataRequest request = createPaymentDataRequest();
? ? ? ? ? ?
ifrequest!= null){
? ? ? ? ? ? ?
AutoResolveHelper.resolveTask
? ? ? ? ? ? ? ? ?
mPaymentsClient.loadPaymentData(請(qǐng)求),
? ? ? ? ? ? ? ? ?
這個(gè),
? ? ? ? ? ? ? ? ?
// LOAD_PAYMENT_DATA_REQUEST_CODE是一個(gè)常量值
? ? ? ? ? ? ? ? ?
//你定義
? ? ? ? ? ? ? ? ?
LOAD_PAYMENT_DATA_REQUEST_CODE );
? ? ? ? ? ?
}
? ? ? ? ?
}
? ? ? ?
});

PaymentDataRequest對(duì)象是表示支付數(shù)據(jù)請(qǐng)求的PaymentDataRequest?,它提供必要的信息來支持支付。?使用AutoResolveHelper類自動(dòng)解決任務(wù),然后在Activity類的onActivityResult()方法中處理結(jié)果。

第5步:處理PaymentData響應(yīng)對(duì)象

當(dāng)您調(diào)用loadPaymentData?,?PaymentData對(duì)象返回到onActivityResult?。?解析PaymentData對(duì)象以獲取付款提供商可以收取的付款憑證。

? @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步:請(qǐng)參閱您的付款處理器

有關(guān)如何完成交易的更多信息,請(qǐng)參閱付款處理器的文檔。

  • Adyen
  • 布倫特里
  • PaySafe
  • 條紋
  • Vantiv
  • WorldPay的

測(cè)試你的應(yīng)用程序

在本節(jié)中,您將學(xué)習(xí)如何測(cè)試您的應(yīng)用程序,以確保它已準(zhǔn)備好進(jìn)行生產(chǎn)。

關(guān)于測(cè)試環(huán)境

我們的測(cè)試環(huán)境不會(huì)在PaymentsData響應(yīng)中返回實(shí)時(shí)計(jì)費(fèi)令牌,但測(cè)試環(huán)境允許我們測(cè)試您的預(yù)購(gòu)工作流程。?在您的應(yīng)用程序有生產(chǎn)訪問權(quán)限之前,您將在付款選擇器上看到Unrecognized App錯(cuò)誤。

WalletOptions?environment參數(shù)的值指示服務(wù)器是在生產(chǎn)環(huán)境還是在測(cè)試環(huán)境中運(yùn)行。environment價(jià)值可以是下列之一:

  • WalletConstants.ENVIRONMENT_PRODUCTION
  • WalletConstants.ENVIRONMENT_TEST

要進(jìn)行測(cè)試和開發(fā),請(qǐng)使用WalletConstants.ENVIRONMENT_TEST?。

回顧我們的品牌要求

為了確保您遵守我們的準(zhǔn)則和標(biāo)準(zhǔn),請(qǐng)確保您的應(yīng)用程序符合我們的品牌準(zhǔn)則?。

部署您的應(yīng)用程序

在本節(jié)中,您將學(xué)習(xí)如何準(zhǔn)備您的應(yīng)用程序進(jìn)行生產(chǎn)并開始接受實(shí)際支付。

訪問生產(chǎn)環(huán)境

準(zhǔn)備好部署Google Pay API集成后,請(qǐng)注冊(cè)以獲取訪問權(quán)限并使用生產(chǎn)憑據(jù)進(jìn)行測(cè)試。

使用釋放鍵為您的應(yīng)用簽名

當(dāng)您的應(yīng)用程序指向Google Pay API生產(chǎn)環(huán)境時(shí),如果用于簽名Android應(yīng)用程序的簽名密鑰指紋與注冊(cè)到Google Play的版本密鑰指紋不匹配,則Google Pay API將返回ERROR_CODE_MERCHANT_ACCOUNT_ERROR (405)?。?這通常發(fā)生在開發(fā)中的應(yīng)用程序從測(cè)試環(huán)境切換到生產(chǎn)環(huán)境之后。

要解決此問題,請(qǐng)確保提供給Google的指紋與用于簽署Android應(yīng)用的密鑰的指紋相匹配。?一旦Android應(yīng)用程序被簽名,您可以使用以下命令驗(yàn)證用于簽名的密鑰的指紋:

//首先從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的指紋進(jìn)行匹配。

配置您的應(yīng)用程序的生產(chǎn)

使用以下步驟來配置您的應(yīng)用程序的生產(chǎn):

  • 確保您的API是使用釋放密鑰簽名的,?而不是您在測(cè)試環(huán)境中使用的調(diào)試密鑰?。?調(diào)試密鑰在生產(chǎn)環(huán)境中不起作用。
  • 將WalletOptions環(huán)境參數(shù)設(shè)置為WalletConstants.ENVIRONMENT_PRODUCTION?。

  • ?

    總結(jié)

    以上是生活随笔為你收集整理的在你的项目中集成 Android pay支付的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。