为了账号安全,请及时绑定邮箱和手机立即绑定

用户无法互相付款 django-paypal

用户无法互相付款 django-paypal

慕工程0101907 2023-09-26 16:18:55
我有一个在线商店,用户可以互相付款购买东西,我一直在使用沙箱帐户对其进行测试,但我认为它不起作用。我实在不明白问题出在哪里这是我的观点.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_exemptdef 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 电子邮件帐户那么为什么它不起作用?
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

您说它不起作用,但没有提供有关问题行为及其不起作用的原因的信息。

但我认为这并不重要,因为您使用了一个糟糕的集成(django-paypal,基于支付标准)来实现您想要的付款人返回“非常非常重要”的行为。


您应该切换到的集成是集成 v2/checkout/orders,无论是否带有 Checkout-Python-SDK。您的服务器上需要两条路线,一条用于“设置交易”,一条用于“捕获交易”,记录如下: https: //developer.paypal.com/docs/checkout/reference/server-integration/

用于审批的最佳前端 UI 如下: https: //developer.paypal.com/demo/checkout/#/pattern/server。在一个独立的 HTML 文件中让它运行良好,该文件调用 2 个 django 后端路由(通过 fetch),然后将其作为前端集成到 django 模板和结账流程中。

对于用户向另一个用户付款的功能,请使用payee此处记录的对象: https: //developer.paypal.com/docs/checkout/integration-features/pay-another-account/


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 39 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信