注意:我知道它还没有适用于iOS,我也不是在寻找Xamarin.Forms(显然)。
当我意识到没有可用于与Google Pay(Tez)
集成的指南时,我一直试图将Xamarin
API集成到我的Xamarin
应用程序中。
所以,我访问了Google Pay API页面,它似乎有一个甜美的Android(Java)
指南所以我开始将原生Android代码转换为Xamarin
。然后我遇到了一个碰撞,其中PaymentsClient类似乎在Xamarin中不可用,所以我尝试检查它的命名空间,所以也许我可以理解它是否可用(Xamarin.Android
)。但是没有提到这个类的命名空间(我注意到没有)。我在其信息中找到的只是它继承自com.google.android.gms.common.api.GoogleApi
,实际上并没有帮助。
查询
Xamarin
中使用的替代品?Xamarin
应用程序集成Google pay(Tez)API?VS17 Pro
版本15.6.7
,Xamarin
版本4.9.0.753
和Xamarin.Android
版本8.2.0.16
Android SDK最新版本与v 4.0以上的所有API版本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()
);
要将交易信息传递给“Tez”,您需要定义一个包含所有商家信息,交易金额等的URI ...此URI基于统一付款接口UPI
方案(这不受Google控制,因此您有关您需要传递的数据,请参阅UPI规范。
re: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"));
}
}