慕工程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/
添加回答
舉報
0/150
提交
取消