修改Stripe订阅支付脚本:通过PHP变量设置自定义价格
用PHP变量自定义Stripe订阅价格的修改方案
你的现有脚本直接硬编码了Stripe控制台的价格ID,要改成用PHP变量设置自定义价格,需要先创建关联产品的自定义价格,再把这个价格ID传入Checkout Session。以下是修改后的完整代码:
// 可以从前端接收自定义金额,或者直接在后端定义 // $customAmount = $_POST['amount']; // 比如前端传的金额(单位:最小货币单位,如1000代表10美元) $customAmount = 1500; // 示例:15美元(Stripe要求金额用最小货币单位,人民币则用分) $currency = 'usd'; // 货币代码,人民币填'cny' // 创建产品 $product = $stripe->products->create([ 'name' => 'Gold Special', ]); // 基于产品创建自定义价格,用PHP变量配置金额、货币和订阅周期 $price = $stripe->prices->create([ 'unit_amount' => $customAmount, 'currency' => $currency, 'recurring' => ['interval' => 'month'], // 订阅周期可选month/year/week等 'product' => $product->id, ]); // 创建Checkout Session,使用刚生成的自定义价格ID $session = \Stripe\Checkout\Session::create([ 'success_url' => 'https://example.com/success.html?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => 'https://example.com/canceled.html', 'mode' => 'subscription', 'line_items' => [[ 'price' => $price->id, // 替换为自定义创建的价格ID 'quantity' => 1, ]], ]); // 跳转至Stripe支付页面 header("HTTP/1.1 303 See Other"); header("Location: " . $session->url); exit;
关键修改说明:
- 自定义金额配置:用
$customAmount定义订阅价格(注意Stripe金额规则:必须用对应货币的最小单位,比如美元用分、人民币用分),可以从前端POST接收动态值,也可以后端固定设置。 - 关联产品与价格:Stripe订阅模式要求
line_items中的price必须是关联了产品的价格ID,不能直接传入金额,因此新增了创建价格的步骤,用PHP变量配置核心参数。 - 替换硬编码价格:把原脚本中硬编码的Stripe控制台价格ID,替换为刚创建的
$price->id,实现自定义价格的动态生成。 - 清理无用代码:原脚本中
$priceId = '123'无实际作用,若需要从前端接收价格相关参数,可改为接收金额后赋值给$customAmount。
内容的提问来源于stack exchange,提问作者shadow1200
相关产品推荐
相关产品推荐

