Apple Pay编程指南(4) - 支付授权

Apple Pay 系列文章是苹果官方文档的中文翻译,这将是最详尽最规范的说明。
原文链接:
苹果开发文档

Apple Pay编程指南(1) - 简介
Apple Pay编程指南(2) - 环境配置
Apple Pay编程指南(3) - 创建支付请求
Apple Pay编程指南(4) - 支付授权
Apple Pay编程指南(5) - 处理付款结果
Apple Pay编程指南(6) -沙盒测试

支付授权过程是支付授权视图控制器及其代理之间的合作工作。支付授权视图控制器做两件事:1. 让用户选择支付请求所需的账单和发货信息,2. 让用户授权支付。当用户与视图控制器交互时,将调用代理方法,以便您的应用程序可以更新显示的信息——例如,在选择送货地址时更新送货价格。在用户授权支付请求之后,还会调用代理。

注意:在实现委托方法时,请记住可以多次调用它们,并且调用它们的顺序取决于用户操作的顺序。

在授权过程中调用的所有代理方法都会传递一个completion block。付款授权视图控制器在调用任何其他委托方法之前,等待其委托完成对一个方法的响应(通过调用completion block)。paymentAuthorizationViewControllerDidFinish:方法是个例外:它不回传completion block,并且可以在任何时候调用它。

completion block接受一个参数,该参数允许您根据可用的信息指定事务的当前状态。如果交易没有问题,您将传递PKPaymentAuthorizationStatusSuccess值;否则,传递一个标识问题的值。

要创建PKPaymentAuthorizationViewController类的实例,请将付款请求传递给视图控制器的初始化器。为视图控制器设置代理,然后present它。

注意:
PKPaymentAuthorizationController类执行与PKPaymentAuthorizationViewController类相同的角色,但它不依赖于UIKit框架。这意味着授权控制器可以用于视图控制器不能使用的地方(例如,在watchOS应用程序或intent扩展中)。
要使用PKPaymentAuthorizationController类,请设置一个遵循PKPaymentAuthorizationControllerDelegate协议的代理。调用presentWithCompletion:方法来显示付款表。当您完成时,调用withcompletion:方法来取消付款表。api是相同的。

PKPaymentAuthorizationViewController *viewController = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
if (!viewController) { /* ... Handle error ... */ }
viewController.delegate = self;
[self presentViewController:viewController animated:YES completion:nil];

通过代理方法更新你的地址和金额

当用户提供了地址信息时,授权控制器会调用两个代理方法:

paymentAuthorizationViewController:didSelectShippingContact:completion:
paymentAuthorizationViewController:didSelectShippingMethod:completion:

在代理方法中更新支付请求的信息。

- (void) paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                   didSelectShippingContact:(CNContact *)contact
                                 completion:(void (^)(PKPaymentAuthorizationStatus, NSArray *, NSArray *))completion
{
    self.selectedContact = contact;
    [self updateShippingCost];
    NSArray *shippingMethods = [self shippingMethodsForContact:contact];
    completion(PKPaymentAuthorizationStatusSuccess, shippingMethods, self.summaryItems);
}
 
- (void) paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                    didSelectShippingMethod:(PKShippingMethod *)shippingMethod
                                 completion:(void (^)(PKPaymentAuthorizationStatus, NSArray *))completion
{
    self.selectedShippingMethod = shippingMethod;
    [self updateShippingCost];
    completion(PKPaymentAuthorizationStatusSuccess, self.summaryItems);
}

注意:
为了维护隐私,paymentAuthorizationViewController:didSelectShippingContact:completion:中提供的发货信息是匿名的。返回的联系人包含足够的信息来计算运费,而不显示用户的敏感信息。直到用户批准付款后,才会获得用户的完整发货信息。此外,联系人中可用的数据因国家而异,并且可以随发布版本而异。确保适当地测试您的应用程序。

支付授权后会生成一个token

当用户授权一个支付请求时,framework通过与苹果的服务器和Secure Element调创建一个支付令牌。您可以在paymentAuthorizationViewController:didAuthorizePayment:completion: delegate方法中向开发者自己公司的服务器发送这个支付令牌,以及处理购买所需的任何其他信息—例如,送货地址和购物车标识符。过程如下:

  1. framework将付款请求发送到Secure Element。只有Secure Element才能访问经过标记的特定于设备的付款卡号。
  2. Secure Element将指定的卡和商户的支付数据放在一起,对其进行加密,以便只有苹果才能读取数据,并将其发送到framework。然后,framework将支付数据发送到苹果的服务器。
  3. 苹果的服务器使用您的支付处理证书(Payment Processing certificate)重新加密支付数据。token只能由您和与您共享支付处理证书的人读取。然后服务器签署支付token,并将其返回给设备。
  4. framework通过调用其paymentAuthorizationViewController:didAuthorizePayment:completion:方法将令牌传递给代理。代理将token发送到开发者自己公司的服务器。

服务器上的操作,取决于你们公司是自己处理订单还是用其他支付平台。不管是哪种情况,你们的服务器都要在处理之后向手机返回状态,具体操作见下节Apple Pay编程指南(5) - 处理付款结果

- (void) paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                        didAuthorizePayment:(PKPayment *)payment
                                 completion:(void (^)(PKPaymentAuthorizationStatus))completion
{
    NSError *error;
    ABMultiValueRef addressMultiValue = ABRecordCopyValue(payment.billingAddress, kABPersonAddressProperty);
    NSDictionary *addressDictionary = (__bridge_transfer NSDictionary *) ABMultiValueCopyValueAtIndex(addressMultiValue, 0);
    NSData *json = [NSJSONSerialization dataWithJSONObject:addressDictionary options:NSJSONWritingPrettyPrinted error: &error];
 
    // ... Send payment token, shipping and billing address, and order information to your server ...
 
    PKPaymentAuthorizationStatus status;  // From your server
    completion(status);
}

处理完成之后再代理方法中dismiss控制器

framework显示交易状态后,授权视图控制器调用代理的paymentAuthorizationViewControllerDidFinish:方法。在您的实现中,dismiss授权视图控制器,然后显示您自己的特定于应用程序的订单确认页面。

- (void) paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller
{
    [controller dismissViewControllerAnimated:YES completion:nil];
}

示例:LGApplePayDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apple Pay H5是苹果公司推出的一种移动支付解决方案,可以让用户通过手机在网页上完成支付。它结合了苹果设备的安全功能和苹果支付平台的便利性,为用户提供更快速、更安全的在线支付体验。 使用Apple Pay H5进行支付非常简单。用户只需在支持Apple Pay H5的网站上选择使用Apple Pay进行支付,然后通过苹果设备上的Touch ID或Face ID进行身份验证。一旦身份验证成功,支付信息通过加密方式传输到支付平台完成交易,无需输入信用卡或账号信息,极大地提升了支付安全性。 除了便捷和安全性,Apple Pay H5还提供了更好的支付体验。用户可以在购物流程中使用苹果设备的钱包应用来管理他们的支付卡,包括信用卡、借记卡和礼品卡,简化了支付过程。用户无需记住各种账号和密码,只需使用已经保存在苹果设备中的支付卡信息即可完成支付Apple Pay H5也具有广泛的适用性。作为一种跨平台解决方案,它支持不同的浏览器和操作系统,用户无需担心兼容性问题。因此,商家在接入Apple Pay H5后,可以为更多的用户提供便捷的支付方式,吸引更多的消费者。 综上所述,Apple Pay H5是苹果公司推出的一种移动支付解决方案,具有便捷、安全和良好的适应性。它为用户提供了更好的支付体验,为商家提供了更多的支付选择,有助于推动移动支付的普及和发展。 ### 回答2: Apple Pay H5是苹果公司推出的一种支付方式。它结合了苹果的iOS系统和移动网页技术,使用户可以在网页上使用Apple Pay进行支付。 与传统的Apple Pay相比,Apple Pay H5无需下载和安装特定的App,只需要在支持Apple Pay的网站上选择Apple Pay作为支付方式,并使用设备上保存的信用卡或借记卡信息进行支付。用户在支付过程中需要使用设备上的Touch ID或Face ID进行身份验证,确保安全性和可靠性。 通过Apple Pay H5,用户可以在电商平台上更方便地完成购买。与传统的输入个人信用卡信息不同,Apple Pay H5直接使用用户在Apple Wallet中保存的卡片信息,减少了输入信息的复杂性,提高了支付速度。 Apple Pay H5具有很高的安全性。苹果公司采用了多层次的安全措施,包括设备上的Touch ID和Face ID、设备和Apple服务器之间的加密信道等,确保用户的支付信息不会被泄露或被盗用。 Apple Pay H5目前已经在一些电商平台上得到了广泛应用。用户只需要使用支持Apple Pay的浏览器,即可享受快捷、安全的支付体验。对于商家来说,集成Apple Pay H5可以提高用户支付的便利性和购买欲望,增加交易成功率。 总之,Apple Pay H5是一种方便、安全的支付方式,通过结合iOS系统和移动网页技术,为用户提供了更好的支付体验。 ### 回答3: Apple Pay H5是苹果公司推出的一种线上支付解决方案。它结合了Apple Pay和H5技术,使用户能够通过手机或其他移动设备进行线上支付Apple Pay是一种近场通信(NFC)支付技术,旨在提供便捷、安全的支付方式。用户可以在支持Apple Pay的商家店铺中,使用iPhone或Apple Watch进行支付。只需将设备靠近POS机,通过指纹识别或Face ID(面容识别)进行身份验证即可完成支付。这一技术在线下支付场景中得到了广泛应用。 而H5技术是一种基于网页的开发技术,允许开发者在不需要用户下载和安装应用的情况下,通过网页实现一系列交互功能。因此,Apple Pay H5是将Apple Pay应用于网页支付的一种解决方案。 Apple Pay H5的成功无疑为用户提供了更便利、快捷的支付方式。用户可以通过打开支持Apple Pay H5的商户网站,选择Apple Pay作为支付方式,并通过手机或其他移动设备完成支付。而无需下载安装应用程序,可以节省用户的存储空间和下载时间。 此外,Apple Pay H5也提供了更高的安全性。借助借助Apple Pay的安全机制,用户可以通过指纹识别或面容识别进行身份验证,避免了传统网页支付中输入密码可能存在的风险,提供了更加安全的支付环境。 综上所述,Apple Pay H5是一种结合了Apple Pay和H5技术的线上支付解决方案。它既具有Apple Pay的便捷和安全性,又能够通过网页实现支付功能,为用户提供更快捷、便利的支付体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值