paypalrestsdk与Django集成问题

时间:2016-11-28 20:34:56

标签: python json django paypal

我正在尝试使用REST API设置Paypal快速结账,但是当我点击Paypal结帐时,我会得到模态窗口,它只会永远旋转。

付款创建视图:

def payment_create(request):
logging.basicConfig(level=logging.INFO)

paypalrestsdk.configure({
'mode': settings.PAYPAL_MODE,
'client_id': settings.PAYPAL_CLIENT_ID,
'client_secret': settings.PAYPAL_CLIENT_SECRET
})

# Create payment object
payment = paypalrestsdk.Payment({
  "intent": "sale",

  # Set payment method
  "payer": {
    "payment_method": "paypal"},

  # Set redirect urls
  "redirect_urls": {
    "return_url": "http://127.0.0.1:8000/checkout/payment_done/",
    "cancel_url": "http://127.0.0.1:8000/checkout/payment_error/"},

  # Set transaction object
  "transactions": [{
    "amount": {
      "total": "10.00",
      "currency": "USD"},
    "description": "payment description"}]})

# Create Payment and return status
if payment.create():
    print("Payment[%s] created successfully" % (payment.id))
    request.session["paymentID"] = payment.id
    # Redirect the user to given approval url
    for link in payment.links:
        if link.method == "REDIRECT":
            print("Redirect for approval: %s" % (link.href))
            return HttpResponseRedirect(link.href)
else:
    print("Error while creating payment:")
    print(payment.error)

Cart.html模板:

<div id="paypal-button"></div>
<script src="https://www.paypalobjects.com/api/checkout.js" data-version-4></script>
<script>
    paypal.Button.render({

        env: 'sandbox', // Optional: specify 'sandbox' environment

        payment: function(resolve, reject) {

            var CREATE_PAYMENT_URL = 'http://127.0.0.1:8000/checkout/payment_create/';

            paypal.request.post(CREATE_PAYMENT_URL)
                .then(function(data) { resolve(data.paymentID);  })
                .catch(function(err) { reject(err); });
        },

        onAuthorize: function(data) {

            // Note: you can display a confirmation page before executing

            var EXECUTE_PAYMENT_URL = 'http://127.0.0.1:8000/checkout/payment_execute/';

            paypal.request.post(EXECUTE_PAYMENT_URL,
                    { paymentID: data.paymentID, payerID: data.payerID })

                .then(function(data) { window.location.replace("http://127.0.0.1:8000/checkout/payment_done/")  })
                .catch(function(err) { window.location.replace("http://127.0.0.1:8000/checkout/payment_error/") });
        }

    }, '#paypal-button');
</script>

从日志看起来我正在成功创建付款对象,但无法重定向,在开发工具中我看到了这一点:

VM6073:1未捕获的SyntaxError:意外的令牌&lt;在位置0的JSON中     在JSON.parse()     在XMLHttpRequest。 (https://www.paypalobjects.com/api/checkout.js:10511:38

在线研究后看起来像json是预期的,但我正在返回HTML?任何人都可以指出我正确的方向。

我是编程新手,所以感谢任何帮助!

0 个答案:

没有答案