2017-04-24 9 views
2

私はストライプを使用してサブスクリプションサイトを作成し、3つの請求オプションでそれを設定したいよ:ストライプ3層の支払サブスクリプション

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

私の質問は、私はFOを設定することができますどのように...ある3サイドバイサイドのdivでこれらを表示します1つのアクションスクリプトを使用するrms?

私はif/elseステートメントを使用すると仮定しますが、私はコーディングで少し錆びます。

金額が3つのプランのうちの1つの金額に等しい場合、私はプランを決定してストライプに送ることを希望します。ここで

は私の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-amountおよびdata-currencyのパラメータを介して)に渡される金額と通貨は表示目的でのみ使用されます。バックエンドのPHPコードには送られません。

金額はお客様が明示的に選択しない限り(たとえば、寄付を受け入れる場合など)、顧客のブラウザから送信された金額を信用しないでください。変更するのは簡単ではありません。

代わりに行うべきことは、サーバー側のコードで使用される識別子を送信して、課金される正確な金額を決定することです。サブスクリプションを使用しているため、サブスクリプションplanのIDを直接使用することができます。

3つのプランの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

関連する問題