从PayPal SDK获取事务ID
我正在尝试找出如何获取使用PayPal SDK进行支付的交易ID。以下是我的JS中的内容:从PayPal SDK获取事务ID,paypal,paypal-rest-sdk,Paypal,Paypal Rest Sdk,我正在尝试找出如何获取使用PayPal SDK进行支付的交易ID。以下是我的JS中的内容: paypal.Buttons({ createOrder: function(data, actions) { return actions.order.create({ purchase_units: [{ amount: { value: parseFloat( window.my_config.am
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
},
description: window.my_config.description
}],
commit: true
});
},
onApprove: function(data, actions) {
console.dir({ data: data, actions:actions });
return actions.order.capture().then(function(details) {
console.log({ details: details });
// This function shows a transaction success message to your buyer.
alert('Transaction completed by ' + details.payer.name.given_name);
});
$('#AJAXloadingWrapper').show();
}
}).render('#paypalWrapper');
这就是我的调试结果:
Error: Order could not be captured
我在任何地方都看不到交易ID。它应该是7CA44490MT3621L(通过我的贝宝账户中的transid)
一个人怎样才能得到它呢?在我以前使用的旧系统中:
curl https://api.paypal.com/v1/payments/payment/L8EM97CXSYBJ2 -H "Content-Type: application/json" -H "Authorization: Bearer tokenstring"
但这不起作用。我已尝试将其更改为v2:
curl https://api.paypal.com/v2/payments/payment/L8EM97CXSYBJ2 -H "Content-Type: application/json" -H "Authorization: Bearer xxxx"
…但我得到的回应是什么都没有(没有错误,但没有输出)
我尝试了一些基于:
不输出任何内容(也没有错误)
更新:根据建议,我正在尝试使用输出结果中的购买单位->付款->捕获->id
。问题是,这似乎与我的预期不符。当我登录我的PayPal时,我得到:
0NP90326GE709501L
然而,返回数据中的值显示为:
891170207E054363D
为什么这些不同?FWIW我在我的个人PayPal帐户(不是它被发送到的企业)中查看这个。当然,商户和客户的交易ID应该是相同的
更新2:所以在所有这些之后,我发现了一条线索,说贝宝故意给买家和卖家不同的交易ID。多美的皮塔。因此,另一种方法是传入一个自定义发票id,我们可以对其进行交叉引用。一切都很好-除了我似乎也不能那样做
我试过:
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
},
description: window.my_config.description,
}],
invoice_id: invoice_id,
commit: true
});
},
而且:
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
},
description: window.my_config.description,
invoice_id: invoice_id
}],
commit: true
});
},
但是,当他们完成付款的过程时,它会带来:
Error: Order could not be captured
…尝试运行返回操作.order.capture()时,然后(函数(详细信息){
更新3:
我还是不能让它工作。这是你传递自定义id的方式吗
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
custom_id: invoice_id
},
description: window.my_config.description
}],
commit: true
});
我已经在那里试过了,并且如下
commit:true
,但仍然不起作用:((“订单无法捕获”在确认付款后立即执行)它在购买单位->付款->捕获->id中
请参阅下面的示例响应:
一旦知道了id,就没有理由需要对该id的相同数据执行单独的GET请求,但是如果您这样做,API调用将是:
谢谢。在我的测试中,我得到了9TE07281A3828142S,但当我在PayPal上看到它时,transid是:我在上面添加了更多的细节。trans ID似乎仍然与我期望的不匹配。商家和客户都应该有相同的交易ID,不是吗?哦,有趣的是,我刚刚发现:。因此,它变成了PayPal故意给买家和卖家不同的ID。真是一个PITA!为什么我们不能只获得买家ID?我想在给客户的购买电子邮件中包含这一点:/我看了一下,似乎唯一的解决方法是包含自定义发票ID。问题是,当我尝试传递发票ID/自定义ID时,我得到了“无法捕获订单”错误:(发票id必须是唯一的,以前从未在收货帐户上使用过。自定义id可以是任何内容