如何解决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 举报,一经查实,本站将立刻删除。