PayPalHereSDK 1.6.11

PayPalHereSDK 1.6.11

许可证 未知
发布最后发布2018年7月

Shu Ashar维护。



  • PayPal

简介

PayPal Here SDK 允许 iOS 应用使用非接触式/EMV 芯片卡读卡器或磁条卡滑轨处理现场信用卡交易。PayPal Here SDK 的本地库允许您

  • 与 PayPal 硬件交互 — 侦测、连接并监听来自 PayPal Here 音频插孔式卡滑轨的事件。
  • 处理持卡人支付 — 当您通过 PayPal Here 滑轨刷卡时,卡数据会被立即加密。加密包可以与交易数据一起发送到 PayPal 处理。

开发者应使用 PayPal Here SDK 来实现极简集成的高质量支付流程。主要优势包括

  • 低廉、透明定价:美国商家每笔交易支付仅为 2.7%(或输入交易为 3.5% + 0.15 美元),包括美国运通等卡,无额外隐藏或月费。
  • 安全与安全:PayPal 的解决方案使用加密滑轨,确保卡数据永远不会对商家或任何其他人可用。
  • 现场客户支持:无论何时需要支持,我们都有客户支持团队可供帮助。访问我们的网站,获取更多关于 PayPal Here 的信息。

作为 SDK 的替代方案,开发者也可以使用 URI 框架,允许一个应用(或移动网页)直接链接到 PayPal Here 应用以完成支付。使用此方法,商家在另一个应用中轻触按钮或链接,将打开设备上预安装的 PayPal Here 应用,PayPal Here 应用将预先填充原始订单信息,在 PayPal Here 应用中收集支付(刷卡),并将商家返回到原始应用/网页。此功能适用于美国的 iOS 和 Android 以及英国、澳大利亚和日本的 Android。

支持材料

安装

我们推荐使用Cocoapods进行安装,使用命令pod 'PayPalHereSDK'

您也可以使用不同的pod subspec将PayPalHereSDK切换到发布或'无硬件'构建,使用命令pod 'PayPalHereSDK/Release'

如果您更喜欢手动集成,可以将步骤记录在项目配置指南中,以便正确设置您的应用程序。

身份验证

  1. 设置一个PayPal开发者账户(在此处注册)并为使用PayPal Here SDK配置一个应用程序。有关如何正确配置应用程序的信息,请参阅PayPal Here SDK集成文档

  2. 部署和配置零售SDK身份验证服务器或手动协商PayPal OAuth2流程以获取登录所需的令牌。

有关如何帮助您的商家注册PayPal商业账户并将它们链接到后台软件的建议,请参阅我们的商家上线指南

SDK初始化

  • 如果您使用的是磁条读卡器,并且希望使用沙盒环境,请配置环境。有关PayPal沙盒环境的更多信息,请参阅沙盒概述
[PayPalHereSDK selectEnvironmentWithType:ePPHSDKServiceType_Sandbox];
  • 使用您的凭据设置SDK商家。
// Either with raw tokens...
[PayPalHereSDK setupWithCredentials:refreshUrl:tokenExpiryOrNil:thenCompletionHandler:];

// Or by digesting the response from paypal-retail-node...
[PayPalHereSDK setupWithCompositeTokenString:thenCompletionHandler:];

发票

PayPal Here SDK 中的发票定义了我们使用 PayPal API 进行交互的订单。它们提供了与网站的同步、总额计算等更多强大功能。

为了接收支付,我们首先需要创建一个发票,它可以像您的用例要求的那样简单或复杂。最简单的用例是为单个非细目金额创建发票

PPHInvoice *myOneDollarInvoice = [[PPHInvoice alloc] initWithItem:@"Total" forAmount:[PPHAmount amountWithDecimal:[NSDecimalNumber one]]];

接收支付

PayPal Here SDK 提供多种方式来接收支付。本文将仅涵盖 PPHTransactionManager 的 "UI" 方法的使用。这些方法为您自动处理支付过程的许多方面,包括

  • 读卡器连接和激活
  • 监听卡片事件
  • 复杂的 EMV 流程
  • 签名输入 UI 和传输
  • Receipt 目的地 UI 和传输

使用这些 API 执行卡片现场交易的步骤很简单

  1. 实现 PPHTransactionControllerDelegate 协议
  2. 调用 [[PayPalHereSDK sharedTransactionManager] beginPaymentUsingUIWithInvoice:transactionController:]; 以启用读卡器,开始监视发票,并开始接收您实现 PPHTransactionControllerDelegate 的更新。
  3. 当您希望启用 NFC 支付时,调用 [[[PayPalHereSDK sharedTransactionManager] activateReaderForPayments:发自简书ReaderManager]]
  4. 当读卡器检测到卡片已经出现时,您将收到 PPHTransactionControllerDelegate 上的 userDidSelectPaymentMethod: 调用。您可以使用这个机会在授权支付之前进行任何更改(例如,请求用户的小费)。
  5. 调用 [[PayPalHereSDK sharedTransactionManager] processPaymentUsingUIWithPaymentType:completionHandler:] 以授权支付。
  6. 当您的完成处理程序被调用时,重置导航堆栈。

这个示例看起来像

////////////////////////////////////////////////////////////////////////////////////////////////////
@implementation MyTransactionViewController

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
 
    PPHInvoice *sampleInvoice = [[PPHInvoice alloc] initWithItem:@"Falcon Punch!" forAmount:[PPHAmount amountWithString:@"1.00"]];
    [[PayPalHereSDK sharedTransactionManager] beginPaymentUsingUIWithInvoice:sampleInvoice
                                                       transactionController:self];
}


- (void)userDidSelectPaymentMethod:(PPHPaymentMethod) paymentOption {
    [[PayPalHereSDK sharedTransactionManager] processPaymentUsingUIWithPaymentType:paymentOption
                                                                 completionHandler:^(PPHTransactionResponse *response) {
                                                                     if (response.error) {
                                                                         NSLog(@"Transaction failed!");
                                                                     } else {
                                                                         NSLog(@"Transaction successful!");
                                                                     }
                                                                     
                                                                     [self.navigationController popToViewController:self animated:YES];
                                                                 }];
}

- (void)userDidSelectRefundMethod:(PPHPaymentMethod) refundOption {
    
}

- (UINavigationController *)getCurrentNavigationController {
    return self.navigationController;
}

@end

您可以根据需要实现 PPHTransactionControllerDelegate 的各种可选方法,以在适当的地方影响支付流程。

接收退款的方式非常相似。

读卡器

尽管 PPHTransactionManager 能够独立管理读卡器,但在某些情况下,您可能需要更多关于读卡器的信息或更细粒度的控制。此功能由 PPHCardReaderManager 提供。

读卡器元数据

有关过去和当前读卡器类型、功能、名称等信息可以以 PPHCardReaderMetadata 对象的形式访问。

NSLog(@"The active card reader's type is: %d", [[PayPalHereSDK sharedCardReaderManager] activeReader].readerType);

NSLog(@"The last bluetooth reader that was available was named %@", [[PayPalHereSDK sharedCardReaderManager] lastAvailableReaderOfType:ePPHReaderTypeChipAndPinBluetooth].friendlyName);

NSLog(@"The active card reader has %d%% battery remaining.", [[PayPalHereSDK sharedCardReaderManager] activeReader].batteryInfo.level);

读卡器事件

如果希望监控读卡器事件(如连接、元数据更新和磁条交互),只需实现各种 PPHCardReaderDelegate 协议方法并分配一个 PPHCardReaderWatcher 即可。

@implementation MyCardReaderDelegate

- (instancetype)init {
    if (self = [super init]) {
        self.cardReaderWatcher = [[PPHCardReaderWatcher alloc] initWithDelegate:self];
    }

    return self;
}

-(void)didDetectReaderDevice:(PPHCardReaderMetadata *)reader {
    NSLog(@"Reader with name %@ detected!", reader.friendlyName);
}


@end

更多信息查看

PayPal Here SDK 中还有更多可用功能。关于其他功能详情请参阅我们的 开发者文档。这些功能包括

  • 授权/捕获:不是一次性销售,而是通过刷卡授权付款,并在稍后完成交易。这在交易完成后添加小费(例如在餐厅中)时很常见。
  • 退款:使用 SDK 来退款交易
  • 发送收据:您可以通过 SDK 使用服务向客户发送电子邮件或短信收据
  • 输入:大多数应用程序需要让用户直接输入卡号,以防卡的服务条形码数据无法读取。
  • 收银员ID:包含您自己的唯一用户标识符以跟踪商家的员工使用情况
  • 错误处理:了解更多关于可能返回的不同类型错误
  • 营销工具包:可下载的营销资产——从电子邮件到横幅广告——帮助您快速有效地推广您应用的新支付功能。

应用审查信息

只有 PayPal Here SDK 的发布版本才有资格发布到 App Store。如果您提交带调试版本的应用进行审核,则您的应用将被拒绝。要使用 Cocoapods 安装发布版本,请使用:pod 'PayPalHereSDK/Release'

提交您的应用时,您可能需要加入 Apple MFi 项目。为了完成注册,请完成 MFi 注册表 并将其发送至 [email protected]

请在您的 App Store 审查说明中包含以下信息

  • 此 iOS 应用程序使用蓝牙协议 "com.paypal.here.reader":PPID# 126754-0002 & PPID# 126754-0021
  • 此 iOS 应用程序使用 com.magtek.idynamo 协议的 Magtek iDynamo 读取器:PPID 103164-0003