【问题标题】:PKAddPassPaymentRequest not able to send a RequestPKAddPassPaymentRequest 无法发送请求
【发布时间】:2018-10-30 08:31:44
【问题描述】:

我正在开发 Apple Pay Card Provisioning Apple Pay In-App Provisioning Card 我得到了这个功能,在尝试以下面的格式发送 PKAddPassPaymentRequest 后,我​​继续从 Apple 服务器获取 nonce 和 nonceSignatures 没有得到任何东西是格式正确的我米发送

PKAddPaymentPassRequest *request = [[PKAddPaymentPassRequest alloc] init];
request.encryptedPassData =[@"XXXXXXXXXXX" dataUsingEncoding:NSUTF8StringEncoding];
request.activationData =[@"XXXXXXXXXXX" dataUsingEncoding:NSUTF8StringEncoding];
request.ephemeralPublicKey =[@"XXXXXXXXXXX" dataUsingEncoding:NSUTF8StringEncoding];

提前致谢。

【问题讨论】:

    标签: objective-c applepay wallet


    【解决方案1】:

    先决条件:获取所有权利和更新的配置文件。您只能通过 testflight 或 appstore 将推送配置测试到生产环境。您可以从 Apple 向您的设备请求沙盒环境。他们可以通过安装配置文件在您的设备中启用 QA 环境。然后,您也可以在 QA 环境中测试推送配置。

    满足所有要求后,

    1.创建配置并填写所需的详细信息

    PKAddPaymentPassRequestConfiguration *config= 
         [[PKAddPaymentPassRequestConfiguration alloc] 
           initWithEncryptionScheme:PKEncryptionSchemeECC_V2];
    

    2。创建 PKAddPaymentPassViewController 并呈现它

    self.addPaymentPassModal = 
         [[PKAddPaymentPassViewController alloc]
           initWithRequestConfiguration:config delegate:self];
    

    3.实现委托方法。

    - (void)addPaymentPassViewController:(PKAddPaymentPassViewController *)controller 
    generateRequestWithCertificateChain:(NSArray<NSData *> *)certificates
                               nonce:(NSData *)nonce
                      nonceSignature:(NSData *)nonceSignature
                   completionHandler:(void(^)(PKAddPaymentPassRequest *request))handler {
    
      PKAddPaymentPassRequest *paymentPassRequest = [[PKAddPaymentPassRequest alloc] init];
    
      paymentPassRequest.encryptedPassData = [[NSData alloc]
                    initWithBase64EncodedString:encryptedPassData options:0];
    
      paymentPassRequest.activationData = [activationData 
                     dataUsingEncoding:NSUTF8StringEncoding];
    
      paymentPassRequest.ephemeralPublicKey = [[NSData alloc] 
                     initWithBase64EncodedString:ephemeralPublicKey options:0];
    
      handler(paymentPassRequest);
    
    }
    
    - (void)addPaymentPassViewController:(PKAddPaymentPassViewController *)controller
          didFinishAddingPaymentPass:(nullable PKPaymentPass *)pass
                               error:(nullable NSError *)error {
    
     //Will get called once push provisioning complete
    
    }
    

    【讨论】:

    • 谢谢你,我实现了它对我有帮助。
    • 嗨,我正在实现相同的功能。我已将卡详细信息传递给 PKAddPaymentPassViewController 并提交。但是在单击下一步按钮时,我收到一条错误消息,提示“无法添加卡。稍后再试或联系您的发卡行以获取更多信息”。你是我做错了什么吗?正如您上面提到的,我也编写了委托方法。我在哪里获得证书、nonce 和 nonce 签名?
    • 点击下一步,控件将返回到下面的委托方法,包括随机数、随机数签名和证书链。 (void)addPaymentPassViewController:(PKAddPaymentPassViewController *)controller generateRequestWithCertificateChain:(NSArray *)certificates nonce:(NSData *)nonce nonceSignature:(NSData *)nonceSignature completionHandler:(void(^)(PKAddPaymentPassRequest *request))handler 然后你必须创建PKAddPaymentPassRequest 与上面提到的这些数据。
    • @booleanBoy 是我实现的。很多东西必须从卡提供商那里做,并且只能在生产环境中使用试飞进行测试。从服务器端加密也应该是正确的。必须遵循 Apple 为 App 和 Server 提供的文档。最好使用 ECC 模式。
    • @RajeshRajendranPillai - 你们如何将 Apple 的证书传回自己的服务器?您是否只是将数据直接转换为 base64 并将其发送出去?还是您需要先在应用中进行任何转换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2015-04-22
    • 2021-01-08
    相关资源
    最近更新 更多