2017-07-30 125 views
3

我需要允許用戶使用Stripe輸入自定義金額。他們在輸入時輸入他們想要支付的金額。然後我有一個腳本收集低於默認分條結賬按鈕的金額。但我該如何處理charge.php上的服務器端計費?使用Stripe和PHP處理可變金額(捐贈)

donation.php

//user enter custom amount 
    <input type="number" class='form-control' 
    id="custom-donation-amount" 
    placeholder="$50.00" min="0" step="10.00 " /> 

    //default stripe checkout button 
     <script 
     src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
     data-key="pk_test_XXXXXXXXXXXXXXX" 
     data-amount="0" 
     data-name="ORGANIZATION" 
     data-description="Saving Penguins" 
     data-image="logo.png" 
     data-locale="auto" 
     data-zip-code="true" 
     data-billing-address="true" 
     data-label="DONATE" 
     data-currency="usd"> 
     </script> 

//script to collect variable amount 
    <script type="text/javascript"> 
    $(function() { 
     $('.donate-button').click(function(event) { 
      var amount = $('#custom-donation-amount').val();   
      $('.stripe-button').attr('data-amount', amount) 
     }); 
    }); 
</script> 

charge.php

<?php require_once('./config.php'); 

    $token = $_POST['stripeToken']; 
    $email = $_POST['stripeEmail']; 

    $customer = \Stripe\Customer::create(array(
     'source' => $token, 
     'email' => $email) 
); 

    $charge = \Stripe\Charge::create(array(
     'customer' => $customer->id, 
     'amount' => $amount, 
     'currency' => 'usd' 
)); 

    header("Location: confirmation.php"); 
die(); 


?> 

回答

4

<form>您放置結帳,你想也想添加一個輸入,從收集的金額用戶。注意:我已經給了我輸入的amount

<form method="POST" action="/charge.php"> 
<input type="number" class="form-control" name="amount" id="custom-donation-amount" placeholder="50.00" min="0" step="10.00" /> 
<script 
src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
data-key="pk_test_XXXXXXXXXXXXXXX" 
data-name="ORGANIZATION" 
data-description="Saving Penguins" 
data-image="logo.png" 
data-locale="auto" 
data-billing-address="true" 
data-label="DONATE" 
data-currency="usd"> 
</script> 
</form> 

一個名字在你的後臺結帳時提交,你可以抓住這個amount字段中的名稱,就像你會被條紋

令牌創建
$token = $_POST['stripeToken']; 
$email = $_POST['stripeEmail']; 
$amount = $_POST['amount']; 

// your code to create a charge 
// ... 

如果您希望動態更改Checkout窗口中顯示的金額,您應該使用Custom Checkout而不是基本的Checkout塊,否則它可能無法正確更新。

https://stripe.com/docs/checkout#integration-custom

或者,對於小提琴: https://jsfiddle.net/ywain/g2ufa8xr/

+0

這是偉大的,現在完美的作品。 –