如何在 Xamarin Forms 中集成 Apple Pay?

问题描述 投票:0回答:2

我正在使用 xamarin Forms 开发应用程序。现在,我需要集成 Apple Pay 我试图通过互联网查找内容,但无法找到有效的解决方案。谁能建议我如何将 Apple pay 集成到我的应用程序中?

这是我的 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)
       {

       }



    }
}

预期结果:

canmake paymentsUsingNetwork 方法应返回 true。但是,它总是返回 false。

注意: 我在权利中添加了正确的商家 ID。在 Apple Pay 文档中,只有当我们没有卡时,CanMakePaymentsUsingnetwork() 才会返回 false。我也在我的测试帐户中添加了卡。

我在 xamarin 表单共享应用程序中有一个按钮,当单击该按钮时,它将触发上面代码中的 AuthorizePayment() 方法。

xcode xamarin xamarin.forms xamarin.ios
2个回答
4
投票

解决了。

一切配置均正确。上面的代码按预期工作。唯一的问题是,我忘记在 iOS 项目设置中加载 Entitlements.plist 文件。这就是为什么我总是得到 canmake paymentUsingNetwork(networks) false 的主要原因。


0
投票

Narendra 先生,祝您有美好的一天,我正在尝试 Apple Pay,但找不到任何解决方案,您能帮助我如何实现这一目标吗?谢谢

© www.soinside.com 2019 - 2024. All rights reserved.