注意::我知道它尚不支持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,最新的API版本高于v 4.0 答案 0 :(得分:2)
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基于UNIFIED PAYMENTS INTERFACE 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"));
}
}