2017-04-24 128 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