【问题标题】:Google Pay returns strange error on Xamarin FormsGoogle Pay 在 Xamarin Forms 上返回奇怪的错误
【发布时间】:2020-02-03 14:16:13
【问题描述】:

我尝试将 Google Pay 集成到我的 Xamarin.Forms shell 应用程序中。我没有找到任何不使用条纹的教程,只有 Kotlin 一个。我试图在我的 Payment 类中重新创建示例。方法 Pay() 看起来像这样:

var activity = Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity;
            client = WalletClass.GetPaymentsClient(activity, new WalletClass.WalletOptions.Builder()
                .SetEnvironment(WalletConstants.EnvironmentTest)
                .SetTheme(WalletConstants.ThemeLight)
                .Build());
            PaymentMethodTokenizationParameters param = PaymentMethodTokenizationParameters.NewBuilder()
                .SetPaymentMethodTokenizationType(WalletConstants.PaymentMethodTokenizationTypePaymentGateway)
                .Build();
            PaymentDataRequest request =  PaymentDataRequest.NewBuilder()
                .SetEmailRequired(false)
                .SetShippingAddressRequired(false)
                .SetPhoneNumberRequired(false)
                .SetTransactionInfo(new TransactionInfo(1,"Test","Test"))
                .SetPaymentMethodTokenizationParameters(param)
                .AddAllowedPaymentMethod(WalletConstants.PaymentMethodTokenizedCard)
                .AddAllowedPaymentMethod(WalletConstants.PaymentMethodCard)
                .SetCardRequirements(CardRequirements.NewBuilder()
                    .AddAllowedCardNetwork(WalletConstants.CardNetworkVisa)
                    .AddAllowedCardNetwork(WalletConstants.CardNetworkMastercard)
                    .Build())
                .Build();
            var data = await client.LoadPaymentDataAsync(request);

但在最后一行之后,Xamarin 返回奇怪的错误'6: BuyFlow UI needs to be shown.'。但我认为最后一行应该显示来自 Google Pay 的 UI 表单,但不知何故它不起作用。我正在使用 PlaySevices、Gms.Wallet 和 CurrentActivity 插件

【问题讨论】:

    标签: android xamarin xamarin.android google-play-services google-pay


    【解决方案1】:

    我还没有尝试过,但也许可以试试下面的方法来帮助你前进 https://www.xamboy.com/2020/02/11/braintree-integration-in-xamarin-forms-part-2/

    【讨论】:

      【解决方案2】:

      替换这个:

      var data = await client.LoadPaymentDataAsync(request);
      

      有了这个(不是异步方法):

      var data = client.LoadPaymentData(request); 
      

      在这里传递它(53 可以是任何东西,你将使用它来识别这个请求):

      AutoResolveHelper.ResolveTask(data, Xamarin.Essentials.Platform.CurrentActivity, 53);
      

      然后在用户操作“卡片挑选阶段”之后,您会在 MainActivity 类中获得结果:

      protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
      

      我发现此链接最有帮助并成功实施: https://stripe.com/docs/google-pay?lang=java

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多