Я пытаюсь реализовать метод использования нестандартного платежа в Stripe, представленный в следующем вопросе: пользовательская кнопка проверки полосы не заряжается. Пользователь вводит значение для суммы, которая отображается на кнопке отправки.
Index.php
<form action="charge.php" method="post">
<input class="form-control" type="number" id="donation-amount" placeholder="20.00" min="0" step="5.00"/>
<script src="https://checkout.stripe.com/v2/checkout.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<button id="customButton">Donate</button>
<script>
$('#customButton').click(function(){
var token = function(res){
var $input = $('<input type=hidden name=stripeToken />').val(res.id);
$('form').append($input).submit();
};
var amount = $("#donation-amount").val() * 100;
StripeCheckout.open({
key: 'pk_test_*************************',
address: false,
amount: amount,
currency: 'usd',
name: 'Test Customer',
description: 'Demo Description',
panelLabel: 'Checkout',
token: token
});
return false;
});
</script>
<input type="hidden" name="chargeamount" val=<?php amount ?>/>
</form>
Кнопка «Отправить» отображает правильную сумму, но при нажатии кнопки «Отправить» отображается белый экран без взимания платы.
Charge.php
<?php
require_once(dirname(__FILE__) . '/config.php');
$token = $_POST['stripeToken'];
$amount = $_POST['chargeamount'];
$customer = Stripe_Customer::create(array(
'email' => '[email protected]',
'card' => $token
));
$charge = Stripe_Charge::create(array(
'customer' => $customer->id,
'amount' => $amount,
'currency' => 'usd'
));
echo '<h1>Successfully charged '. $amount. '!</h1>';
?>
config.php
<?php
require_once('vendor/stripe/lib/Stripe.php');
$stripe = array(
"secret_key" => "sk_test_************************",
"publishable_key" => "pk_test_************************");
Stripe::setApiKey($stripe['secret_key']);
?>
$charge = Stripe_Charge::create(array(
'customer' => $customer->id,
'amount' => $amount
'currency' => 'usd'
));
echo '<h1>Successfully charged '. $amount .'!</h1>';
?>
Я думаю, что моя реализация input
в нижней части моей формы немного шатко, учитывая, что если я вставлю фиксированное число в мой $amount
переменная в charge.php, он действительно взимает этот платеж.
Будем очень благодарны любой помощи.
Да, ваш метод присвоения суммы форме неправильный. Вы должны сделать это, используя JavaScript
Обратите внимание, что любой может изменить сумму. так что вы можете проверить фактическую сумму до обработки платежа.
<form action="charge.php" method="post">
<!-- .... -->
<input class="form-control" type="number" id="donation-amount" placeholder="20.00" min="0" step="5.00"/>
<button id="customButton">Donate</button>
<!-- give an id to charge amount field -->
<input type="hidden" id="amount" name="chargeamount" val=""/>
<!-- .... -->
<script>
//....
var amount = $("#donation-amount").val() * 100;
//Assign the amount to the amount field.
$('input#amount').val(amount);
//....
</script>
</form>
Других решений пока нет …