微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Google Pay 实现

如何解决Xamarin Google Pay 实现

我正在尝试为 Android 制作一个简单的 Xamarin 应用程序,并有机会通过 Google Pay 付款。使用 Android.Gms.Wallet。 在 AssemlyInfo 中添加[assembly: MetaData("com.google.android.gms.wallet.api.enabled",Value = "true")]

尝试在 OnCreate 方法的 MainActivity 中调用 GooglePay 小部件:

openGooglePay(this,1000,5);

这是方法

void openGooglePay(Activity a,int money,int requestCode)
{
  PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(this,new WalletClass.Walletoptions.Builder()
                         .SetEnvironment(WalletConstants.EnvironmentTest)
                         .Build()
            );

  var request = PaymentDataRequest.FromJson(money.ToString());
  AutoResolveHelper.ResolveTask(paymentsClient.LoadPaymentData(request),a,requestCode);
}

但我的手机屏幕是空的。

有什么问题?

解决方法

好吧,我找到了我的问题的答案 - 只是将 java/kotlin code 重写为 c#。

public const int LOAD_PAYMENT_DATA_REQUEST_CODE = 991;

在活动中调用openGooglePay(this,1);,例如在OnCreate

void openGooglePay(Activity act,int money)
    {
        PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(
             this,new WalletClass.WalletOptions.Builder()
                     .SetEnvironment(WalletConstants.EnvironmentTest)
                     .Build()
        );

        TransactionInfo tran = TransactionInfo.NewBuilder()
            .SetTotalPriceStatus(WalletConstants.TotalPriceStatusFinal)
            .SetTotalPrice(money.ToString())
            .SetCurrencyCode("USD")
            .Build();

        var req = createPaymentDataRequest(tran);

        var futurePay = paymentsClient.LoadPaymentData(req);
        
    AutoResolveHelper.ResolveTask(futurePay,act,LOAD_PAYMENT_DATA_REQUEST_CODE);
}

PaymentDataRequest createPaymentDataRequest(TransactionInfo transactionInfo)
    {
        var paramsBuilder = PaymentMethodTokenizationParameters.NewBuilder()
            .SetPaymentMethodTokenizationType(
            WalletConstants.PaymentMethodTokenizationTypePaymentGateway)
            .AddParameter("gateway","myGateway")
            .AddParameter("gatewayMerchantId","myMerchant");

            return createPaymentDataRequest(transactionInfo,paramsBuilder.Build());

}

    private PaymentDataRequest createPaymentDataRequest(TransactionInfo transactionInfo,PaymentMethodTokenizationParameters paymentMethodTokenizationParameters)
    {
        return PaymentDataRequest.NewBuilder()
            .SetPhoneNumberRequired(false)
            .SetEmailRequired(false)
            .SetShippingAddressRequired(false)
   .SetTransactionInfo(transactionInfo)
   .AddAllowedPaymentMethods(new List<Integer>() { (Integer)WalletConstants.PaymentMethodCard,(Integer)WalletConstants.PaymentMethodTokenizedCard })
   .SetCardRequirements(
       CardRequirements.NewBuilder()
           .AddAllowedCardNetworks(new List<Integer>() { (Integer)WalletConstants.CardNetworkVisa,(Integer)WalletConstants.CardNetworkMastercard })
           .SetAllowPrepaidCards(true)
           .SetBillingAddressFormat(WalletConstants.BillingAddressFormatFull)
           .Build()
   )
   .SetPaymentMethodTokenizationParameters(paymentMethodTokenizationParameters)
   .SetUiRequired(true)
   .Build();
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。