使用Shippo的节点发货API不起作用

我正在build立一个API,今天我把我的HTML表单集成到一起。 但是,它只是说'不能发布/新船'。 哪里不对? 我的server.js:

var express = require('express') var app = express() var http = require('http'); //Shippo shipping wrapper var Raven = require('raven'); var shippo = require('shippo')('shippo_test_key'); const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); //Test app.get('/', function (req, res) { res.send('Hello World! ' + 'hey') }) app.post('/newship/', function (req, res) { var addressFrom = { "object_purpose":"PURCHASE", "name": Mr Shippotester, "company":"Shippo", "street1":"215 Clayton St.", "city":"San Francisco", "state":"CA", "zip":"94117", "country":"US", //iso2 country code "phone":"+1 555 341 9393", "email":"support@goshippo.com", }; // example address_to object dict var addressTo = { "object_purpose":"PURCHASE", "name": req.body.fnames + ' ' + req.body.lnames, "company": req.body.company, "street1":req.body.street, "city":req.body.city, "state":req.body.state, "zip":req.body.zipcode, "country": req.body.country, //iso2 country code "phone":"+1 555 341 9393", "email":"support@goshippo.com", }; // parcel object dict var parcelOne = { "length":"5", "width":"5", "height":"5", "distance_unit":"in", "weight":"2", "mass_unit":"lb" }; var shipment = { "object_purpose": "PURCHASE", "address_from": addressFrom, "address_to": addressTo, "parcel": [parcelOne], "submission_type": "DROPOFF" }; shippo.transaction.create({ "shipment": shipment, "servicelevel_token": "dhl_express_domestic_express_doc", "carrier_account": "account_id", "label_file_type": "png" }) .then(function(transaction) { shippo.transaction.list({ "rate": transaction.rate }) .then(function(mpsTransactions) { mpsTransactions.results.forEach(function(mpsTransaction){ if(mpsTransaction.object_status == "SUCCESS") { console.log("Label URL: %s", mpsTransaction.label_url); console.log("Tracking Number: %s", mpsTransaction.tracking_number); console.log("E-Mail: %s", mpsTransaction.object_owner); console.log(mpsTransaction.object_status); res.status(200).send("Label can be found under: " + mpsTransaction.label_url)); } else { // hanlde error transactions console.log("Message: %s", mpsTransactions.messages); } }); }) }, function(err) { // Deal with an error console.log("There was an error creating transaction : %s", err.detail); res.send("something happened :O") }); }) app.post('/successp', function (req, res) { var token = req.body.stripeToken; // Using Express // Charge the user's card: var charge = stripe.charges.create({ amount: 1000, currency: "eur", description: "Example charge", source: token, }, function(err, charge) { // asynchronously called }); res.send('Thanks!') }) app.post('/successp', function (req, res) { var token = req.body.stripeToken; // Using Express // Charge the user's card: var charge = stripe.charges.create({ amount: 1000, currency: "eur", description: "Example charge", source: token, }, function(err, charge) { // asynchronously called }); res.send('Thanks!') }) app.listen(3000, function () { console.log('Example app listening on port 3000!') }) 

我的HTML表单:

 <!DOCTYPE html> <html> <head> </head> <form action="https://ocelot-kgxujaijbj.now.sh/newship/" method="post"> Company (Leave blank if you don't belong to one): <input type="text" name="company"><br> First name: <input type="text" name="fnames"><br> Last name: <input type="text" name="lnames"><br> Street and Number: <input type="text" name="street"><br> City: <input type="text" name="city"><br> State: <input type="text" name="state"><br> ZIP/PLZ: <input type="text" name="zipcode"><br> Country (Please use the iso code, for example "US" for the USA or 'DE' for Germany): <input type="text" name="country"><br> <input type="submit" value="Submit"> </form> </body> </html> 

服务器是有效的,所以你自己尝试一下。 提前致谢!

您在那里提交的代码有几个错误。 另外,尽pipe它是一个testing标记,但我强烈build议您编辑代码,以便在post中省略代码。

我已经对你提供的代码进行了一些编辑,但是你只是在地址上出现了一些错误,你从addressFrom Mr. Shippotester找不到引号。 此外,你有一个额外的地方) res.status(200).send("Label can be found under: " + mpsTransaction.label_url);

我强烈build议检查你的server.js的任何错误(我会惊讶它的实际运行)。

 var express = require('express') var app = express() var http = require('http'); //Shippo shipping wrapper var Raven = require('raven'); var shippo = require('shippo')('<YOUR API TEST TOKEN>'); const bodyParser = require('body-parser'); const path = require('path'); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, '/'))); //Test app.get('/', function (req, res) { res.render('index.html'); }) app.post('/newship/', function (req, res) { var addressFrom = { "object_purpose":"PURCHASE", "name": "Mr Shippotester", "company":"Shippo", "street1":"215 Clayton St.", "city":"San Francisco", "state":"CA", "zip":"94117", "country":"US", //iso2 country code "phone":"+1 555 341 9393", "email":"support@goshippo.com", }; // example address_to object dict var addressTo = { "object_purpose":"PURCHASE", "name": req.body.fnames + ' ' + req.body.lnames, "company": req.body.company, "street1":req.body.street, "city":req.body.city, "state":req.body.state, "zip":req.body.zipcode, "country": req.body.country, //iso2 country code "phone":"+1 555 341 9393", "email":"support@goshippo.com", }; // parcel object dict var parcelOne = { "length":"5", "width":"5", "height":"5", "distance_unit":"in", "weight":"2", "mass_unit":"lb" }; var shipment = { "object_purpose": "PURCHASE", "address_from": addressFrom, "address_to": addressTo, "parcel": [parcelOne], "submission_type": "DROPOFF" }; shippo.transaction.create({ "shipment": shipment, "servicelevel_token": "dhl_express_domestic_express_doc", "carrier_account": "9f123316d413417d9cc48627c402772c", "label_file_type": "png" }) .then(function(transaction) { shippo.transaction.list({ "rate": transaction.rate }) .then(function(mpsTransactions) { mpsTransactions.results.forEach(function(mpsTransaction){ if(mpsTransaction.object_status == "SUCCESS") { console.log("Label URL: %s", mpsTransaction.label_url); console.log("Tracking Number: %s", mpsTransaction.tracking_number); console.log("E-Mail: %s", mpsTransaction.object_owner); console.log(mpsTransaction.object_status); res.status(200).send("Label can be found under: " + mpsTransaction.label_url); } else { // hanlde error transactions console.log("Message: %s", mpsTransactions.messages); } }); }) }, function(err) { // Deal with an error console.log("There was an error creating transaction : %s", err.detail); res.send("something happened :O") }); }) app.post('/successp', function (req, res) { var token = req.body.stripeToken; // Using Express // Charge the user's card: var charge = stripe.charges.create({ amount: 1000, currency: "eur", description: "Example charge", source: token, }, function(err, charge) { // asynchronously called }); res.send('Thanks!') }) app.post('/successp', function (req, res) { var token = req.body.stripeToken; // Using Express // Charge the user's card: var charge = stripe.charges.create({ amount: 1000, currency: "eur", description: "Example charge", source: token, }, function(err, charge) { // asynchronously called }); res.send('Thanks!') }) app.listen(3000, function () { console.log('Example app listening on port 3000!') }) 
 <!DOCTYPE html> <html> <head> </head> <form action="http://localhost:3000/newship" method="post"> Company (Leave blank if you don't belong to one): <input type="text" name="company"><br> First name: <input type="text" name="fnames"><br> Last name: <input type="text" name="lnames"><br> Street and Number: <input type="text" name="street"><br> City: <input type="text" name="city"><br> State: <input type="text" name="state"><br> ZIP/PLZ: <input type="text" name="zipcode"><br> Country (Please use the iso code, for example "US" for the USA or 'DE' for Germany): <input type="text" name="country"><br> <input type="submit" value="Submit"> </form> </body> </html>