问题描述
注意::我知道它不适用于iOS,而且我也没有在寻找Xamarin.Forms(很明显).
Note : I am aware it is not yet available for iOS, Also i am not looking for Xamarin.Forms(Obviously).
当我意识到没有可用的将其集成到Xamarin
的指南时,尝试将Google Pay(Tez)
API集成到我的Xamarin
应用程序中.
Been trying to integrate Google Pay(Tez)
API into my Xamarin
Application when I realised that there are no guides available for its integration to Xamarin
which is fine.
因此,我访问了 Google Pay API 页,其中似乎对Android(Java)
有很好的指导,所以我开始将本机Android代码转换为Xamarin
.然后我碰到了一个 PaymentsClient 类似乎在Xamarin中不可用,所以我尝试检查其名称空间,以便也许我可以了解它是否可用(Xamarin.Android
).但是没有提及此类的名称空间(我没有注意到).我可以在其信息中找到的只是它是从com.google.android.gms.common.api.GoogleApi
继承而来的,而实际上根本没有帮助.
So, I visited the 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 seems to be unavailable in Xamarin, So I tried checking for its namespace so maybe I could understand if it was available or not(Xamarin.Android
). But there is no mention of the namespace of this class(None that I noticed). All I could find in its info is that it inherits from com.google.android.gms.common.api.GoogleApi
which did not help at all actually.
查询
- 我在这里缺少某些软件包吗?还是在
Xamarin
中使用了某些替代方法? - 是否有一些指南针对我错过的
Xamarin
应用程序集成Google pay(Tez)API? - Xamarin.Android中是否尚未添加Google pay(Tez)集成?
- 或者我当前的配置有问题吗?即
VS17 Pro
版本15.6.7
,Xamarin
版本4.9.0.753
和Xamarin.Android
版本8.2.0.16
Android SDK最新,且所有API版本均高于v4.0
- Am I missing some package here or is there some alternative that is used in
Xamarin
? - Is There some guide to integrating Google pay(Tez) API for
Xamarin
apps that I have missed? - Is Google pay(Tez) integration not added in Xamarin.Android yet?
- Or is there something wrong with my current config? i.e
VS17 Pro
version15.6.7
,Xamarin
version4.9.0.753
andXamarin.Android
version8.2.0.16
Android SDK latest with all the API versions above v 4.0
推荐答案
Google Pay(非Tez):
Package: `Xamarin.GooglePlayServices.Wallet`
确保通过清单中的metadata
或应用程序的MetaDataAttribute
启用应用程序进行电子钱包处理:
Make sure that you enable your app for Wallet processing via the metadata
in the manifest, or via your application's MetaDataAttribute
:
[Application]
[MetaData(name: "com.google.android.gms.wallet.api.enabled", Value = "true")]
从那里开始是using Android.Gms.Wallet;
的问题,然后设置并使用PaymentsClient
,即.
From there it is a matter of using Android.Gms.Wallet;
and setting up and using the PaymentsClient
, ie.
PaymentsClient paymentsClient = WalletClass.GetPaymentsClient(
this,
new WalletClass.WalletOptions.Builder()
.SetEnvironment(WalletConstants.EnvironmentTest)
.Build()
);
Google Pay for India(基于UPI Intent):
要将交易信息传递到"Tez",请定义一个URI,其中包括您所有的商家信息,交易金额等.此URI基于UNIFIED PAYMENTS INTERFACE UPI
方案(此不受控制)由Google提供,因此您需要参考UPI规范以了解需要传递的数据).
Google Pay for India (UPI Intent-based):
To pass the transaction information to "Tez", you define an URI that includes all of your merchant information, transaction amount, etc... This URI is based upon the UNIFIED PAYMENTS INTERFACE UPI
scheme (this is not controlled by Google and thus you have refer to UPI specs for what data you need to pass).
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
的替代并处理结果:
Then of course you would implement an override for OnActivityResult
and process the result:
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"));
}
}
这篇关于将Google Pay(Tez)集成到我的付款网关中? (安卓)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!