2017-04-24 131 views
2

我使用条纹创建预订网站,并希望用3个计费选项进行设置:条纹3级支付订阅

  • 1个月= $ 12.99
  • 6个月= $ 70.00
  • 12个月= $ 200

要在3并排侧的div

我的问题是,以显示这些......我怎么能设置FO rms最多可以使用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 

)); 

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

回答

1

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

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

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

假设您的三个计划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种形式,分别改变​​参数的值6months12months

然后,在你的服务器端代码,您可以检索与结帐发送stripeTokenstripeEmail参数一起​​参数的值,并使用它们来create the customer用正确的订阅:

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

谢谢你的帮助。我忽略了这样一个简单的解决方案。现在一切正常。欣赏你的时间。 – echo

+0

@echo很高兴我能帮忙:) – Ywain