【问题标题】:Django & PayPal integrationDjango 和 PayPal 集成
【发布时间】:2011-02-12 10:40:56
【问题描述】:

我正在用 Python 设计一个网站(使用 Django),我需要通过它来卖东西。

有人可以帮助我提供源代码以集成 paypal-pro(直接付款)或 paypal-standard(快速结帐)吗?

【问题讨论】:

    标签: django django-paypal


    【解决方案1】:

    您可能想试试django-paypal,首页上甚至还有tutorial

    【讨论】:

    • 先生,您是圣人... +1 为您在编辑问题时为社区所做的服务:)
    • 那里看不到教程 :(
    • 如何使用express checkout ?目前只有 website payment pro(wpp) 正在工作,并且由于 wpp 在选定的国家/地区可用,因此会引发错误。
    • @Dominic Rodger 请看看这个stackoverflow.com/questions/69955000/…
    【解决方案2】:

    paypal.standard.ipn

    PayPal API 生成一个按钮,该按钮将通过paypal.standard.ipn 调用其 API。

    对于 API 集成,您必须遵循以下给定步骤:

    安装django-paypal:

    pip install django-paypal
    

    更新 settings.py 文件:

    INSTALLED_APPS = [
        'paypal.standard.ipn',
    ]
    
    PAYPAL_RECEIVER_EMAIL = 'XXXXX'
    PAYPAL_TEST = True
    

    写收件人的电子邮件地址。 PAYPAL_TEST = True 表示您需要测试 API 付款。您可以为原始支付 API 写“False”。

    运行命令:

    python manage.py migrate 
    

    urls.py 中:

    url(r'^paypal/', include('paypal.standard.ipn.urls')),
    url(r'^payment_process/$', api_views.payment_process, name='payment_process' ),
    url(r'^payment_done/$', TemplateView.as_view(template_name= "pets/payment_done.html"), name='payment_done'),
    url(r'^payment_canceled/$', TemplateView.as_view(template_name= "pets/payment_canceled.html"), name='payment_canceled'),*
    

    views.py 中:

    from django.conf import settings
    from django.urls import reverse
    from django.shortcuts import render, get_object_or_404
    from paypal.standard.forms import PayPalPaymentsForm
    
    
    def payment_process(request):
        host = request.get_host()
        paypal_dict = {
            'business': settings.PAYPAL_RECEIVER_EMAIL,
            'amount': '100',
            'item_name': 'Item_Name_xyz',
            'invoice': 'Test Payment Invoice',
            'currency_code': 'USD',
            'notify_url': 'http://{}{}'.format(host, reverse('paypal-ipn')),
            'return_url': 'http://{}{}'.format(host, reverse('payment_done')),
            'cancel_return': 'http://{}{}'.format(host, reverse('payment_canceled')),
        }
        form = PayPalPaymentsForm(initial=paypal_dict)
        return render(request, 'pets/payment_process.html', {'form': form})
    

    Follow video tutorial for django-code given in reference.

    payment_process.html 中:

    {{ form.render }}
    

    对于调用 API,您需要 /payment_process/。它将在 HTML 上生成一个按钮,该按钮调用 PayPal API 进行交易。进一步的流程将在 PayPal 端、登录或卡支付上完成。

    【讨论】:

    • 您能否详细说明以下代码,因为我是 django 新手。你用过宠物/.......什么是宠物?是您的应用还是通用应用?url(r'^paypal/', include('paypal.standard.ipn.urls')), url(r'^payment_process/$', api_views.payment_process, name='payment_process' ), url(r'^payment_done/$', TemplateView.as_view(template_name="pets/payment_done.html"), name='payment_done'), url(r'^payment_canceled/$', TemplateView.as_view(template_name= "pets/payment_canceled.html"), name='payment_canceled'),*
    • @SatinderSingh, "pets" 是一个 Django 应用程序,它是本项目的主要应用程序。
    • 感谢您的回复。我们可以自定义该按钮的颜色或大小等吗?你能给我一些想法吗?
    【解决方案3】:

    你看过pypaypal吗?您可以创建一个连接到 PayPal 的视图并提交您的付款命令。

    【讨论】:

      【解决方案4】:

      最好使用所有者的“本机”文档:docs paypal

      【讨论】:

        【解决方案5】:

        tutorial 指导如何通过沙盒ClientIdSecretKey 接受Paypal 应用付款,无需任何第三方库。

        您还可以在purchase_units 列表的字典对象中将支付跟踪ID 作为custom_id 发送到create_order.request_body 函数。
        如下图:

        create_order.request_body (
                {
                    "intent": "CAPTURE",
                    "purchase_units": [
                        {
                            "custom_id": "YOUR_TRACKING_ID",
                            "amount": {
                                "currency_code": "USD",
                                "value": course.price,
                                "breakdown": {
                                    "item_total": {
                                        "currency_code": "USD",
                                        "value": course.price
                                    }
                                    },
                                },                               
        
        
                        }
                    ]
                }
            )
        

        【讨论】:

          猜你喜欢
          • 2011-02-01
          • 2021-11-27
          • 2018-04-12
          • 2012-02-11
          • 2014-12-14
          • 1970-01-01
          • 2016-10-19
          • 2014-06-17
          • 2012-04-24
          相关资源
          最近更新 更多