Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以编程方式向用户添加信用卡/银行卡';苹果钱包_Ios_Applepay_Wallet_Apple Wallet - Fatal编程技术网

Ios 以编程方式向用户添加信用卡/银行卡';苹果钱包

Ios 以编程方式向用户添加信用卡/银行卡';苹果钱包,ios,applepay,wallet,apple-wallet,Ios,Applepay,Wallet,Apple Wallet,我在一家银行工作,我正在做一个项目,通过编程将用户的信用卡/银行卡添加到他们的苹果钱包中。这张卡是我们银行发行的 我们的应用程序已经拥有com.apple.developer.payment-pass-provisioning权限。我能够填充配置并调用PKAddPaymentPassViewController。模式正确加载,一旦用户单击next,我就会得到一个带有证书、nonce和nonesignature的响应 我现在尝试调用PKAddPaymentPassRequest,它需要activa

我在一家银行工作,我正在做一个项目,通过编程将用户的信用卡/银行卡添加到他们的苹果钱包中。这张卡是我们银行发行的

我们的应用程序已经拥有com.apple.developer.payment-pass-provisioning权限。我能够填充配置并调用PKAddPaymentPassViewController。模式正确加载,一旦用户单击next,我就会得到一个带有证书、nonce和nonesignature的响应

我现在尝试调用PKAddPaymentPassRequest,它需要activationData、encryptedPassData、wrappedKey、EphemeralPublicey字段

我正在阅读这里的文档

我的理解是,应用程序需要将证书、nonce和nonesignature传递给我们的api,然后api使用这些证书加密信用卡信息等。我们的api将以activationData、encryptedPassData、wrappedKey、,然后应用程序可以使用该数据调用PKAddPaymentPassRequest来完成该过程

我不确定从哪里开始api方面。如何使用证书正确生成所需的加密字符串?支付通行证的json格式是什么?有很多不同通行证的例子,但没有付款通行证

是否有获取证书并生成encryptedPassData和其他字段的示例代码?我看到developer.apple.com上有一些通行证示例代码,但没有任何支付通行证示例代码

这个问题是我能找到的最接近我所问的问题。有一些关于服务器端实现的评论,但答案不清楚


您可以通过在服务器端创建.pkpass将信用卡添加到apple wallet中

然后在ios端下载该文件,并将其添加到ios钱包中

下面是使用完成处理程序从服务器下载.pkpass(passbook文件)的代码,并显示pkpassviewcontroller以进一步添加到apple钱包中

  import PassKit


let url : NSURL! = NSURL(string: "YOUR .pkpass URL GOES HERE")
        let request: NSURLRequest = NSURLRequest(url:
            url as URL)
        let config = URLSessionConfiguration.default
        let session = URLSession(configuration: config)

    let task : URLSessionDataTask = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in

        var error: NSError?
        let pass = try? PKPass(data: data!, error: &error)
        if error != nil {
            DispatchQueue.main.async {
                let alertView = UIAlertView(title: "Error", message: (error?.localizedDescription)!, delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "Cancel")
                alertView.show()
            }
        }
        else {
            let passLibrary = PKPassLibrary()
            if passLibrary.containsPass(pass!) {
                DispatchQueue.main.async {
                    let alertView = UIAlertView(title: "Already Exist", message: "This pass already added in wallet. Thanks!", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "Cancel")
                    alertView.show()
                    self.hideLoading()
                }
            } else {
                let pkvc = PKAddPassesViewController(pass: pass!)
                pkvc.delegate = self
                self.present(pkvc, animated: true, completion: {() -> Void in
                    // Do any cleanup here
                    self.hideLoading()
                })

            }
        }

    })
    task.resume()
用于为iOS钱包应用程序创建通行证的PHP库


实施细节被视为机密信息,您必须联系苹果公司获取适当的文档

@s-p-balu-kommur您似乎对此有经验。有什么想法吗?@luca taccagni也请参考:我将用C#写这篇文章,但我可能会通过查看这个php项目得到我需要的东西。链接和这个php项目给了我很多可以使用的东西。我会让你知道的。谢谢如果你觉得合适的话,接受ans。如果答案正确,我会的。看起来这是普通通行证,不是付款通行证。付款通行证不能使用pkpass。这就是我问这个问题的原因。支付通行证似乎与普通通行证有很大不同。该解决方案不起作用,因为它只适用于普通通行证,而不适用于支付通行证。支付通行证有一个非常不同的工作流程。