Django python paypalrestsdk - No' Access-Control-Allow-Origin'和ppxo_unhandled_error错误

时间:2018-04-18 12:54:05

标签: python django paypal paypal-rest-sdk

我尝试使用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

2 个答案:

答案 0 :(得分:5)

您的originlocalhost:8000,而您正试图访问127.0.0.1:8000处的资源。 localhost:8000127.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

2。Get solution from this stack question