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

通过复选框修改Stripe产品价格(PHP实现方案问询)

解决方案

1. 前端修改:传递复选框选中状态到后端

在checkout.js的handleSubmit函数中,添加代码收集两个复选框的选中状态,并在请求payment_init.php时将这些数据一并发送:

async function handleSubmit(e) {
    e.preventDefault();
    setLoading(true);

    let customer_name = document.getElementById("name").value;
    let customer_email = document.getElementById("email").value;
    // 收集复选框状态
    let urgent_selected = document.getElementById("urgentserviciu").checked;
    let whatsapp_selected = document.getElementById("whatssapserviciu").checked;

    const { id, customer_id } = await fetch("payment_init.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ 
            request_type:'create_customer', 
            payment_intent_id: payment_intent_id, 
            name: customer_name, 
            email: customer_email,
            urgent: urgent_selected, // 新增复选框状态字段
            whatsapp: whatsapp_selected // 新增复选框状态字段
        }),
    }).then((r) => r.json());

    // 后续Stripe确认支付代码保持不变
    const { error } = await stripe.confirmPayment({
        elements,
        confirmParams: {
            return_url: window.location.href+'?customer_id='+customer_id,
        },
    });
}

2. 后端修改:计算最终价格并生成支付意图

在payment_init.php中,先确保已正确获取JSON请求体,再根据前端传递的复选框状态计算最终总价,最后转换为Stripe要求的最小货币单位:

// 先获取前端传来的JSON数据
$jsonObj = json_decode(file_get_contents('php://input'), false);

if($jsonObj->request_type == 'create_payment_intent'){
    // 引入配置文件中的基础价格
    require_once 'config.php';
    
    $total_price = $itemPrice;
    // 根据复选框状态计算加价
    if(isset($jsonObj->urgent) && $jsonObj->urgent){
        $total_price += 10;
    }
    if(isset($jsonObj->whatsapp) && $jsonObj->whatsapp){
        $total_price += 2;
    }
    
    // 转换为RON的最小单位(分),符合Stripe金额要求
    $itemPriceCents = round($total_price * 100);
    
    // 后续创建Stripe Payment Intent的代码,使用$itemPriceCents作为金额参数
}

关键注意事项

  • 安全校验:绝对不能直接使用前端传来的总价,必须后端根据选中选项重新计算。前端数据可被篡改,直接使用会导致支付金额被恶意修改。
  • 参数合法性:可以在后端额外校验urgent和whatsapp字段的类型(确保是布尔值),避免非法参数干扰价格计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:54