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

如何通过高级变量或HTML代码为PayPal订阅按钮添加运费

解决PayPal订阅结账环节添加独立配送费的问题

方案一:利用PayPal托管按钮后台配置(推荐,安全便捷)

你当前使用的是托管订阅按钮(cmd="_s-xclick"),这类按钮的参数由PayPal后台管控,直接在HTML里加shipping参数无效,需通过以下步骤配置运费:

  • 登录PayPal商家账户,进入「工具」→「按钮管理器」
  • 找到对应托管按钮(hosted_button_id="XYZ"),点击「编辑」
  • 在编辑界面找到「运费和税」模块,勾选「启用运费」
  • 可设置固定运费,或针对你的配送区域(Easton/St. Werburghs/St. Pauls)设置差异化运费:选择「基于地区的运费」,添加各区域对应的金额即可
  • 保存后,用户结账时选择配送区域,PayPal会自动显示独立的配送费条目,与商品价格分离

方案二:改用非托管订阅按钮(自定义程度高)

若需完全通过HTML控制参数,可替换为非托管订阅按钮(cmd="_xclick-subscriptions"),手动添加运费参数并通过JS联动区域选择。修改后的代码如下:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <!-- 替换为你的PayPal商家邮箱/ID -->
    <input type="hidden" name="business" value="your-merchant-email@example.com">
    <input type="hidden" name="currency_code" value="GBP">
    <input type="hidden" name="no_note" value="1">
    <input type="hidden" name="src" value="1"> <!-- 开启自动续费 -->
    <input type="hidden" name="sra" value="1"> <!-- 续费失败时自动重试 -->

    <table>
        <tr>
            <td>
                <input type="hidden" name="on0" value="How many would you like?">How many would you like?
            </td>
        </tr>
        <tr>
            <td>
                <select name="os0" onchange="updateSubscriptionPrice(this.value)">
                    <option value="1">1 : £2.20 GBP - weekly</option>
                    <option value="2">2 : £4.20 GBP - weekly</option>
                    <option value="3">3 : £6.00 GBP - weekly</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                <input type="hidden" name="on1" value="Select your delivery area">Select your delivery area
            </td>
        </tr>
        <tr>
            <td>
                <select name="os1" onchange="updateShippingFee(this.value)">
                    <option value="Easton">Easton - £0.25 GBP</option>
                    <option value="St. Werburghs">St. Werburghs - £0.30 GBP</option>
                    <option value="St. Pauls">St. Pauls - £0.20 GBP</option>
                </select>
            </td>
        </tr>
    </table>

    <input type="hidden" name="a3" id="subscriptionPrice" value="2.20"> <!-- 初始商品订阅价 -->
    <input type="hidden" name="p3" value="1"> <!-- 计费周期时长(1) -->
    <input type="hidden" name="t3" value="W"> <!-- 计费周期单位:W=周 -->
    <input type="hidden" name="shipping" id="shippingFee" value="0.25"> <!-- 初始运费 -->

    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

<script>
// 根据数量更新订阅价格
function updateSubscriptionPrice(selectedValue) {
    const priceMap = {
        "1": "2.20",
        "2": "4.20",
        "3": "6.00"
    };
    document.getElementById("subscriptionPrice").value = priceMap[selectedValue];
}

// 根据配送区域更新运费
function updateShippingFee(selectedArea) {
    const shippingMap = {
        "Easton": "0.25",
        "St. Werburghs": "0.30",
        "St. Pauls": "0.20"
    };
    document.getElementById("shippingFee").value = shippingMap[selectedArea];
}
</script>

关键说明

  • 托管按钮(_s-xclick)的参数均存储在PayPal后台,前端自定义参数会被忽略,这是你之前添加shipping=0.25无效的核心原因
  • 非托管按钮需替换为你的商家邮箱/ID,且确保账户允许非托管支付配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:32:02