如何将Apple Pay集成到Xamarin Forms中? [英] How to integrate Apple Pay in Xamarin Forms?
问题描述
我正在使用xamarin Forms开发App.现在,我有一个整合Apple Pay的要求,我试图通过Internet查找内容,但找不到有效的解决方案.谁能建议我如何将Apple Pay集成到我的App中?
I am Developing App using xamarin Forms. Now, i have a requirement to integrate Apple pay I tried to find the content over the internet but unable to find working solution. Can anyone suggest me how to integrate Apple pay within my App ?
这是我的Apple Pay代码
Here is my code for Apple pay
using System;
using ApplePayTest.iOS.Dependencies;
using ApplePayTest.Services;
using Foundation;
using PassKit;
using StoreKit;
using Stripe.iOS;
using UIKit;
[assembly: Xamarin.Forms.Dependency(typeof(ApplePayAuthorizer))]
namespace ApplePayTest.iOS.Dependencies
{
public class ApplePayAuthorizer :PKPaymentAuthorizationViewControllerDelegate,IApplePayAuthorizer
{
public bool AuthorizePayment()
{
SKProductsRequest req=new SKProductsRequest(new NSSet());
NSString[] paymentNetworks = new NSString[] {
PKPaymentNetwork.Visa,
PKPaymentNetwork.MasterCard
, PKPaymentNetwork.Amex
};
var canmakepayment = PKPaymentAuthorizationViewController.CanMakePayments;
PKPaymentRequest paymentRequest = new PKPaymentRequest();
paymentRequest.MerchantIdentifier = "mymerchant code";
paymentRequest.SupportedNetworks = paymentNetworks;
paymentRequest.MerchantCapabilities = PKMerchantCapability.ThreeDS;
paymentRequest.CountryCode = "CA";
paymentRequest.CurrencyCode = "CAD";
paymentRequest.PaymentSummaryItems = new PKPaymentSummaryItem[]{
new PKPaymentSummaryItem()
{
Label = "Sample Purchase Item" ,
Amount = new NSDecimalNumber("1")
}
};
var canmakepayments = PKPaymentAuthorizationViewController.CanMakePaymentsUsingNetworks(paymentNetworks);
//can make payment is always false
if (canmakepayments)
{
PKPaymentAuthorizationViewController controller = new
PKPaymentAuthorizationViewController(paymentRequest);
controller.Delegate = (PassKit.IPKPaymentAuthorizationViewControllerDelegate)Self;
var rootController = UIApplication.SharedApplication.
KeyWindow.RootViewController;
rootController.PresentViewController(controller,
true, null);
}
return false;
}
public override void DidAuthorizePayment(PKPaymentAuthorizationViewController controller, PKPayment payment,
Action<PKPaymentAuthorizationStatus> completion)
{
completion(obj: PKPaymentAuthorizationStatus.Success);
}
public override void PaymentAuthorizationViewControllerDidFinish
(PKPaymentAuthorizationViewController controller)
{
controller.DismissViewController(true, null);
}
public override void WillAuthorizePayment(PKPaymentAuthorizationViewController controller)
{
}
}
}
预期结果:
canmakepaymentsUsingNetwork方法应返回true.但是,它总是返回false.
注意: 我在权利中添加了正确的商家ID.在Apple支付文档中,仅当我们没有卡时,CanMakePaymentsUsingnetwork()才会返回false.我也已经在测试帐户中添加了卡.
NOTE: I have added correct merchant id in entitlements.In Apple pay document, CanMakePaymentsUsingnetwork() will return false only when we have no card. I have added card in my test account too.
我在xamarin表单共享应用程序中有一个按钮,当单击该按钮时,它将击上述代码中的AuthorizePayment()方法.
I have a button in xamarin forms shared app when that button clicked it will hit AuthorizePayment() method in above code.
推荐答案
已解决.
所有配置均正确.上面的代码按预期工作.唯一的事情是,我忘记了在iOS项目设置中加载 Entitlements.plist 文件.这就是为什么我得到canmakepaymentsUsingNetwork(networks)总是 false 的主要原因.
Everything was configured correctly. Above code works as expected. Only thing is, I forgot to load Entitlements.plist file in iOS Project Settings. That is the main reason why i am getting canmakepaymentsUsingNetwork(networks) always false.
这篇关于如何将Apple Pay集成到Xamarin Forms中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!