2017-04-24 1 views
2

Ich erstelle eine Abonnement-Seite-Streifen verwenden und es mit 3 Abrechnungsoptionen einzurichten:Stripe 3 Tier Zahlung Abonnement

  • 1 month = $ 12.99
  • 6 Monate = $ 70.00
  • 12 Monate = $ 200

Wollen sie diese in 3 Side-by-Side-divs anzuzeigen

Meine Frage ist ... Wie kann ich den fo eingestellt rms, um 1 Aktionsskript zu verwenden?

Ich nehme an, mit if/else Aussagen, aber ich bin ein wenig eingerostet auf meine Codierung.

Wenn der Betrag gleich der Menge von 1 der 3 Pläne ist, würde ich gerne den Plan bestimmen, der an Stripe gesendet wird.

Hier sind meine drei Formen:

<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> 

Hier ist meine Action Script mit dem if-Anweisungen: Wie man sehen kann ich versuche, über die Daten-Mengen aus der obigen Form zu ziehen in meinen IF-Anweisungen verwenden, und zu meinem $ Kunden Plan weitergeben, aber ziemlich sicher, dass ich das ziemlich schlecht abgeschlachtet up ..: 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 

)); 

Wenn jemand mich leiten konnte ich es schätzen würde.

Antwort

1

Der Betrag und die Währung, die an das Formular Checkout (über die Parameter data-amount und data-currency) übergeben werden, dienen nur zur Anzeige. Sie werden nicht an Ihren Backend-PHP-Code gesendet.

Dies ist von Entwurf: Wenn der Betrag nicht ausdrücklich vom Kunden ausgewählt wurde (z. B. wenn Sie Spenden annehmen), sollten Sie einem vom Browser des Kunden gesendeten Betrag nicht trauen, da es einfach ist, ihn zu ändern.

Sie sollten stattdessen einen Identifikator senden, der in Ihrem serverseitigen Code verwendet werden kann, um den korrekten zu ladenden Betrag zu ermitteln. Da Sie Abonnements verwenden, können Sie direkt die ID des Abonnements plan verwenden.

Nehmen wir an, die IDs Ihrer drei Pläne lauten 1month, 6months bzw. 12months. Sie könnten einen versteckten Parameter mit einem anderen Wert für jedes Ihrer Angebote enthalten:

<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> 

Sie würden wiederholen Sie dies für die anderen zwei Formen, den Wert des plan Parameter 6months und 12months bzw. zu verändern.

Dann in Ihrem serverseitigen Code, können Sie den Wert des plan Parameter zusammen mit den von Kasse, schickte stripeToken und stripeEmail Parameter abrufen und diejenigen zu create the customer mit dem richtigen Abonnement verwenden:

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

Thank Sie für Ihre Hilfe. Solch eine einfache Lösung habe ich übersehen. Alles funktioniert jetzt richtig. Schätze deine Zeit. – echo

+0

@echo Froh ich könnte helfen :) – Ywain