Stripe payments STRIPE-在charge.php上调用时,动态设置的amount返回null
我试图让用户通过Stripe动态设置他们捐赠的价值。我已经能够使用StripeAmount变量为'amount'赋值,但是当我尝试在charge.php文件中调用该变量时,该变量返回null。我一直在谷歌上搜索解决方案,但都没有成功。我是一个相对的新手 =表格代码=Stripe payments STRIPE-在charge.php上调用时,动态设置的amount返回null,stripe-payments,Stripe Payments,我试图让用户通过Stripe动态设置他们捐赠的价值。我已经能够使用StripeAmount变量为'amount'赋值,但是当我尝试在charge.php文件中调用该变量时,该变量返回null。我一直在谷歌上搜索解决方案,但都没有成功。我是一个相对的新手 =表格代码= <form id="target_form" action="charge.php" method="POST"> <script src="https://checkout.st
<form id="target_form" action="charge.php" method="POST">
<script src="https://checkout.stripe.com/checkout.js"></script>
<button class="stripe_button_style" id="myStripeButton">Give By Card</button>
<script>
var handler = StripeCheckout.configure({
key: "pk_test_xxxxxxxxxxxxxxxx",
image: "includes/images/stripe_logo.png",
token: function(token, args){
var form = $('#target_form');
form.append($('<input type="hidden" name="stripeToken" />').val(token.id));
form.get(0).submit();
}
});
document.getElementById('myStripeButton').addEventListener('click', function(e) {
var StripeAmount = $("#donation_amount").val() *100;
handler.open({
name: "company name",
description: "donation",
panelLabel: "Give:",
allowRememberMe: true,
amount: StripeAmount,
zipCode: true,
shippingAddress: true,
billingAddress: true
});
e.preventDefault();
});
$(window).on('popstate', function() {
handler.close();
});
</script>
</form>
刷卡
var handler=StripeCheckout.configure({
键:“pk_测试_uxxxxxxxxxxxxxx”,
图片:“includes/images/stripe_logo.png”,
令牌:函数(令牌,参数){
变量形式=$(“#目标形式”);
form.append($('').val(token.id));
form.get(0.submit();
}
});
document.getElementById('myStripeButton')。addEventListener('click',函数(e){
var StripeAmount=$(“#捐赠金额”).val()*100;
handler.open({
名称:“公司名称”,
说明:“捐赠”,
面板标签:“给:”,
我:是的,
金额:StripeAmount,
真的,
发货地址:对,
billingAddress:对
});
e、 预防默认值();
});
$(窗口).on('popstate',function()){
handler.close();
});
=Charge.php代码=
<?php require_once('includes/stripe/init.php');
$stripe = array(
"secret_key" => "sk_test_xxxxxxxxxxxxxxxxxxxxxxxx",
"publishable_key" => "pk_test_xxxxxxxxxxxxxxxxxxxxxxxx"
);
\Stripe\Stripe::setApiKey($stripe['secret_key']);
$token = $_POST['stripeToken'];
$email = $_POST['stripeEmail'];
try {
$customer = \Stripe\Customer::create(array(
'email' => $_POST['stripeEmail'],
'source' => $token));
$charge = \Stripe\Charge::create(array(
'amount' => $amount,
'customer' => $customer->id,
'currency' => "usd",
'description' => $email));
echo 'Thank you for your donation. We will send you a receipt by email for your tax records within 48hours';
var_dump($charge);
}catch(\Stripe\Error\Card $e){
echo $e->getMessage();
}
在服务器端代码中,$amount
从未初始化
另外,请注意,传递给的金额和货币用于显示目的。签出不会将金额和货币发送到服务器
您需要这样做:
更新客户端代码以将金额发送到服务器:
token: function(token, args) {
var form = $('#target_form');
form.append($('<input type="hidden" name="amount" />').val($("#donation_amount").val() * 100;));
form.append($('<input type="hidden" name="stripeToken" />').val(token.id));
form.get(0).submit();
}
我需要做一个小的编辑,但除此之外这是完美的。非常感谢。
$amount = $_POST['amount'];