gpt4 book ai didi

php - Stripe 3 层支付订阅

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:10 26 4
gpt4 key购买 nike

我正在使用 Stripe 创建一个订阅网站,并希望为其设置 3 个计费选项:

  • 1 个月 = 12.99 美元
  • 6 个月 = 70.00 美元
  • 12 个月 = 200 美元

想要在 3 个并排的 div 中显示这些

我的问题是...如何设置表单以使用 1 个 ActionScript ?

我假设使用 if/else 语句,但我的编码有点生疏。

如果金额等于 3 个计划中的 1 个的金额,我想用它来确定发送给 Stripe 的计划。

这是我的 3 个表格:

<form action="/premium/premium_charge.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $stripe['publishable']; ?>"
data-email="<?php echo escape($data->email); ?>"
data-image="/images/logo-stripe.png"
data-name="My Site"
data-description = "1 Month Membership"
data-amount="1299"
data-currency= "usd"
data-label="1 MONTH">
</script>
</div>
</form>

<div align="center">
<form action="/premium/premium_charge.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $stripe['publishable']; ?>"
data-email="<?php echo escape($data->email); ?>"
data-image="/images/logo-stripe.png"
data-name="My Site"
data-description = "6 Month Membership"
data-amount="7000"
data-currency= "usd"
data-label="6 MONTHS">
</script>
</div>
</form>

<div align="right">
<form action="/premium/premium_charge.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $stripe['publishable']; ?>"
data-email="<?php echo escape($data->email); ?>"
data-image="/images/logo-stripe.png"
data-name="My Site"
data-description = "Annual Membership"
data-amount="12000"
data-currency= "usd"
data-label="YEAR">
</script>
</div>
</form>

这是我的带有 if 语句的 ActionScript :如您所见,我正在尝试从上面的表单中提取数据量以用于我的 IF 语句,并传递给我的 $customer 计划,但很确定我把它搞得一团糟..:0{

$x = ("data-amount")==1299;
$y = ("data-amount")==7000;
$z = ("data-amount")==12000;

if($x == true){
echo ('001');
}
elseif($y == true){
echo ('002');
}
elseif($z == true){
echo ('003');
}


require_once '../core/init.php';


if(isset($_POST['stripeToken'])) {
$token = $_POST['stripeToken'];


try{


$customer = \Stripe\Customer::create(array(
'email' => $data->email,
"source" => $token, // obtained with Stripe.js
'plan' => $x->$y->$z

));

如果有人能指导我,我将不胜感激。

最佳答案

传递给 Checkout 的金额和货币表单(通过 data-amountdata-currency 参数)仅用于显示目的。它们不会发送到您的后端 PHP 代码。

这是设计使然:除非客户明确选择金额(例如,如果您接受捐赠),您不应相信客户浏览器发送的金额,因为更改它是微不足道的。

您应该做的是发送一个标识符,该标识符可用于您的服务器端代码以确定要收取的正确金额。由于您使用的是订阅,因此可以直接使用订阅 plan的编号。

假设您的三个计划的 ID 是 1month , 6months12months分别。您可以为每个报价包含一个具有不同值的隐藏参数:

<form action="/premium/premium_charge.php" method="POST">
<input type="hidden" name="plan" value="1month" />
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $stripe['publishable']; ?>"
data-email="<?php echo escape($data->email); ?>"
data-image="/images/logo-stripe.png"
data-name="My Site"
data-description = "1 Month Membership"
data-amount="1299"
data-currency= "usd"
data-label="1 MONTH">
</script>
</div>
</form>

您将对其他 2 个表单重复此操作,更改 plan 的值参数 6months12months分别。

然后,在您的服务器端代码中,您可以检索 plan 的值参数以及 stripeTokenstripeEmail Checkout 发送的参数,并将这些参数用于 create the customer使用正确的订阅:

$customer = \Stripe\Customer::create(array(
'source' => $_POST['stripeToken'],
'email' => $_POST['stripeEmail'],
'plan' => $_POST['plan']
));

关于php - Stripe 3 层支付订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com