BraspagPay 1.0.0

BraspagPay 1.0.0

Braspag 维护。



Braspag Apple Pay SDK

要求

  • iOS 10.0+ / macOS 10.13+ / watchOS 4.0+
  • Xcode 10.2+
  • Swift 5+

安装

CocoaPods

CocoaPods 是 Xcode 项目依赖项管理器。有关其使用和安装的更多信息,请访问官方网站。

要使用 CocoaPods 在项目中使用 Braspag Apple Pay SDK,请将以下代码添加到您的项目 Podfile

pod 'BraspagApplePay', '~> 1.0.0'

在将 Braspag Apple Pay 添加到 Podfile 后,只需在项目文件夹的终端中打开终端并执行以下命令:pod install.

使用方法

配置

要开始使用SDK进行开发,需要在您的ViewController中添加一个类型为BraspagApplePayProtocol的变量,如下所示

var braspagApplePay: BraspagApplePayProtocol!

此协议只有一个需要实现的契约,我们将在文档的后续部分讨论它。

要实例化braspagApplePay变量,我们将使用以下方法

braspagApplePay = BraspagApplePay.createInstance(currencyCode: "BRL",
                                                 countryCode: "BR",
                                                 merchantId: "ID-CADASTRADO-NO-APPSTORECONNECT",
                                                 viewDelegate: self)

注意:参数currencyCodecountryCode的默认值分别为"BRL""BR",因此可以在调用中省略,如下面的代码片段所示

braspagApplePay = BraspagApplePaycreateInstance(merchantId: "ID-CADASTRADO-NO-APPSTORECONNECT",
                                                viewDelegate: self)

在实例化braspagApplePay对象时,我们可以在参数viewDelegate中看到需要提供一个值。此参数是实施支付解决方案的ViewController的引用。

为了使此参数正常工作,我们需要实现BraspagApplePayViewControllerDelegate委托,该委托负责接收Apple Pay的返回值。

此委托有3个需要实现的方法。它们是

  • func displayAlert(title: String, message: String) {}:该方法负责显示SDK返回的消息。这些消息可以是错误信息,也可以是成功信息。

    • 实现建议
    func displayAlert(title: String, message: String) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
        let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
        alert.addAction(okAction)
        
        present(alert, animated: true)
    }
  • func presentAuthorizationViewController(viewController: UIViewController):在此方法中,我们接收一个UIViewController对象,即用于支付确认的SDK支付弹出窗口(见图1)。

    Imagem 1: Popup de pagamento padrão do Apple Pay

    • 实现建议
    func presentAuthorizationViewController(viewController: UIViewController) {
        present(viewController, animated: true, completion: nil)
    }
  • func dismissPaymentAuthorizationViewController():如名称所示,这是在此关闭SDK支付弹出窗口的地方。

    • 实现建议
    func dismissPaymentAuthorizationViewController() {
        dismiss(animated: true, completion: nil)
    }

为了更完整地了解解决方案,请参阅该存储库中的示例项目。

完成支付

完成上述配置后,您的项目将准备好调用用于进行支付的调用。要开始支付,只需调用前面提到的合约方法,即makePayment

此合约有3个参数,其中两个是必需的,一个是可选的。以下是对每个参数的简要说明

  • itemDescription: String (必需):产品名称。

  • amount: Double (必需):产品价值。例如:如果是BRL,则110.90表示R$ 110,90。

  • contactInfo: ContactInfo (可选):付款人的联系信息。在此对象中还可以提供收货和寄送地址。如果未提供此参数contactInfo,则Apple Pay将使用device上登录的Apple ID的数据。收货和寄送地址在contactInfo对象中是可选的。为了清楚地理解使用此参数的规则和重要性,以下是一个简短的说明:

    • 告知 contactInfo 包含地址:选择这个选项时,Apple Pay 将会在支付确认时提示您添加地址(见图2)。只有在您提供了所需的地址后,支付按钮才会启用。

    Imagem 2: Popup de pagamento do Apple Pay solicitando endereços

    • 告知 contactInfo 包含 地址:在输入地址时,如果需要,Apple Pay 会提供添加新地址的选项。(见图3和图4)。一个重要注意事项是:收货地址具有高于送货地址的优先级,因此,如果收货地址和送货地址相同,您只需提供收货地址,它会自动用作送货地址。

    Imagem 3: Popup de pagamento do Apple Pay com endereços customizados

    Imagem 4: Popup de pagamento do Apple Pay - adicionar novo endereço

理解了 makePayment 方法的参数后,现在可以使用该方法进行支付。下面是一些使用该方法的示例代码片段:

不提供 contactInfo

braspagApplePay.makePayment(itemDescription: "Meu produto", amount: 150.30, contactInfo: nil)

提供 contactInfo

let contact = ContactInfo(firstName: "Comprador",
                          lastName: "Desconhecido",
                          email: "[email protected]",
                          phoneNumber: "987654321")
        
braspagApplePay.makePayment(itemDescription: "Meu produto", amount: 2000, contactInfo: contact)

提供 contactInfo 和收货地址

let billingAddress = AddressInfo(street: "Rua A", city: "Cidade A", state: "Estado A", postalCode: "29100000")

let contact = ContactInfo(firstName: "Comprador",
                          lastName: "Desconhecido",
                          email: "[email protected]",
                          phoneNumber: "987654321",
                          billingAddress: billingAddress)
        
braspagApplePay.makePayment(itemDescription: "Meu produto", amount: 2000, contactInfo: contact)

完成这些步骤后,支付将被处理,并在 displayAlert 代理方法中接收返回值。