Node.js 无法将从walletpass 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数据返回到前端,如下

我得到的是:我创建了两个证书,一个是signerCertificate,一个是signerKey,并将它们转换成.pem文件。它们可以工作,我可以在Mac终端上的控制台中对通行证进行签名以创建pkpass。所以证书有效,我需要将其添加到我的应用程序中,并编辑pass中的一些字段,因此我决定使用它来设置我的后端证书标牌。因此,我实现了所有必要的文档步骤,在您知道之前,我可以创建我认为是一个pass bc,它打印在控制台日志中,如下面的代码所示

问题就从这里开始。我试图将pass数据返回到前端,如下所示。无论我从前端的文档返回什么变化,它都不会转换为数据或NSData。那么我的目标是什么?我已经生成了pass模板,它返回了一些pass数据,但我一直试图在前端将其转换为数据,使其成为一个pkpass,我可以在应用程序中为用户打开它!我和我的同事想尽一切办法来解决这个问题,但我们已经走到了死胡同

如果您有任何建议,请在下面留下。请参阅下面所有附加的截图和代码

节点JS Api调用

 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有问题。