我正在关注https://stripe.com/docs/checkout/guides/php中的基本示例,并且在查看 amount 如何确定并用于创建费用时遇到问题 .
我本以为/希望使用我创建的令牌,我能够检索与之关联的金额,并将此金额传递给\ Stripe \ Charge :: create()?
例如,我有一些PHP /模板代码,可以为一系列产品生成表单
# index.php
<?php require_once('./config.php'); ?>
<form action="charge.php" method="post">
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $stripe['publishable_key']; ?>"
data-amount="{$MY_AMOUNT}" data-description="One year's subscription"></script>
</form>
$ MY_AMOUNT将根据显示的产品而变化
现在charge.php接收帖子并创建一个费用,但是指定数组'amount'索引的值(当前为5000)的正确方法是什么?
<?php
require_once('./config.php');
$token = $_POST['stripeToken'];
$customer = \Stripe\Customer::create(array(
'email' => 'customer@example.com',
'card' => $token
));
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => 5000,
'currency' => 'usd'
));
echo '<h1>Successfully charged $50.00!</h1>';
?>
所以,我可以在这里考虑两种方法
-
每个产品的PHP页面,带有硬编码量 - 不,谢谢
-
将密钥和金额作为隐藏变量传递,这些似乎并不“正确”,因为它可以很容易地改变,例如下面
<form action="charge.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{$key}"
data-amount="{$amount}"
data-currency="GBP"
data-address="true"
data-name="{$name}"
data-description="{$description}"
data-image="logo.png">
</script>
<input name="myHiddenKey" type="hidden" value="{$amount}" />
<input name="myHiddenName" type="hidden" value="{$name}" />
</form>
1 回答
没有令牌只是允许您收费的预先检查,在Javascript中传递给Stripe的金额仅供Stripe用于显示目的 .
Stripe_Charge::create
是您实际通过金额的地方 .