使用 Python SDK 在 Django 应用程序中集成PayPal PayPal



我正在做一个使用Python(3.6(和Django(1.10(的项目,我需要在这个项目中实现PayPal支付方式。我决定使用PayPal官方的Python SDK,而不是其他第三方软件包。这不仅是csrf问题,也是我们如何为结帐按钮呈现自定义表单PayPal问题。

这是我尝试过的。
根据文档如这里。
这是我的模板:

<form class="form">
   {% csrf_token %}
    <div id="paypal-button"></div>
    <script src="https://www.paypalobjects.com/api/checkout.js"></script>
    <script>
      var CREATE_PAYMENT_URL = '{% url 'users:payment' %}';
      var EXECUTE_PAYMENT_URL = 'https://my-store.com/paypal/execute-payment';
      paypal.Button.render({
         env:    'sandbox', // Or 'production'
         commit: true, // Show a 'Pay Now' button
         payment: function () {
           return paypal.request.post(CREATE_PAYMENT_URL).then(function (data) {
               return data.paymentID;
    });
 },
         onAuthorize: function (data) {
             return paypal.request.post(EXECUTE_PAYMENT_URL, {
                    paymentID: data.paymentID,
                    payerID: data.payerID}).then(function () {                                                            
                   // The payment is complete!                                                                    
                  // You can now show a confirmation message to the customer
              });
            }
      }, '#paypal-button');
   </script>
 </form>

从 urls.py:

   url('^payment/$', views.PaymentProcess.as_view(), name='payment'),

从 views.py:

class PaymentProcess(LoginRequiredMixin, generic.DetailView):
    def post(self, request, *args, **kwargs):
        mydict = {
            'paymentID': 'PAYMENTID',
        }
        print('Getting payment request')
        return json.dumps(mydict)

当PayPal向 /payment 提交发布请求时,它会返回 403 禁止错误,原因是csrf_token。我怎样才能通过此请求传递csrf_token

任何资源或教程将不胜感激。

似乎您可以在帖子请求中添加自定义标头:https://github.com/paypal/PayPal-Python-SDK/blob/master/paypalrestsdk/api.py#L270

鉴于您只需要将csrf令牌添加到标头中:https://docs.djangoproject.com/en/2.0/ref/csrf/#setting-the-token-on-the-ajax-request

您的服务器应该为您提供访问权限

相关内容

  • 没有找到相关文章

最新更新