Я борюсь с 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>
Более всеобъемлющий, перейдите от 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 } ?>
Почему вы хотите взимать плату за все data-amount
? Откуда вы получаете эту ценность? data-amount сообщает Stripe, что пользователь позволяет вам заряжать. сумма в Stripe_Charge :: create – это то, что вы на самом деле взимаете.
Вы можете заполнить скрытое поле ввода с тем же значением, что и количество данных. Но я не знаю, что вы выиграете от этого. Ваш PHP skript должен рассчитать сумму, которую нужно заплатить. Не доверяйте клиенту. Он мог бы изменить стоимость данных, чтобы заплатить меньше, то есть 50. Используя следующее, плата будет работать, но клиент платит 50 пенсов вместо 1900.
$charge = Stripe_Charge::create(array( 'customer' => $customer->id, 'amount' => $_POST['hidden_amount']
Спросите Stripe для общей расчетной оплаты. Если клиент столкнулся с суммой данных, плата будет терпеть неудачу. 'amount' => $shoppingcart->getTotal();,