Google Pay(Tez) 集成到我的支付网关中? (Android)
Google Pay(Tez) Integration into my payment gateway ? (Android)
注意: 我知道 iOS 尚不可用,我也不是在寻找 Xamarin.Forms(显然)。
一直在尝试将 Google Pay(Tez)
API 集成到我的 Xamarin
应用程序中,当我意识到没有可用于将其集成到 Xamarin
的指南时,这很好。
所以,我访问了 Google Pay API page, Which seems to have a sweet looking guide for Android(Java)
so I started converting the native Android code into Xamarin
. And then I hit a bump where the PaymentsClient class 似乎在 Xamarin 中不可用,所以我尝试检查它的命名空间,这样也许我可以了解它是否可用(Xamarin.Android
).但是没有提到这个class(我注意到的None)的命名空间。我在它的信息中所能找到的只是它继承自 com.google.android.gms.common.api.GoogleApi
,实际上根本没有帮助。
查询
- 我是不是遗漏了一些包,还是
Xamarin
中使用了一些替代品?
- 是否有一些我错过的
Xamarin
应用程序集成 Google pay(Tez) API 的指南?
- Google pay(Tez) 集成还没有添加到 Xamarin.Android 中吗?
- 还是我现在的配置有问题?即
VS17 Pro
版本 15.6.7
, Xamarin
版本 4.9.0.753
和 Xamarin.Android
版本 8.2.0.16
Android SDK 最新所有 API v 4.0 以上的版本
Google 支付(不是 Tez):
Package: `Xamarin.GooglePlayServices.Wallet`
确保通过清单中的 metadata
或应用程序的 MetaDataAttribute
:
为电子钱包处理启用应用程序
[Application]
[MetaData(name: "com.google.android.gms.wallet.api.enabled", Value = "true")]
从这里开始就是 using Android.Gms.Wallet;
以及设置和使用 PaymentsClient
的问题,即
PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(
this,
new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build()
);
Google 为印度付费(基于 UPI 意图):
要将交易信息传递给 "Tez",您可以定义一个 URI,其中包含您的所有商家信息、交易金额等...此 URI 基于统一支付接口 UPI
方案(这不受 Google 控制,因此您可以参考 UPI 规范了解需要传递的数据)。
回复:https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf
using (var uri = new Android.Net.Uri.Builder()
.Scheme("upi")
.Authority("pay")
.AppendQueryParameter("pa", "your-merchant-vpa@xxx")
.AppendQueryParameter("pn", "your-merchant-name")
.AppendQueryParameter("mc", "your-merchant-code")
.AppendQueryParameter("tr", "your-transaction-ref-id")
.AppendQueryParameter("tn", "your-transaction-note")
.AppendQueryParameter("am", "your-order-amount")
.AppendQueryParameter("cu", "INR")
.AppendQueryParameter("url", "your-transaction-url")
.Build())
{
intent = new Intent(Intent.ActionView);
intent.SetData(uri);
intent.SetPackage("com.google.android.apps.nbu.paisa.user");
StartActivityForResult(intent, 9999);
}
那么你当然会为 OnActivityResult
实现覆盖并处理结果:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == 9999)
{
Log.Debug("tez result", data.GetStringExtra("Status"));
}
}
注意: 我知道 iOS 尚不可用,我也不是在寻找 Xamarin.Forms(显然)。
一直在尝试将 Google Pay(Tez)
API 集成到我的 Xamarin
应用程序中,当我意识到没有可用于将其集成到 Xamarin
的指南时,这很好。
所以,我访问了 Google Pay API page, Which seems to have a sweet looking guide for Android(Java)
so I started converting the native Android code into Xamarin
. And then I hit a bump where the PaymentsClient class 似乎在 Xamarin 中不可用,所以我尝试检查它的命名空间,这样也许我可以了解它是否可用(Xamarin.Android
).但是没有提到这个class(我注意到的None)的命名空间。我在它的信息中所能找到的只是它继承自 com.google.android.gms.common.api.GoogleApi
,实际上根本没有帮助。
查询
- 我是不是遗漏了一些包,还是
Xamarin
中使用了一些替代品? - 是否有一些我错过的
Xamarin
应用程序集成 Google pay(Tez) API 的指南? - Google pay(Tez) 集成还没有添加到 Xamarin.Android 中吗?
- 还是我现在的配置有问题?即
VS17 Pro
版本15.6.7
,Xamarin
版本4.9.0.753
和Xamarin.Android
版本8.2.0.16
Android SDK 最新所有 API v 4.0 以上的版本
Google 支付(不是 Tez):
Package: `Xamarin.GooglePlayServices.Wallet`
确保通过清单中的 metadata
或应用程序的 MetaDataAttribute
:
[Application]
[MetaData(name: "com.google.android.gms.wallet.api.enabled", Value = "true")]
从这里开始就是 using Android.Gms.Wallet;
以及设置和使用 PaymentsClient
的问题,即
PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(
this,
new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build()
);
Google 为印度付费(基于 UPI 意图):
要将交易信息传递给 "Tez",您可以定义一个 URI,其中包含您的所有商家信息、交易金额等...此 URI 基于统一支付接口 UPI
方案(这不受 Google 控制,因此您可以参考 UPI 规范了解需要传递的数据)。
回复:https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf
using (var uri = new Android.Net.Uri.Builder()
.Scheme("upi")
.Authority("pay")
.AppendQueryParameter("pa", "your-merchant-vpa@xxx")
.AppendQueryParameter("pn", "your-merchant-name")
.AppendQueryParameter("mc", "your-merchant-code")
.AppendQueryParameter("tr", "your-transaction-ref-id")
.AppendQueryParameter("tn", "your-transaction-note")
.AppendQueryParameter("am", "your-order-amount")
.AppendQueryParameter("cu", "INR")
.AppendQueryParameter("url", "your-transaction-url")
.Build())
{
intent = new Intent(Intent.ActionView);
intent.SetData(uri);
intent.SetPackage("com.google.android.apps.nbu.paisa.user");
StartActivityForResult(intent, 9999);
}
那么你当然会为 OnActivityResult
实现覆盖并处理结果:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == 9999)
{
Log.Debug("tez result", data.GetStringExtra("Status"));
}
}