Paypal 批量支付在节点 js api 中不起作用
Posted
技术标签:
【中文标题】Paypal 批量支付在节点 js api 中不起作用【英文标题】:Paypal batch payout not working in node js api 【发布时间】:2016-07-23 16:41:26 【问题描述】:我正在尝试使用测试沙盒帐户创建批量付款。 “创建付款”功能在正确响应的情况下工作得非常好:
var paypal_sdk = require('paypal-rest-sdk');
var config_opts =
'host': host, //host defined
'port':'',
'mode':'sandbox',
'client_id': client_id, //clientID defined
'client_secret': client_secret, //clientSecret defined
;
var makePayment = function (req, res, next)
var create_payment_json =
"intent": "sale",
"payer":
"payment_method": "paypal"
,
"redirect_urls":
"return_url": "http://mystore.in",
"cancel_url": "http://mystore.in/contact"
,
"transactions": [
"amount":
"currency": "USD",
"total": "1.00"
,
"description": "This is the payment description."
]
;
paypal_sdk.payment.create(create_payment_json,config_opts, function (err, data)
if (err) console.log("ERRRRR", err);
console.log("Create Payment Response");
console.log(data);
//res.send('201');
);
makePayment(); //CALLING THE FUNCTION
但是,当我尝试创建新的付款时,通过将 create_payment_json 编辑为:
var create_payment_json =
"sender_batch_header":
"email_subject": "You have a Payout!",
"recipient_type": "EMAIL"
,
"items": [
"recipient_type": "EMAIL",
"amount":
"value": "1.0",
"currency": "USD"
,
"note": "Thanks for your patronage!",
"sender_item_id": "201403140001",
"receiver": "shirt-supplier-one@mail.com"
]
;
主要功能为:
paypal_sdk.payout.create(create_payment_json,config_opts, function (err, data)
if (err) console.log("ERRRRR", err);
console.log("Create Payment Response");
console.log(data);
//res.send('201');
);
我收到如下错误:
[Error: Response Status : 401]
response:
error: 'invalid_client',
error_description: 'Client Authentication failed',
httpStatusCode: 401 ,
httpStatusCode: 401
但是,我确信传递的凭据是正确的,并且在创建付款的情况下它们可以正常工作。 我首先为测试做这一切。此外,该测试 paypal 开发者帐户也启用了支付功能。
有什么可能的解决办法吗?
【问题讨论】:
【参考方案1】:我刚刚得到了解决方案。好吧,补充一点,我必须说 paypal 应该提供适当的错误处理,让开发人员知道每个错误背后的原因。
错误是因为我在配置中设置的货币。测试开发者帐户是其他国家的,货币代码设置为“美元”。 只需根据您在创建该测试开发者帐户时选择的国家/地区创建一个新帐户并在配置中设置货币代码即可。
【讨论】:
【参考方案2】:我测试 payout ,如下代码,它工作正常。您可以将您的代码与我的示例进行比较,您可以添加'sender_batch_id'参数进行尝试。
curl -v https://api.sandbox.paypal.com/v1/payments/payouts/ \
-H "Content-Type:application/json" \
-H "Authorization: *****" \
-d '
"sender_batch_header":
"sender_batch_id": "batch_25",
"email_subject": "You have a payment"
,
"items": [
"recipient_type": "EMAIL",
"amount":
"value": 0.99,
"currency": "USD"
,
"receiver": "aaabbb@email.com",
"note": "Thank you.",
"sender_item_id": "item_1"
,
"recipient_type": "EMAIL",
"amount":
"value": 0.90,
"currency": "USD"
,
"receiver": "bbbb@gmail.com",
"note": "Thank you.",
"sender_item_id": "item_2"
,
"recipient_type": "EMAIL",
"amount":
"value": 2.00,
"currency": "USD"
,
"receiver": "cccc@gmail.com",
"note": "Thank you.",
"sender_item_id": "item_3"
]
'
【讨论】:
以上是关于Paypal 批量支付在节点 js api 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
带有 RestSharp 的 Paypal Rest Api 在 xamarin android 中不起作用