以编程方式将 credit/bank 卡添加到用户的苹果钱包
Programmatically add a credit/bank card to a user's apple wallet
我在一家银行工作,我正在从事一个以编程方式将用户的 credit/bank 卡添加到他们的苹果钱包的项目。此卡已由我行发行。
我们的应用程序已经拥有授权 com.apple.developer.payment-pass-provisioning。我能够填充配置并调用 PKAddPaymentPassViewController。模态加载正确,一旦用户单击下一步,我就会收到包含证书、随机数和随机数签名的响应。
我现在正在尝试调用需要字段 activationData、encryptedPassData、wrappedKey、ephemeralPublicKey 的 PKAddPaymentPassRequest
我正在阅读这里的文档
https://developer.apple.com/documentation/passkit/pkaddpaymentpassrequest?language=objc
我的理解是应用程序需要将证书、随机数和 nonceSignature 传递给我们的 api 然后使用这些证书加密信用卡信息等。我们的 api 将响应activationData、encryptedPassData、wrappedKey、ephemeralPublicKey,然后应用可以使用该数据调用 PKAddPaymentPassRequest 以完成该过程。
我不确定从 api 方面开始。如何使用证书正确生成所需的加密字符串?支付通行证的 json 格式是什么?有很多不同通行证的例子,但没有支付通行证。
是否有获取证书并生成 encryptedPassData 和其他字段的示例代码?我看到 developer.apple.com 上有一些通行证示例代码,但没有任何支付通行证的示例代码。
这个问题是我能找到的最接近我要问的问题。有一些评论询问服务器端实现,但答案不清楚
您可以通过在 server-side
上创建 .pkpass 来将信用卡添加到苹果钱包中
并在 ios 端下载该文件,它将添加到 ios 钱包
这是使用完成处理程序从服务器下载 .pkpass(存折文件)并显示 pkpassviewcontroller 以进一步添加到苹果钱包的代码。
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()
PHP library to create passes for iOS wallet app
实施细节被视为机密,您必须联系 apple 以获得适当的文档
我在一家银行工作,我正在从事一个以编程方式将用户的 credit/bank 卡添加到他们的苹果钱包的项目。此卡已由我行发行。
我们的应用程序已经拥有授权 com.apple.developer.payment-pass-provisioning。我能够填充配置并调用 PKAddPaymentPassViewController。模态加载正确,一旦用户单击下一步,我就会收到包含证书、随机数和随机数签名的响应。
我现在正在尝试调用需要字段 activationData、encryptedPassData、wrappedKey、ephemeralPublicKey 的 PKAddPaymentPassRequest
我正在阅读这里的文档
https://developer.apple.com/documentation/passkit/pkaddpaymentpassrequest?language=objc
我的理解是应用程序需要将证书、随机数和 nonceSignature 传递给我们的 api 然后使用这些证书加密信用卡信息等。我们的 api 将响应activationData、encryptedPassData、wrappedKey、ephemeralPublicKey,然后应用可以使用该数据调用 PKAddPaymentPassRequest 以完成该过程。
我不确定从 api 方面开始。如何使用证书正确生成所需的加密字符串?支付通行证的 json 格式是什么?有很多不同通行证的例子,但没有支付通行证。
是否有获取证书并生成 encryptedPassData 和其他字段的示例代码?我看到 developer.apple.com 上有一些通行证示例代码,但没有任何支付通行证的示例代码。
这个问题是我能找到的最接近我要问的问题。有一些评论询问服务器端实现,但答案不清楚
您可以通过在 server-side
上创建 .pkpass 来将信用卡添加到苹果钱包中并在 ios 端下载该文件,它将添加到 ios 钱包
这是使用完成处理程序从服务器下载 .pkpass(存折文件)并显示 pkpassviewcontroller 以进一步添加到苹果钱包的代码。
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()
PHP library to create passes for iOS wallet app
实施细节被视为机密,您必须联系 apple 以获得适当的文档