如何解决如何正确添加标题,贝宝教程?
我正在做贝宝教程服务器端集成。 用 PHP。 我遇到了问题。
我想测试融资失败,最后一部分 https://developer.paypal.com/docs/business/checkout/server-side-api-calls/handle-funding-failures/
我想我在正确的位置添加了模拟标题,但没有做任何事情,它一直说 Transaction completed 。 正确的放置方式是什么? 贝宝说:
In the call to Capture payment for order,include the PayPal-Mock-Response header with the mock_application_codes value set to INSTRUMENT_DECLINED. Sample code: -H "PayPal-Mock-Response: {"mock_application_codes" : "INSTRUMENT_DECLINED"}"
<script>
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Call your server to set up the transaction
createOrder: function() {
return fetch('examplecreateorder.php',{
method: 'post',headers: {
'content-type': 'application/json'
}
}).then(function(res) {
return res.json();
}).then(function(data) {
return data.id;
});
},// Call your server to finalize the transaction
onApprove: function(data) {
return fetch('examplecaptureorder.php',{
method: 'post',headers: {
'content-type': 'application/json','PayPal-Mock-Response': {
'mock_application_codes': 'INSTRUMENT_DECLINED'
}
},body: JSON.stringify({
orderID: data.orderID
})
}
).then(function(res) {
return res.json().catch(error => console.error('Error:',error));
}).then(function(orderData) {
// Three cases to handle:
// (1) Recoverable INSTRUMENT_DECLINED -> call actions.restart()
// (2) Other non-recoverable errors -> Show a failure message
// (3) Successful transaction -> Show confirmation or thank you
// This example reads a v2/checkout/orders capture response,propagated from the server
// You could use a different API or structure for your 'orderData'
var errorDetail = Array.isArray(orderData.details) && orderData.details[0];
if (errorDetail && errorDetail.issue === 'INSTRUMENT_DECLINED') {
return actions.restart(); // Recoverable state,per:
// https://developer.paypal.com/docs/checkout/integration-features/funding-failure/
}
if (errorDetail) {
var msg = 'Sorry,your transaction could not be processed.';
if (errorDetail.description) msg += '\n\n' + errorDetail.description;
if (orderData.debug_id) msg += ' (' + orderData.debug_id + ')';
return alert(msg); // Show a failure message
}
// Show a success message
alert('Transaction completed by + orderData.payer.name.given_name);
})
}
}).render('#paypal-button-container');
</script>
解决方法
在标题中,PayPal-Mock-Response
的值应该只是一个字符串而不是一个对象:
...
headers: {
'content-type': 'application/json','PayPal-Mock-Response': '{"mock_application_codes" : "INSTRUMENT_DECLINED" }'
},...
注意在 OP 代码中指定为对象字面量的内容之间的区别:
'PayPal-Mock-Response': {
'mock_application_codes': 'INSTRUMENT_DECLINED'
}
以及将 PayPal-Mock-Response
的值视为字符串的工作代码:
'PayPal-Mock-Response': '{"mock_application_codes" : "INSTRUMENT_DECLINED" }'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。