麻烦与贝宝自适应付款Node.js

我不能为了我的生活弄清楚发生了什么事情。 我只是试图做一个基本的电话,贝宝的Adaptive Payments API,特别是Pay电话。 我试图用node.js来实现这一点。 我可以用curl做成功的调用,但是node只是拒绝工作。 我不断收到'Invalid request: {0}'错误消息errorId 580001 。 我找了很久才find一个解决办法,虽然很多人看似有类似的问题,但是他们的问题和我的不一样,所以他们的解决scheme一直没有奏效。

任何帮助你可以提供非常赞赏。

以下是我一直得到的反应(美化):

 { responseEnvelope: { timestamp: '2012-11-05T03:50:08.216-08:00', ack: 'Failure', correlationId: 'b1dbb6fea8378', build: '4110101' }, error: [ { errorId: '580001', domain: 'PLATFORM', subdomain: 'Application', severity: 'Error', category: 'Application', message: 'Invalid request: {0}' } ] } 

这里是我的节点代码:(注意:我使用request模块: https : //github.com/mikeal/request )

 request = require 'request' body = JSON.stringify actionType: "PAY" senderEmail: "happy_1349101075_biz@onehappystudent.com" receiverList: receiver: [ email: "luke_1346604373_biz@onehappystudent.com" amount: "1.00" ] currencyCode: "USD" feesPayer: "EACHRECEIVER" memo: "This is a test" cancelUrl: "http://cancelurl" returnUrl: "http://returnUrl" ipnNotificationUrl: "http://your_ipn_notification_url" requestEnvelope: errorLanguage: "en_US" console.log body console.log request url: 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay' headers: "X-PAYPAL-SECURITY-USERID": "happy_1349101075_biz_api1.onehappystudent.com" "X-PAYPAL-SECURITY-PASSWORD": "1349101103" "X-PAYPAL-SECURITY-SIGNATURE": "AFcWxV21C7fd0v3bYYYRCpSSRl31Avw12OuF33eJo9IbQpXMS6wrOp1." "X-PAYPAL-REQUEST-DATA-FORMAT": "JSON" "X-PAYPAL-RESPONSE-DATA-FORMAT": "JSON" "X-PAYPAL-APPLICATION-ID": "APP-80W284485P519543T" "Content-Type": "application/json" body: body , (err, res, bod) -> console.log bod 

以下是运行上述代码的输出:

 {"actionType":"PAY","senderEmail":"happy_1349101075_biz@onehappystudent.com","receiverList":{"receiver":[{"email":"luke_1346604373_biz@onehappystudent.com","amount":"1.00"}]},"currencyCode":"USD","feesPayer":"EACHRECEIVER","memo":"This is a test","cancelUrl":"http://cancelurl","returnUrl":"http://returnUrl","ipnNotificationUrl":"http://your_ipn_notification_url","requestEnvelope":{"errorLanguage":"en_US"}} { readable: true, writable: true, headers: { 'X-PAYPAL-SECURITY-USERID': 'happy_1349101075_biz_api1.onehappystudent.com', 'X-PAYPAL-SECURITY-PASSWORD': '1349101103', 'X-PAYPAL-SECURITY-SIGNATURE': 'AFcWxV21C7fd0v3bYYYRCpSSRl31Avw12OuF33eJo9IbQpXMS6wrOp1.', 'X-PAYPAL-REQUEST-DATA-FORMAT': 'JSON', 'X-PAYPAL-RESPONSE-DATA-FORMAT': 'JSON', 'X-PAYPAL-APPLICATION-ID': 'APP-80W284485P519543T', 'Content-Type': 'application/json', host: 'svcs.sandbox.paypal.com', 'content-length': 409 }, body: <Buffer 7b 22 61 63 74 69 6f 6e 54 79 70 65 22 3a 22 50 41 59 22 2c 22 73 65 6e 64 65 72 45 6d 61 69 6c 22 3a 22 68 61 70 70 79 5f 31 33 34 39 31 30 31 30 37 35 ...>, callback: [Function], pool: {}, dests: [], __isRequestRequest: true, _callback: [Function], _events: { error: [Function], complete: [Function], pipe: { [Function: g] listener: [Function] } }, uri: { protocol: 'https:', slashes: true, host: 'svcs.sandbox.paypal.com', hostname: 'svcs.sandbox.paypal.com', href: 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay', pathname: '/AdaptivePayments/Pay', path: '/AdaptivePayments/Pay', port: 443 }, _redirectsFollowed: 0, maxRedirects: 10, followRedirect: true, followAllRedirects: false, redirects: [], setHost: true, originalCookieHeader: undefined, _jar: undefined, port: 443, host: 'svcs.sandbox.paypal.com', clientErrorHandler: [Function], _parserErrorHandler: [Function], path: '/AdaptivePayments/Pay', httpModule: { Server: { [Function: Server] super_: [Object] }, createServer: [Function], globalAgent: { options: {}, requests: {}, sockets: {}, maxSockets: 5, _events: [Object], createConnection: [Function: createConnection] }, Agent: { [Function: Agent] super_: [Object] }, request: [Function], get: [Function] }, agentClass: { [Function: Agent] super_: { [Function: Agent] super_: [Function: EventEmitter], defaultMaxSockets: 5 } }, agent: { options: {}, requests: {}, sockets: {}, maxSockets: 5, _events: { free: [Function] }, createConnection: [Function: createConnection] } } {"responseEnvelope":{"timestamp":"2012-11-05T03:50:08.216-08:00","ack":"Failure","correlationId":"b1dbb6fea8378","build":"4110101"},"error":[{"errorId":"580001","domain":"PLATFORM","subdomain":"Application","severity":"Error","category":"Application","message":"Invalid request: {0}"}]} 

这是成功的curl

 curl -s --insecure \ -H "X-PAYPAL-SECURITY-USERID: happy_1349101075_biz_api1.onehappystudent.com" \ -H "X-PAYPAL-SECURITY-PASSWORD: 1349101103" \ -H "X-PAYPAL-SECURITY-SIGNATURE: AFcWxV21C7fd0v3bYYYRCpSSRl31Avw12OuF33eJo9IbQpXMS6wrOp1." \ -H "X-PAYPAL-REQUEST-DATA-FORMAT: JSON" \ -H "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON" \ -H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" \ -H "host: svcs.sandbox.paypal.com" \ https://svcs.sandbox.paypal.com/AdaptivePayments/Pay -d '{ "actionType":"PAY", "senderEmail":"happy_1349101075_biz@onehappystudent.com", "receiverList":{ "receiver":[{ "email":"luke_1346604373_biz@onehappystudent.com", "amount":"1.00" }] }, "currencyCode":"USD", "feesPayer":"EACHRECEIVER", "memo":"This is a test", "cancelUrl":"http://cancelurl", "returnUrl":"http://returnUrl", "ipnNotificationUrl":"http://your_ipn_notification_url", "requestEnvelope":{ "errorLanguage":"en_US" } }' 

这里的回答是:(为了您的方便,

 { responseEnvelope: { timestamp: '2012-11-05T03:40:10.613-08:00', ack: 'Success', correlationId: 'abaf5b13c5515', build: '4110101' }, payKey: 'AP-4B1870921M506553S', paymentExecStatus: 'COMPLETED' } 

再次,任何帮助你可以提供非常赞赏。

不知道你是否正确地粘贴了你的代码,但是这个代码对我有效 – 看你能否find不同之处:

 var request = require('request'); body = JSON.stringify( {actionType: "PAY", senderEmail: "happy_1349101075_biz@onehappystudent.com", receiverList: { receiver: [{ email: "luke_1346604373_biz@onehappystudent.com", amount: "1.00" }]}, currencyCode: "USD", feesPayer: "EACHRECEIVER", memo: "This is a test", cancelUrl: "http://cancelurl", returnUrl: "http://returnUrl", ipnNotificationUrl: "http://your_ipn_notification_url", requestEnvelope: { errorLanguage: "en_US" } }) console.log(body) request.post({ headers: {"X-PAYPAL-SECURITY-USERID": "happy_1349101075_biz_api1.onehappystudent.com", "X-PAYPAL-SECURITY-PASSWORD": "1349101103", "X-PAYPAL-SECURITY-SIGNATURE": "AFcWxV21C7fd0v3bYYYRCpSSRl31Avw12OuF33eJo9IbQpXMS6wrOp1.", "X-PAYPAL-REQUEST-DATA-FORMAT": "JSON", "X-PAYPAL-RESPONSE-DATA-FORMAT": "JSON", "X-PAYPAL-APPLICATION-ID": "APP-80W284485P519543T", "Content-Type": "application/json"}, url: 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay', body: body }, function(error, response, body){ console.log(body); }); 

哦,上帝,我觉得很愚蠢…我错过了一条线

 method: 'POST' 

获得的教训 – 累时不要编码

(除非你有大量的咖啡)