首页 > 解决方案 > 如何允许用户在 Django 中使用 paypal 相互支付

问题描述

我一直在关注这个,最终用户可以向我付款并获得他们的产品,但是,我希望用户互相付费。

两个用户都应该输入他们与他们的 PayPal 关联的电子邮件地址,现在我怎样才能使交易转账到其他用户的电子邮件地址而不是我?我的html

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<scriptsrc="https://www.paypal.com/sdk/js?client-id=MY_SANDBOX_CLIENT_ID"></script>

<h1>you are about to pay {{ trade.price }}</h1>
<div id="paypal-button-container"></div>

<script>
            paypal.Buttons({
                createOrder: function (data, actions) {
                    return actions.order.create({
                        purchase_units: [{
                            amount: {
                                value: '{{trade.price}}'
                            }
                        }]
                    });
                },
                onApprove: function (data, actions) {
                    return actions.order.capture().then(function (details) {
                        $.ajax({
                            url: "{% url 'payment:pay_trade' trade.id %}",
                            data: {
                                csrfmiddlewaretoken: "{{ csrf_token }}"
                            },
                            method: 'POST',
                            success: function (response) {
                                alert('Successfully paid')
                            },
                            error: function (response) {
                                alert('something went wrong')
                            }
                        })
                    });
                }
            }).render('#paypal-button-container');
        </script>

功能:

def pay_trade(request, trade_id):
    trade = get_object_or_404(Trade, pk=trade_id)
    if request.method == 'GET':
        return render(request, 'payment/pay_trade.html', {'trade': trade})
    else:
        # Give something to the buyer
        # No idea how to check if the transaction was made but i hope so ;-;
          return JsonResponse({})

另外,如果有人可以在使用功能之前帮我检查付款是否完成,那就太好了,谢谢!

标签: javascriptdjangopaypaldjango-paypal

解决方案


如果您想检查付款是否完成,您应该切换到 v2/orders/checkout API 的适当服务器端集成,无论是否使用 Checkout-Python-SDK。

您需要两条路线,一条用于“设置交易”,另一条用于“创建交易”,此处记录:https ://developer.paypal.com/docs/checkout/reference/server-integration/

然后更改您的按钮代码以调用这两条路线:https ://developer.paypal.com/demo/checkout/#/pattern/server


对于互相付费的用户,添加一个payee对象:https ://developer.paypal.com/docs/checkout/integration-features/pay-another-account/


推荐阅读