如何通过Xamarin调用PayTM Android SDK?
How to call PayTM Android SDK via Xamarin?
我正在尝试使用 this link 中给出的 android 示例将 PayTM 集成到 Xamarin 应用程序中。我已经从 PayTM maven 存储库下载了 appinvokesdk-1.2.aar,并使用 Xamarin Android 绑定库生成了必要的本机出价。我创建了一个名为 IPayTMService 的接口,它存在于我的 Xamarin.Forms 公共项目中。代码如下
public interface IPayTMService
{
void MakePayment(string orderId,string txnToken, string amount);
string Message { get; set; }
}
并且代码在Xamarin.Android项目中实现为
public class AndroidPayTMService : IPayTMService
{
private Activity _activity;
public AndroidPayTMService(Activity activity)
{
_activity = activity;
}
public string Message { get; set; }
public void MakePayment(string orderId, string txnToken, string amount)
{
var mid = "<my mid>";
var callbackurl = $"https://securegw-stage.paytm.in/theia/paytmCallback?ORDER_ID={orderId}";
var paytmOrder = new PaytmOrder(orderId, mid, txnToken, amount, callbackurl);
var txnManager = new TransactionManager(paytmOrder, new PaytmPaymentTransactionCallback(this));
txnManager.StartTransaction(_activity, 2);
}
}
在我的 MainActivity.cs 中 Xamarin.Android 应用程序中。我写了下面的代码来启动paytm服务
var app = new App();
app.PayTMService = new AndroidPayTMService(this);
LoadApplication(app);
根据我的 Xamarin.Forms 公共代码,我按如下方式调用该服务
async void PayTM_Clicked(object sender, EventArgs e)
{
var orderId = Guid.NewGuid().ToString();
var custId = Guid.NewGuid().ToString();
var token = await payTM.GetToken(orderId, custId, amount.Text);
var app = (App)Application.Current;
app.PayTMService.MakePayment(orderId, token, amount.Text);
}
当我 运行 这个应用程序时,我的 androidpaytmservice
这行出现错误
txnManager.StartTransaction(_activity, 2);
如下图所示
我的问题有两个
- 我做的整合对吗?
- 你能帮我解决我在这里遗漏了什么吗?
将项目迁移到 AndroidX。如果您使用的是最新的 Visual Studio 和 Xamarin.Forms >4.5.X 那么它是在内部完成的。除了安装AndroidX nugets。
https://devblogs.microsoft.com/xamarin/androidx-for-xamarin/
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/android/androidx-migration
我正在尝试使用 this link 中给出的 android 示例将 PayTM 集成到 Xamarin 应用程序中。我已经从 PayTM maven 存储库下载了 appinvokesdk-1.2.aar,并使用 Xamarin Android 绑定库生成了必要的本机出价。我创建了一个名为 IPayTMService 的接口,它存在于我的 Xamarin.Forms 公共项目中。代码如下
public interface IPayTMService
{
void MakePayment(string orderId,string txnToken, string amount);
string Message { get; set; }
}
并且代码在Xamarin.Android项目中实现为
public class AndroidPayTMService : IPayTMService
{
private Activity _activity;
public AndroidPayTMService(Activity activity)
{
_activity = activity;
}
public string Message { get; set; }
public void MakePayment(string orderId, string txnToken, string amount)
{
var mid = "<my mid>";
var callbackurl = $"https://securegw-stage.paytm.in/theia/paytmCallback?ORDER_ID={orderId}";
var paytmOrder = new PaytmOrder(orderId, mid, txnToken, amount, callbackurl);
var txnManager = new TransactionManager(paytmOrder, new PaytmPaymentTransactionCallback(this));
txnManager.StartTransaction(_activity, 2);
}
}
在我的 MainActivity.cs 中 Xamarin.Android 应用程序中。我写了下面的代码来启动paytm服务
var app = new App();
app.PayTMService = new AndroidPayTMService(this);
LoadApplication(app);
根据我的 Xamarin.Forms 公共代码,我按如下方式调用该服务
async void PayTM_Clicked(object sender, EventArgs e)
{
var orderId = Guid.NewGuid().ToString();
var custId = Guid.NewGuid().ToString();
var token = await payTM.GetToken(orderId, custId, amount.Text);
var app = (App)Application.Current;
app.PayTMService.MakePayment(orderId, token, amount.Text);
}
当我 运行 这个应用程序时,我的 androidpaytmservice
这行出现错误txnManager.StartTransaction(_activity, 2);
如下图所示
我的问题有两个
- 我做的整合对吗?
- 你能帮我解决我在这里遗漏了什么吗?
将项目迁移到 AndroidX。如果您使用的是最新的 Visual Studio 和 Xamarin.Forms >4.5.X 那么它是在内部完成的。除了安装AndroidX nugets。
https://devblogs.microsoft.com/xamarin/androidx-for-xamarin/
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/android/androidx-migration