私は Xamarin プロジェクトの統合 Google Pay に取り組んでいます。[今すぐ購入] ボタンが表示されますが、それを押すと、「この支払いオプションは、このアプリでは利用できなくなりました」というメッセージが表示されます。
Stripe を支払いゲートウェイとして使用し、テスト環境を使用しています。私が使用しているアクティビティはこちらです。FragmentActivity を継承し、GoogleApiClient.IConnectionCallbacks と GoogleApiClient.IONConnectionFailedListener を実装します。
public void SetupWallet()
{
_walletFragment = SupportWalletFragment.NewInstance(WalletFragmentOptions.NewBuilder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.SetMode(WalletFragmentMode.BuyButton)
.SetTheme(WalletConstants.ThemeLight)
.SetFragmentStyle(new WalletFragmentStyle()
.SetBuyButtonText(BuyButtonText.BuyWithGoogle)
.SetBuyButtonAppearance(BuyButtonAppearance.Classic)
.SetBuyButtonWidth(Dimension.MatchParent))
.Build());
var maskedWalletRequest = MaskedWalletRequest.NewBuilder()
// Request credit card tokenization with Stripe
.SetPaymentMethodTokenizationParameters(
PaymentMethodTokenizationParameters.NewBuilder()
.SetPaymentMethodTokenizationType(PaymentMethodTokenizationType.PaymentGateway)
.AddParameter("gateway", "stripe")
.AddParameter("stripe:publishableKey", AppConfig.StripeApiKey)
.AddParameter("stripe:version", "2018-02-06")
.Build())
.SetMerchantName("My Name")
.SetPhoneNumberRequired(false)
.SetShippingAddressRequired(false)
.SetEstimatedTotalPrice("20.00")
.SetCurrencyCode("USD")
.Build();
_walletFragment.Initialize(WalletFragmentInitParams.NewBuilder()
.SetMaskedWalletRequest(maskedWalletRequest)
.SetMaskedWalletRequestCode(LOAD_MASKED_WALLET_REQ_CODE)
.Build());
SupportFragmentManager.BeginTransaction()
.Replace(Resource.Id.dynamic_wallet_button_fragment, _walletFragment).Commit();
}
protected override void OnStart()
{
base.OnStart();
_googleApiClient.Connect();
}
protected override void OnStop()
{
base.OnStop();
_googleApiClient.Disconnect();
}
private void CheckAndroidPayAvailable()
{
var result = WalletClass.Payments.IsReadyToPay(_googleApiClient);
result.SetResultCallback(new AndroidPayCallback(_walletFragment));
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.google_play_activity);
_googleApiClient = new GoogleApiClient.Builder(((MainActivity)Forms.Context).ApplicationContext)
.AddConnectionCallbacks(this)
.AddOnConnectionFailedListener(this)
.AddApi(WalletClass.API, new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build())
.EnableAutoManage(this, this)
.Build();
SetupWallet();
CheckAndroidPayAvailable();
}