融合:第一部分 - 整合Apple Pay SDK
#android #ios #swift #xcode

介绍

大家好ðð»â€!我的名字叫Vedant,这次我们将探索另一个融合库FusionPayments。这是文章的第1部分,该文章说明了如何整合苹果工资。 Apple Pay是Apple Inc.的移动付款和数字钱包服务,允许用户亲自进行付款,iOS应用程序和网络上的付款。将Apple薪酬集成到网站或应用程序中可以为客户提供无缝且安全的付款经验。

在本文中,我们将讨论如何为付款,集成涉及的步骤以及将Apple Pay集成到网站或应用程序的要求。总体而言,本文旨在为希望将Apple付款纳入其支付系统的开发人员和企业提供综合指南,后来将整合Google特定于Android的设备。

跨平台(SCADE + Fusion)SDK的好处

  1. 成本效益:跨平台SDK允许开发人员编写代码并在多个平台上使用它,从而减少了开发时间和成本。
  2. 一致的用户体验:跨平台SDK在不同平台上提供一致的用户体验,从而增强了整体用户体验并有助于建立品牌识别。
  3. 吸引更广泛的受众:通过为多个平台开发SDK,企业可以吸引更多的受众群体并扩大其客户群。
  4. 更轻松的维护:跨平台SDK使维护和更新代码变得更容易,因为可以在一个地方进行更改,然后应用于所有平台。访问
  5. 本地功能:跨平台SDK提供了对不同平台的本机特征的访问,从而可以增强功能和更好的性能。
  6. 更快的上市时间:跨平台开发使企业能够更快地启动其应用程序,因为他们不必为每个平台开发单独的版本。

融合SDK

最近,SCADE团队以其突破性技术为开源,称为 Fusion 图书馆。 Fusion使我们能够使用SCADE Fusion SDK调用Android API。好处是,我们不必费心在Gradle或其他任何地方设置特定于Android平台的东西。即使是iOS特定的设置也非常简单,也无需进一步的先决条件。

在这种情况下,

scade swift代码库充当真理的单一来源,而Fusion SDK使其成为可能。目前,Fusion SDK为地理位置,蓝牙,NFC和媒体播放器提供了简单的集成,而SCADE开发人员正在开发更多的融合库。

Image description

了解FusionPayments实施!

您可以检查FusionPayments here的代码库。它是开源的,欢迎您为融合存储库做出贡献,以添加更多功能。

您需要首先了解融合付款协议。它包含接受PaymentRequest对象的方法initiatePayment并返回PaymentStatusPaymentSheet视图状态的回调函数。

public protocol FusionPaymentsManagerProtocol  {
    init(paymentRequest: PaymentRequest)

    /*
     * @property initiatePayment
     *
     * @discussion request payment(Apple/Google pay)
     *             paymentRequest is passed as input parameter
     *
     * @param paymentRequest: passed as input parameter
     *        paymentStatus: contains the payment result
     *        paymentSheetViewState: contains the current state of the payment-sheet
     *
     */
    func initiatePayment( paymentRequest: PaymentRequest, paymentStatus: @escaping (PaymentStatus, PaymentError?) -> Void, paymentSheetViewState: @escaping (PaymentSheetViewState) -> Void )
}

FusionPayments的iOS部分使用Passkit模块实现Apple Pay功能。付款视图控制器呈现付款表并接受付款请求对象。 \

// Using PassKit methods to intiate the Apple Pay transaction
        if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: paymentNetworks) {
            let request = PKPaymentRequest()
            request.currencyCode = paymentRequest.currencyCode  // 1
            request.countryCode = paymentRequest.countryCode  // 2
            request.merchantIdentifier = paymentRequest.merchantIdentifier//"merchant.com.vedant.fusionpayments"  // 3
            request.merchantCapabilities = PKMerchantCapability.capability3DS  // 4
            request.supportedNetworks = paymentNetworks  // 5
            request.paymentSummaryItems = [paymentItem]  // 6

            guard let paymentVC = PKPaymentAuthorizationViewController(paymentRequest: request) else {
                print("Unable to present Apple Pay authorization dialog")
                completionHandler?(.FAILED, .AUTHORIZATION_ERROR)
                return
            }
            paymentVC.delegate = self
            self.paymentVC = paymentVC
#if os(iOS)
            UIApplication.shared.delegate?.window??.rootViewController?.present(
                paymentVC, animated: true, completion: nil)
            paymentSheetViewState(.PAYMENT_SHEET_OPENED)
#endif

        } else {
            // displayDefaultAlert(title: "Error", message: "Unable to make Apple Pay transaction.")
            print("Unable to make Apple Pay transaction!")
            completionHandler?(.FAILED, .UNSUPPORTED_PAYMENT_NETWORK)
        }

        completionHandler = paymentStatus
        self.paymentSheetViewState = paymentSheetViewState

集成FusionPayments SDK

现在,我们将通过将FusionPayments SDK集成到我们的项目中来启动SCADE应用程序的开发。导航到Package.swift并添加以下代码段。

// swift-tools-version:5.3

import PackageDescription
import Foundation

let SCADE_SDK = ProcessInfo.processInfo.environment["SCADE_SDK"] ?? ""

let package = Package(
    name: "ScadePaymentsApp",
    platforms: [
        .macOS(.v10_14)
    ],
    products: [
        .library(
            name: "ScadePaymentsApp",
            type: .static,
            targets: [
                "ScadePaymentsApp"
            ]
        )
    ],
   dependencies: [
    .package(
      name: "FusionPayments", url: "https://github.com/scade-platform/FusionPayments.git",
      .branch("main")),

  ],
    targets: [
        .target(
            name: "ScadePaymentsApp",
            dependencies: [
                .product(name: "FusionPayments", package: "FusionPayments"),
            ],
            exclude: ["main.page"],
            swiftSettings: [
                .unsafeFlags(["-F", SCADE_SDK], .when(platforms: [.macOS, .iOS])),
                .unsafeFlags(["-I", "\(SCADE_SDK)/include"], .when(platforms: [.android])),
            ]
        )
    ]
)

调用FusionPayments方法

现在,我们将通过创建一些UI喜欢添加付款按钮来启动SCADE应用程序的开发。作为下一步,在类级别初始化fusionPaymentsManager变量。

import FusionPayments
var paymentManager: FusionPaymentsManager?

然后,声明将用于付款的支持支付网络,例如Visa,MasterCard等,并宣布该付款有效的国家。

let pNetworks: [PaymentNetwork] = [PaymentNetwork.amex, .visa, .masterCard]

let countries: Set<String> = ["US", "UK"]

现在,我们将创建一个PaymentSummaryItem,其中包含要支付的金额和付款的所有权。

let paymentSummaryItem: PaymentSummaryItem = PaymentSummaryItem(
        label: "SomeLabelForShopping", amount: 3.3)

上述变量需要创建最终的PaymentRequest对象,该对象将传递给paymentManager以启动付款。

let paymentRequest: PaymentRequest = PaymentRequest(
        merchantIdentifier: "merchant.com.vedant.fusionpayments", countryCode: "US",
        currencyCode: "USD", supportedNetworks: pNetworks,
        paymentSummaryItem: paymentSummaryItem, supportedCountries: countries)

      self?.paymentManager = FusionPaymentsManager(paymentRequest: paymentRequest)

最后,我们将不得不调用paymentManager对象的intiatePayment方法。

它将以paymentRequest为参数,并将为付款状态和paymentSheetViewState的视图提供回调功能。

      self?.paymentManager?.initiatePayment(
        paymentRequest: paymentRequest,
        paymentStatus: { (status: PaymentStatus, error: PaymentError?) in
          print(status)
          print(error)

        },
        paymentSheetViewState: {
          viewState in
          print("viewed state")
          print(viewState)
        })

您可以从上面的片段中注意到,如果付款未成功通过,我们已经打印了付款状态或错误。此外,它还返回付款底部表的当前状态,无论是可见的还是隐藏的。

运行应用程序!

现在,让我们在任何iOS模拟器上运行该应用程序,并检查是否正常工作。

Image description

瞧!将FusionPayments SDK集成到SCADE应用程序非常容易。我们现在能够成功完成Apple薪酬交易。您可以找到演示应用程序here的完整源代码。我们建议您在跨平台Swift应用程序中使用FusionPayments SDK,如果您想接受用户的付款。感谢您阅读并在下一篇文章中见到您!