在 Xamarin Android 中使用 Google 钱包时出错
Error using Google wallet in Xamarin Android
我正在尝试在我的 Xamarin 应用中使用 Google Pay。首先,我从 nuget 添加了 GooglePlayServices 包
然后我按照 here
的文档
这是我的 JSON
{
"apiVersion": 2,
"apiVersionMinor": 0,
"merchantInfo": { "merchantName": "testName" },
"allowedPaymentMethods": [
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
}
},
{
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
],
"transactionInfo": {
"totalPriceStatus": "FINAL",
"totalPrice": "4.10",
"currencyCode": "USD",
"checkoutOption": "COMPLETE_IMMEDIATE_PURCHASE"
}
}
代码:
paymentsClient = WalletClass.GetPaymentsClient(
Xamarin.Essentials.Platform.CurrentActivity,
new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build());
var request = PaymentDataRequest.FromJson(json);
AutoResolveHelper.ResolveTask(paymentsClient.LoadPaymentData(request),
Xamarin.Essentials.Platform.CurrentActivity, 999);
但我得到一个错误 Code 10: Developer Error
如果我这样做的话
var result = await paymentsClient.LoadPaymentDataAsync(request);
我得到以下错误6: BuyFlow UI needs to be shown.
在重新查看文档后我意识到我的 json 对象是错误的而不是
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
}
},
{
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
它需要看起来像这样:作为支付方式对象的tokenizationSpecification
部分
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
},
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
我想知道的是为什么我调用 PaymentDataRequest.FromJson(json)
时它没有抛出错误
我正在尝试在我的 Xamarin 应用中使用 Google Pay。首先,我从 nuget 添加了 GooglePlayServices 包 然后我按照 here
的文档这是我的 JSON
{
"apiVersion": 2,
"apiVersionMinor": 0,
"merchantInfo": { "merchantName": "testName" },
"allowedPaymentMethods": [
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
}
},
{
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
],
"transactionInfo": {
"totalPriceStatus": "FINAL",
"totalPrice": "4.10",
"currencyCode": "USD",
"checkoutOption": "COMPLETE_IMMEDIATE_PURCHASE"
}
}
代码:
paymentsClient = WalletClass.GetPaymentsClient(
Xamarin.Essentials.Platform.CurrentActivity,
new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build());
var request = PaymentDataRequest.FromJson(json);
AutoResolveHelper.ResolveTask(paymentsClient.LoadPaymentData(request),
Xamarin.Essentials.Platform.CurrentActivity, 999);
但我得到一个错误 Code 10: Developer Error
如果我这样做的话
var result = await paymentsClient.LoadPaymentDataAsync(request);
我得到以下错误6: BuyFlow UI needs to be shown.
在重新查看文档后我意识到我的 json 对象是错误的而不是
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
}
},
{
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
它需要看起来像这样:作为支付方式对象的tokenizationSpecification
部分
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"]
},
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": { "gateway": "firstdata", "gatewayMerchantId": "12365" }
}
我想知道的是为什么我调用 PaymentDataRequest.FromJson(json)