Skip to main content
 首页 » 编程设计

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

2024年09月07日30hnrainll

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

这是我尝试过的方法。
根据文档为 Here .
这是我的模板:

<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 提交 post 请求时,由于 csrf_token 而返回 403 Forbidden 错误。我如何通过此请求传递 csrf_token。

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

请您参考如下方法:

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

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

你的服务器应该给你访问权限