Я пытаюсь совершить тестовый платеж с помощью Android Pay. Пока я настроил свое устройство для тестирования на основе этого ответа. настроил карту в приложении Android на моем устройстве и на основе этого кода:
Wallet.Payments.isReadyToPay(mGoogleApiClient, IsReadyToPayRequest.newBuilder()
.addAllowedCardNetwork(WalletConstants.CardNetwork.VISA)
.addAllowedCardNetwork(WalletConstants.CardNetwork.MASTERCARD)
.build())
.setResultCallback(
booleanResult -> {
if (booleanResult.getStatus().isSuccess()) { // says true
...
Я создал свой пример на основе этих рекомендаций из лаборатории кода Google
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
и я сгенерировал publicKey, как написано в репозитории github
Теперь, когда я делаю платеж, я получаю этот код ошибки в onActivityResult: 10
В устройстве я вижу только это сообщение об ошибке:
Ошибка запроса Произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже.
И когда я нажимаю ok в диалоговом окне ошибки, я получаю этот журнал:
06-01 12:18:05.739 11386 11386 W WalletMerchantError: Ошибка в loadMaskedWallet: Вы забыли установить среду тестирования Android Pay для PROD?
Я попытался также изменить переменные на производство, но все равно та же ошибка. У кого-нибудь есть какое-нибудь решение, или мне действительно нужно попробовать это позже?