You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PayPal智能按钮交易中获取Django应用已登录用户的用户名

解决方案

PayPal智能按钮本身是前端JS组件,无法直接读取Django服务端的用户登录状态,你需要先把Django侧的登录用户名传递到前端页面,再注入到createOrder函数的description参数中即可,具体操作步骤如下:

步骤1:Django视图传递用户名到模板

在渲染承载PayPal按钮的页面对应的视图中,把当前登录用户的用户名传入模板上下文:

# 视图函数示例
from django.shortcuts import render

def payment_page(request):
    # 已登录用户传用户名,未登录可以传空值或者跳转登录页
    context = {
        "current_username": request.user.username if request.user.is_authenticated else ""
    }
    return render(request, "your_payment_page.html", context)

如果你用的是类视图,在get_context_data方法里添加current_username参数即可。

步骤2:前端模板注入用户名到PayPal配置

在你的前端页面模板里,把Django传过来的用户名插入到createOrder函数的description字段里,示例代码如下:

<!-- PayPal SDK加载逻辑保持你原有配置即可 -->
<div id="paypal-button-container"></div>
<script>
    paypal.Buttons({
        createOrder: function(data, actions) {
            // 注入Django传递的用户名
            const username = "{{ current_username|escapejs }}";
            // 替换为你原本的描述内容,拼接用户名即可
            const description = `订单服务内容 - 下单用户:${username}`;
            return actions.order.create({
                purchase_units: [{
                    description: description,
                    amount: {
                        value: '你的实际订单金额'
                    }
                }]
            });
        },
        // onApprove等其余回调逻辑保持你原有配置即可
    }).render('#paypal-button-container');
</script>

注意必须加escapejs模板过滤器,避免用户名中的特殊字符导致JS语法报错。

验证方式

你可以在PayPal开发者后台的订单记录里查看对应订单的description字段,确认用户名已经正常写入。

内容的提问来源于stack exchange,提问作者dos29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:30:02