我希望有更多经验的人在 Node 中使用 Shippo 的 API 可以帮助我解决这个问题。
我的最终目标是按下一个角形前端的按钮,创建装运交易,并使用交易的标签 URL 创建自定义 PDF。除了将生成的标签 URL 推送到 PDF 模板之外,一切正常。
首先,我将 Shippo 的单击标签创建示例粘贴到 Express POST 路由中。它工作得很好,生成交易,我可以通过 ping Shippo 的 API 来查看最近的交易列表并查看最近的交易。
然后,我添加了此代码示例的第 102-111 行,并用它替换了 instalabel 代码中的通用错误消息生成器,因此我当前的 app.js Shippo 事务逻辑如下所示:
shippo.transaction.create({
"shipment": shipment,
"carrier_account": "xxxxxxxxxxxxxxxxxxxxxx",
"servicelevel_token": "ups_ground",
"label_file_type": "PNG"
},function(transaction, err ){
console.log("transaction : %s", JSON.stringify(transaction, null, 4));
// print label_url and tracking_number
if(transaction.object_status == "SUCCESS") {
console.log("Label URL: %s", transaction.label_url);
console.log("Tracking Number: %s", transaction.tracking_number);
exports.label_url = transaction.label_url;
exports.tracking_number = transaction.tracking_number;
}else{
//Deal with an error with the transaction
console.log("Message: %s", transaction.messages);
}
});
我需要为刚刚创建的交易获取 label_url 和 tracking_number 并在另一个函数中使用它,但到目前为止我尝试过的一切似乎都以如下错误告终:
/src/app.js:88
if(transaction.object_status == "SUCCESS") {
^
TypeError: Cannot read property 'object_status' of null
我猜这是因为创建运输标签的功能没有导出 Shippo 发回的响应,所以我不能在其他功能中使用它……准确吗,还是我找错了树这里?作为参考,这就是七宝的回应应该是这样的:
{
"object_state":"VALID",
"object_status":"SUCCESS",
"object_created":"2014-07-25T02:09:34.422Z",
"object_updated":"2014-07-25T02:09:34.513Z",
"object_id":"ef8808606f4241ee848aa5990a09933c",
"object_owner":"shippotle@goshippo.com",
"was_test":true,
"rate":"ee81fab0372e419ab52245c8952ccaeb",
"tracking_number":"tracking_number_goes_here",
"tracking_status":null,
"tracking_url_provider":"",
"label_url":"label_url_goes_here",
"commercial_invoice_url": "",
"messages":[
],
"customs_note":"",
"submission_note":"",
"metadata":""
}
我该怎么做才能在 shippo.transaction.create 函数本身之外使用此响应中的值?
谢谢阅读。