2014-05-16 68 views
4

我正在用Stripe挣扎,我正在使用PHP,我试图建立一个简单的商店,没有CMS,想知道如何将金额传递给charge.php,以便我可以收取费用。不同量为不同的产品这里是我的代码:带条纹的动态付款

$charge = Stripe_Charge::create(array(
     'customer' => $customer->id, 
     'amount' => 1900;, 
     'currency' => 'gbp' 
)); 

下面是index.php文件的代码 - 我想给客户无论是在下面的表格中的“数据量”收费不太清楚如何这样做。

<form action="inc/charge.php" method="POST"> 
    <script 
      src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
      data-key="<?php echo $stripe['publishable_key']; ?>" 
      data-amount="1900" 
      data-currency="GBP" 
      data-name="Pure - Tumblr Theme" 
      data-allow-remember-me="false" 
      data-description="Premium Tumblr Theme" 
      data-image="/128x128.png"> 
      </script> 
</form> 

回答

0

你为什么要收费任何是在data-amount?你从哪里得到这个价值?数据量告诉Stripe用户允许您收费的内容。 Stripe_Charge :: create中的金额是您实际收取的金额。

您可以使用与数据量相同的值填充隐藏的输入字段。但我不知道你会从中得到什么。 你的PHP skript应该计算要支付的金额。不要相信客户。他可以改变数据量的值少付,即50 使用下面的电荷会的工作,但客户支付50便士,而不是1900年

$charge = Stripe_Charge::create(array( 'customer' => $customer->id, 'amount' => $_POST['hidden_amount']

询问条纹总量计算支付。如果客户与数据量混淆,则收费将失败。 'amount' => $shoppingcart->getTotal();,

3

更全面的,从index.php到charge.php,而不是相反。

<?php 
#set your variables 
$amount  = 500; 
$name   = 'My Company'; 
$currency  = 'gbp'; 
$description = 'Value Plan'; 
$uid   = get->your->uid; 
$email  = get->your->email; 
?> 

<center><form action="../charge.php" method="post"> 
<!-- make these hidden input types for the post action to charge.php --> 
<input type="hidden" name="amount"  value="<?php echo $amount?>"> 
<input type="hidden" name="name"  value="<?php echo $name;?>"> 
<input type="hidden" name="currency" value="<?php echo $currency;?>"> 
<input type="hidden" name="description" value="<?php echo $description;?>"> 
<input type="hidden" name="uid"   value="<?php echo $uid;?>"> 
<input type="hidden" name="email"  value="<?php echo $email;?>"> 

<script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 

     data-key =   "<?php echo $stripe['publishable_key']; ?>" 
     data-amount =  "<?php echo $amount;?>" 
     data-name =   "<?php echo $name;?>" 
     data-currency =  "<?php echo $currency;?>" 
     data-description = "<?php echo $description;?>" 
     data-email =   "<?php echo $user->data()->email; ?>" 
     data-billing-address =  "true" 
     data-allow-remember-me = "false" 
     > 

</script> 
</form></center> 

然后在charge.php可以调用输入值你的index.php藏

<?php 
$token  = $_POST['stripeToken']; 
$email  = $_POST['email']; 
$uid   = $_POST['uid']; 
$currency  = $_POST['currency']; 
$amount  = $_POST['amount']; 
$description = $_POST['description']; 

#This is the standard try catch block stripe suggests 
try{ 
$charge = Stripe_Charge::create(array(
"amount"  => $amount, 
"currency"  => $currency, 
"customer"  => $charge_to, 
"description" => $description 
)); 

} catch(Stripe_CardError $e) { 

$error = $e->getMessage(); 
// Since it's a decline, Stripe_CardError will be caught 
$body = $e->getJsonBody(); 
$err = $body['error']; 

print('Status is:' . $e->getHttpStatus() . "\n"); 
print('Type is:' . $err['type'] . "\n"); 
print('Code is:' . $err['code'] . "\n"); 
// param is '' in this case 
print('Param is:' . $err['param'] . "\n"); 
print('Message is:' . $err['message'] . "\n"); 
} catch (Stripe_InvalidRequestError $e) { 

// Invalid parameters were supplied to Stripe's API 
} catch (Stripe_AuthenticationError $e) { 
// Authentication with Stripe's API failed 
// (maybe you changed API keys recently) 
} catch (Stripe_ApiConnectionError $e) { 
// Network communication with Stripe failed 
} catch (Stripe_Error $e) { 
// Display a very generic error to the user, and maybe send 
// yourself an email 
} catch (Exception $e) { 
// Something else happened, completely unrelated to Stripe 
} 
?> 
+0

感谢这真的帮了我 – DCorrigan