Express Checkout Payment returns 即使在成功执行后也会清空相关资源
Express Checkout Payment returns empty related resources even after successful execution
编辑:
正如@bluepnume 所说,这可能是一个错误,稍后会修复。
在我的例子中,我做了同样的事情(创建付款/执行付款)但是在服务器端使用 REST API 而没有使用 checkout.js
现在一切正常。
唯一的区别是我将客户端重定向到 PayPal(使用 $payment->getApprovalLink()
),而不是使用 checkout.js
生成的现场灯箱。
原题:
我将 PayPal Express Checkout 与基本客户端集成集成在一起。
一切似乎都很好。付款顺利完成,我可以从 Rest API 请求和卖家帐户(沙盒)中将付款视为 completed/approved。
然而,即使执行成功,付款也没有完成。我尝试在订单取消后从 API 退款,但在成功读取付款数据后,我无法在付款交易中收到相关资源。
JS 代码(工作正常):
paypal.Button.render({
env: $form.find('[name="env"]').val(),
client: {
sandbox: $form.find('[name="client_id"]').val(),
production: $form.find('[name="client_id"]').val()
},
locale: 'it_IT',
commit: true, // Optional: show a 'Pay Now' button in the checkout flow
payment: function() {
var env = this.props.env;
var client = this.props.client;
return paypal.rest.payment.create(env, client, {
transactions: [
{
custom: $form.find('[name="custom"]').val(),
amount: {
total: $form.find('[name="subtotal"]').val(),
currency: $form.find('[name="currency_code"]').val()
},
description: $form.find('[name="item_name"]').val(),
}
],
redirect_urls: {
"return_url": $form.find('[name="return"]').val(),
"cancel_url": $form.find('[name="notify_url"]').val()
}
});
},
onAuthorize: function(data, actions) {
return actions.payment.execute().then(function() {
actions.payment.get().then(function(data) {
pjQ.$.post($form.find('[name="notify_url"]').val(), data).done(function (data) {
return actions.redirect();
});
});
});
},
onCancel: function(data, actions) {
return actions.redirect();
}
}, '#paypal-button');
PHP代码:
$payment = \PayPal\Api\Payment::get($paymentId, $apiContext); // It's ok
$transactions = $payment->getTransactions(); // It's ok
$relatedResources = $transactions[0]->getRelatedResources(); // Empty...
// I can't use the code below as $relatedResources is empty
$sale = $relatedResources[0]->getSale();
$saleId = $sale->getId();
$sale = new \PayPal\Api\Sale();
$sale->setId($saleId);
$refundedSale = $sale->refundSale($refundRequest, $apiContext);
有什么想法吗?
这是一个已知问题,很快就会修复。参见 https://github.com/paypal/paypal-checkout/issues/143。
编辑:
正如@bluepnume 所说,这可能是一个错误,稍后会修复。
在我的例子中,我做了同样的事情(创建付款/执行付款)但是在服务器端使用 REST API 而没有使用 checkout.js
现在一切正常。
唯一的区别是我将客户端重定向到 PayPal(使用 $payment->getApprovalLink()
),而不是使用 checkout.js
生成的现场灯箱。
原题:
我将 PayPal Express Checkout 与基本客户端集成集成在一起。
一切似乎都很好。付款顺利完成,我可以从 Rest API 请求和卖家帐户(沙盒)中将付款视为 completed/approved。
然而,即使执行成功,付款也没有完成。我尝试在订单取消后从 API 退款,但在成功读取付款数据后,我无法在付款交易中收到相关资源。
JS 代码(工作正常):
paypal.Button.render({
env: $form.find('[name="env"]').val(),
client: {
sandbox: $form.find('[name="client_id"]').val(),
production: $form.find('[name="client_id"]').val()
},
locale: 'it_IT',
commit: true, // Optional: show a 'Pay Now' button in the checkout flow
payment: function() {
var env = this.props.env;
var client = this.props.client;
return paypal.rest.payment.create(env, client, {
transactions: [
{
custom: $form.find('[name="custom"]').val(),
amount: {
total: $form.find('[name="subtotal"]').val(),
currency: $form.find('[name="currency_code"]').val()
},
description: $form.find('[name="item_name"]').val(),
}
],
redirect_urls: {
"return_url": $form.find('[name="return"]').val(),
"cancel_url": $form.find('[name="notify_url"]').val()
}
});
},
onAuthorize: function(data, actions) {
return actions.payment.execute().then(function() {
actions.payment.get().then(function(data) {
pjQ.$.post($form.find('[name="notify_url"]').val(), data).done(function (data) {
return actions.redirect();
});
});
});
},
onCancel: function(data, actions) {
return actions.redirect();
}
}, '#paypal-button');
PHP代码:
$payment = \PayPal\Api\Payment::get($paymentId, $apiContext); // It's ok
$transactions = $payment->getTransactions(); // It's ok
$relatedResources = $transactions[0]->getRelatedResources(); // Empty...
// I can't use the code below as $relatedResources is empty
$sale = $relatedResources[0]->getSale();
$saleId = $sale->getId();
$sale = new \PayPal\Api\Sale();
$sale->setId($saleId);
$refundedSale = $sale->refundSale($refundRequest, $apiContext);
有什么想法吗?
这是一个已知问题,很快就会修复。参见 https://github.com/paypal/paypal-checkout/issues/143。