Node.js 无法将从walletpass api创建的过程转换为数据
我得到的是:我创建了两个证书,一个是signerCertificate,一个是signerKey,并将它们转换成.pem文件。它们可以工作,我可以在Mac终端上的控制台中对通行证进行签名以创建pkpass。所以证书有效,我需要将其添加到我的应用程序中,并编辑pass中的一些字段,因此我决定使用它来设置我的后端证书标牌。因此,我实现了所有必要的文档步骤,在您知道之前,我可以创建我认为是一个pass bc,它打印在控制台日志中,如下面的代码所示 问题就从这里开始。我试图将pass数据返回到前端,如下所示。无论我从前端的文档返回什么变化,它都不会转换为数据或NSData。那么我的目标是什么?我已经生成了pass模板,它返回了一些pass数据,但我一直试图在前端将其转换为数据,使其成为一个pkpass,我可以在应用程序中为用户打开它!我和我的同事想尽一切办法来解决这个问题,但我们已经走到了死胡同 如果您有任何建议,请在下面留下。请参阅下面所有附加的截图和代码 节点JS Api调用Node.js 无法将从walletpass api创建的过程转换为数据,node.js,swift,wallet,passkit,pkpass,Node.js,Swift,Wallet,Passkit,Pkpass,我得到的是:我创建了两个证书,一个是signerCertificate,一个是signerKey,并将它们转换成.pem文件。它们可以工作,我可以在Mac终端上的控制台中对通行证进行签名以创建pkpass。所以证书有效,我需要将其添加到我的应用程序中,并编辑pass中的一些字段,因此我决定使用它来设置我的后端证书标牌。因此,我实现了所有必要的文档步骤,在您知道之前,我可以创建我认为是一个pass bc,它打印在控制台日志中,如下面的代码所示 问题就从这里开始。我试图将pass数据返回到前端,如下
const { Template } = require("@walletpass/pass-js");
exports.createTicket = functions.https.onCall(async (data, context) => {
const key = "-----BEGIN CERTIFICATE-----MIIF/jCCBOagaeYE=-----END CERTIFICATE-----"
const template = new Template("eventTicket", {
passTypeIdentifier: "pass.com.passllc.eventCard",
teamIdentifier: "ABCDEFGHI",
organizationName : "Scenes",
backgroundColor: "red",
sharingProhibited: true
});
await template.images.add("icon", "./models/icon.png");
await template.images.add("logo", "./models/logo.png");
template.setCertificate(key);
template.setPrivateKey("-----BEGIN ENCRYPTED PRIVATE KEY-----MIIFDj0I=-----END ENCRYPTED PRIVATE KEY-----", "passphrase");
const pass = template.createPass({
serialNumber: "123456",
description: "20% off"
});
console.log(pass);
return {
status: '200',
type: "application/vnd.apple.pkpass",
body: await pass.asBuffer(),
};
});
前端代码
functions.httpsCallable("createTicket").call(["test": "dummytext"]) { (result, error) in
if let data = result?.data as? [String: Any] {
let jsonData = try? JSONSerialization.data(withJSONObject: data)
do {
var passError: NSError?
var newPass = try PKPass(data: jsonData as! Data, error: &passError)
print("pkpassage: \(newPass)")
let addController = PKAddPassesViewController(pass: newPass)
addController.delegate = self
self.present(addController, animated: true)
} catch {
}
}
if (error as NSError?) != nil {
print("\(error?.localizedDescription) lower error")
}
}
当前输出的内容
前端控制台(Xcode)
后端控制台(服务器日志)只是单个调用的整个日志的一小部分
;
顺便说一句,我也试过这两种情况,但它们仍然无法转换为pkpass:
当我在前端Xcode控制台中以字符串形式打印返回的过程时,我还想添加如下内容:它打印的内容类似于[23443455493828]。
正如您所看到的,由于控制台正在记录它,所以看起来好像正在生成一个过程,只是我无法将它转换为可以转换为pkpass的数据。我真的很感谢你们的帮助,谢谢你们 拿一个原始的.pkpass包,试着在Mac上打开它。如果捆绑包有任何问题,控制台日志将告诉您。在Xcode中,nil值的一个可能原因是您的pass bundle有问题。获取一个原始的.pkpass bundle并尝试在Mac上打开它。如果捆绑包有任何问题,控制台日志将告诉您。在Xcode中,nil值的一个可能原因是您的pass bundle有问题。