我正在尝试使用Android Pay进行测试付款。到目前为止,我已根据此answer配置了我的设备进行测试,我已在我的设备中根据此代码在Android应用中配置了一张卡:
Wallet.Payments.isReadyToPay(mGoogleApiClient, IsReadyToPayRequest.newBuilder()
.addAllowedCardNetwork(WalletConstants.CardNetwork.VISA)
.addAllowedCardNetwork(WalletConstants.CardNetwork.MASTERCARD)
.build())
.setResultCallback(
booleanResult -> {
if (booleanResult.getStatus().isSuccess()) { // says true
...
中的这些指南构建了我的示例
private void initGoogleApi() {
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addOnConnectionFailedListener(this)
.enableAutoManage(getActivity(),0, this)
.addApi(Wallet.API, new Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST)
.setTheme(WalletConstants.THEME_LIGHT)
.build())
.build();
}
然后:
private void initAndroidPayView() {
mWalletFragment = (SupportWalletFragment) getActivity().getSupportFragmentManager()
.findFragmentByTag(WALLET_FRAGMENT_ID);
if (mWalletFragment == null) {
// Wallet fragment style
WalletFragmentStyle walletFragmentStyle = new WalletFragmentStyle()
.setBuyButtonText(WalletFragmentStyle.BuyButtonText.BUY_WITH)
.setBuyButtonWidth(WalletFragmentStyle.Dimension.MATCH_PARENT);
// Wallet fragment options
WalletFragmentOptions walletFragmentOptions = WalletFragmentOptions.newBuilder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST)
.setFragmentStyle(walletFragmentStyle)
.setTheme(WalletConstants.THEME_DARK)
.setMode(WalletFragmentMode.BUY_BUTTON)
.build();
// Initialize the WalletFragment
WalletFragmentInitParams.Builder startParamsBuilder =
WalletFragmentInitParams.newBuilder()
.setMaskedWalletRequest(generateMaskedWalletRequest())
.setMaskedWalletRequestCode(MASKED_WALLET_REQUEST_CODE);
//.setAccountName("Google I/O Codelab");//https://developers.google.com/android/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder
mWalletFragment = SupportWalletFragment.newInstance(walletFragmentOptions);
mWalletFragment.initialize(startParamsBuilder.build());
// Add the WalletFragment to the UI
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.androidPayContainer, mWalletFragment, WALLET_FRAGMENT_ID)
.commit();
}
}
我正在使用
PaymentMethodTokenizationType.NETWORK_TOKEN
我生成了github repo
中写的publicKey现在,当我付款时,我在onActivityResult中收到此错误代码:10
在设备中我只看到此错误消息:
请求失败发生意外错误。请稍后再试。
当我在错误对话框中按ok时,我得到这个日志:
06-01 12:18:05.739 11386 11386 W WalletMerchantError:错误 loadMaskedWallet:您是否忘记了设置的Android Pay测试 环境到PROD?
我还尝试将变量更改为Production但仍然是相同的错误。 有没有人有任何解决方案,或者我真的必须稍后再尝试?
答案 0 :(得分:1)
如果您尝试使用ENVIRONMENT_TEST
,请确保您已按照Setup Android Pay中列出的步骤操作。具体来说,请确保您的AndroidManifest.xml包含以下位:
<application
...
<!-- Enables the Android Pay API -->
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
</application>
如果您认为自己的应用已准备好并且正在尝试使用ENVIRONMENT_PRODUCTION
,那么还需要执行一些步骤outlined here。
答案 1 :(得分:0)
根据Github上发布的这个问题
https://github.com/android-pay/androidpay-quickstart/issues/31
和其他联系人有沙盒模式的异常,测试卡至少在欧洲不起作用。
该问题的答案还包含一种替代解决方案。
问题:测试卡(即使是Google提供的测试卡)也不再工作了 (至少不在美国境外);
解决方案:您需要真卡才能制作 工作。你不会被指控为ENVIRONMENT_TEST。