Я пытался внедрить Stripe, и не нужно беспокоиться о стоимости доставки, это очень просто, у меня был этот код, который работал нормально:
<form action="payment.php" method="POST">
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="xxxxxxxxxxxxxxxxxxxxxxxxxxx"
data-amount="2500"
data-name="some name"
data-description="some description"
data-label="{{ order.button_name|e }}"
data-locale="auto"
data-zip-code="true"
data-billing-address="true"
data-shipping-address="true"
data-currency="aud">
</script>
</form>
Теперь, насколько я понимаю, мне нужно решить / или получить стоимость доставки от Stripe до . Я заполняю этот код (или динамически обновляю его), чтобы можно было учитывать доставку.
Я читал об API заказов , и, похоже, вам необходимо создать позицию заказа , чтобы: получить налоговые и транспортные расходы от Stripe
Таким образом, с учетом этого, похоже, что это нужно сделать до того, как пользователь нажмет кнопку оплаты, чтобы у вас были правильные транспортные расходы, чтобы добавить к сумме их списания - но я запутался, не стоит " заказ "будет создан только после они на самом деле заказали предмет; но похоже, что это просто вопрос терминологии из того, как читают документы.
Во-вторых, для того, чтобы рассчитать стоимость доставки, мне нужно было бы получить с пользователей адрес доставки, прежде чем разрешить им запускать способ оплаты, так что это означает, что я не буду просить об этом в способе оплаты - однако в таком случае как Stripe узнает информацию об их адресе, если они не вводят ее в способ оплаты?
Звучит так, как будто я передал бы идентификатор заказа , возвращенный из Order API , чтобы каким-то образом пройти через кассу?
Так что, в основном, я просто запутался в том, как это меняет вещи при использовании Order API в сочетании с Checkout.
Что происходит после получения объекта заказа и как он отличается от текущего кода, с которым я работаю выше, и отличается ли код на стороне сервера от стандартного Checkout? Кажется, стандартная проверка "создание заряда", например:
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];
$charge = \Stripe\Charge::create([
'amount' => 999,
'currency' => 'usd',
'description' => 'Example charge',
'source' => $token,
]);
... и используя API заказа, мы делаем что-то другое:
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("xxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];
$order = \Stripe\Order::retrieve('or_1D2jGkKFk4dvoSd9xVrShgsg');
$order->pay(['source' => $token]);