我正在使用Stripe创建订阅网站,并希望使用3个结算选项进行设置:
想要在3个并排的div中显示这些
我的问题是......如何设置表格以使用1个动作脚本?
我假设使用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语句的动作脚本:正如您所看到的,我正试图将上述表单中的数据量用于我的IF语句中,并传递给我的$客户计划,但很确定我把它弄得很糟糕..: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
));
如果有人可以指导我,我会很感激。
答案 0 :(得分:2)
传递给Checkout表单的金额和货币(通过data-amount
和data-currency
参数)仅用于显示目的。它们不会发送到您的后端PHP代码。
这是设计原则:除非客户明确选择金额(例如,如果您接受捐赠),否则您不应该信任客户浏览器发送的金额,因为更改金额是微不足道的。< / p>
您应该做的是发送一个标识符,该标识符可以在您的服务器端代码中使用,以确定要收取的正确金额。由于您使用的是订阅,因此您可以直接使用订阅plan的ID。
假设您的三个计划ID分别为1month
,6months
和12months
。您可以为每个要约添加一个具有不同值的隐藏参数:
<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>
您将对其他两种表单重复此操作,将plan
参数的值分别更改为6months
和12months
。
然后,在您的服务器端代码中,您可以检索plan
参数的值以及Checkout发送的stripeToken
和stripeEmail
参数,并将其用于{{ 3}}使用正确的订阅:
$customer = \Stripe\Customer::create(array(
'source' => $_POST['stripeToken'],
'email' => $_POST['stripeEmail'],
'plan' => $_POST['plan']
));