猿问

用户无法互相付款 django-paypal

我有一个在线商店,用户可以互相付款购买东西,我一直在使用沙箱帐户对其进行测试,但我认为它不起作用。我实在不明白问题出在哪里


这是我的观点.py:


def payment_process(request, trade_id):

    trade = get_object_or_404(Trade, id=trade_id)

    host = request.get_host()


    paypal_dict = {

        'business': trade.seller.email, 

        'amount': Decimal(trade.price),

        'item_name': trade.filename,

        'invoice': str(trade.id),

        'currency_code': 'USD',

        'notify_url': 'https://{}{}'.format(host,

                                           reverse('paypal-ipn')),

        'return_url': 'https://{}{}/{}'.format(host,

                                           *reverse('payment_done', kwargs={'trade_id': trade.id})),

        'cancel_return': 'https://{}{}'.format(host,

                                              reverse('home')),

    }


    form = PayPalPaymentsForm(initial=paypal_dict)

    return render(request, 'payment/payment_process.html', {'trade': trade, 'form': form})



@csrf_exempt

def payment_done(request, trade_id):

    # Do some very important stuff after paying ...

    # It would be really nice if someone can help me with a checker

    messages.success(request, 'Your product is in your inbox now')

    return redirect('trade:inbox')

我的网址.py:


urlpatterns = [

    path('admin/', admin.site.urls),

    ...

    # Prodbox Payment

    path('payment/process/<int:trade_id>/', payment_views.payment_process, name="payment_process"),

    path('payment/done/<int:trade_id>/', payment_views.payment_done, name="payment_done"),

    # Prodbox packages

    path('paypal/', include('paypal.standard.ipn.urls')),

]


完成付款后将用户重定向到 payment_done 视图非常重要(如果我有一个检查器在运行完成功能之前检查付款是否完成,那就太好了)


另请注意,我强调用户使用他们的 PayPal 电子邮件帐户


那么为什么它不起作用?


慕工程0101907
浏览 68回答 1
1回答

千巷猫影

您说它不起作用,但没有提供有关问题行为及其不起作用的原因的信息。但我认为这并不重要,因为您使用了一个糟糕的集成(django-paypal,基于支付标准)来实现您想要的付款人返回“非常非常重要”的行为。您应该切换到的集成是集成 v2/checkout/orders,无论是否带有 Checkout-Python-SDK。您的服务器上需要两条路线,一条用于“设置交易”,一条用于“捕获交易”,记录如下: https:&nbsp;//developer.paypal.com/docs/checkout/reference/server-integration/用于审批的最佳前端 UI 如下: https:&nbsp;//developer.paypal.com/demo/checkout/#/pattern/server。在一个独立的 HTML 文件中让它运行良好,该文件调用 2 个 django 后端路由(通过 fetch),然后将其作为前端集成到 django 模板和结账流程中。对于用户向另一个用户付款的功能,请使用payee此处记录的对象: https:&nbsp;//developer.paypal.com/docs/checkout/integration-features/pay-another-account/
随时随地看视频慕课网APP

相关分类

Python
我要回答