我尝试使用paypalrestsdk实现与Django的PayPal。
我按照此处示例中的代码示例:https://prettyprinted.com/blog/1125955/creating-paypal-express-payments-in-flask
但是有这个错误:
这是我的模板.html,views.py和urls.py的代码片段 https://gist.github.com/axilaris/1e6e34ba5915abceb0dbd06d46baf08b
这是显示按钮的模板代码:
<div id="paypal-button"></div>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
var CREATE_PAYMENT_URL = 'http://127.0.0.1:8000/payment_create';
var EXECUTE_PAYMENT_URL = 'http://127.0.0.1:8000/payment_execute';
paypal.Button.render({
env: 'sandbox', // Or 'sandbox'
commit: true, // Show a 'Pay Now' button
payment: function() {
console.log("payment function")
return paypal.request.post(CREATE_PAYMENT_URL).then(function(data) {
console.log("return create payment")
return data.paymentID;
});
},
onAuthorize: function(data) {
return paypal.request.post(EXECUTE_PAYMENT_URL, {
paymentID: data.paymentID,
payerID: data.payerID
}).then(function(res) {
console.log(res.success)
// The payment is complete!
// You can now show a confirmation message to the customer
});
}
}, '#paypal-button');
</script>
问题是什么,如何解决以及什么是ppxo_unhandled_error?
或者,什么是在Django上正确实现paypal的最佳方式。 (我只是没有看到任何好的文档)
Django==1.11.7
答案 0 :(得分:5)
您的origin
为localhost:8000
,而您正试图访问127.0.0.1:8000
处的资源。 localhost:8000
和127.0.0.1:8000
上的页面显示相同,因为localhost
(通常)会转换为系统上的127.0.0.1
,但您的浏览器会将这两个目标解释为不同的地址。因此,您的浏览器阻止您从原始127.0.0.1:8000
访问localhost:8000
的资源,因为目标资源没有使用Access-Control-Allow-Origin: http://127.0.0.1:8000
标头进行响应。
我建议您将原点(浏览器中的网址)更改为127.0.0.1:8000
,而不是添加标题。或者更改JavaScript以使用localhost:8000
地址。
Access-Control-Allow-Origin
(Mozilla)Access-Control-Allow-Origin响应标头指示是否可以与具有给定源的资源共享响应。
答案 1 :(得分:0)
当网址的请求(localhost:8000)和远程地址(http://127.0.0.1:8000/)不同时,这是关于Http请求的最常见问题。 如果您更改localhost端口,那么也会出现此问题。
尝试使用以下两个选项:
1.将此扩展程序添加到您的crome download extension from here