【问题标题】:Trouble with PayPal Adaptive Payments in Node.jsNode.js 中 PayPal 自适应支付的问题
【发布时间】:2012-10-25 06:16:22
【问题描述】:

我终其一生都无法弄清楚发生了什么。我只是想对 PayPal 的 Adaptive Payments API 进行基本调用,特别是 Pay 调用。我正在尝试使用 node.js 来实现这一点。我可以用curl 成功调用,但节点只是拒绝工作。我不断收到'Invalid request: {0}' 错误消息,errorId 580001。我找了很长时间的解决方案,虽然很多人都遇到过类似的问题,但他们的问题与我的不同,所以他们的解决方案没有奏效。

感谢您提供的任何帮助非常

这是我不断得到的回应(美化):

{ 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' }

再次感谢您非常提供的任何帮助。

【问题讨论】:

    标签: node.js paypal paypal-adaptive-payments


    【解决方案1】:

    天哪,我觉得自己很愚蠢...我漏掉了一行...

    method: 'POST'
    

    经验教训 - 累了就不要编码

    (除非你有大量的咖啡)

    【讨论】:

      【解决方案2】:

      不确定您是否粘贴了正确的代码,但此代码对我有用 - 看看您是否能找到不同之处:

      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);
          });
      

      【讨论】:

      • 感谢您的回复 Praveen,它确实有效。通过查看您的示例,我找到了我的代码的确切问题,这相当尴尬......
      猜你喜欢
      • 2014-12-31
      • 2015-07-19
      • 2014-07-05
      • 1970-01-01
      • 2021-08-04
      • 2014-12-08
      • 2018-09-05
      • 2014-10-13
      • 2013-11-10
      相关资源
      最近更新 更多