Подтвердить что ты не робот

Stripe checkout.js с купонами

Я использую Stripe checkout.js, потому что он так прост в настройке и использовании. Есть ли способ добавить купоны?

<script src="https://checkout.stripe.com/v2/checkout.js"
    class="stripe-button"
    data-key="pk_test_czwzkTp2tactuLOEOqbMTRzG"
    data-amount="2000"
    data-name="Demo Site"
    data-description="2 widgets ($20.00)"
    data-image="/128x128.png">
</script>
4b9b3361

Ответ 1

Stripe Checkout в настоящее время не поддерживает купоны. Он не указан в документации для кнопки или пользовательской интеграции.

Можно подумать, есть ли какая-то секретная особенность. Однако использование недокументированных функций, особенно когда речь заходит о вашем платежном процессоре, является плохой идеей. Полная остановка.


Это переполнение стека - продолжайте копать!

Запустите jsfiddle. Вставьте свой код в раздел html. Откройте инструменты разработчика, чтобы вы могли видеть сетевые запросы.

Существует en.json, который является интернационализированным файлом строк. Если есть вход для купонов, должен быть ярлык с надписью "Введите код купона" или что-то подобное. Здесь ничего нет. (Конечно, есть вероятность, что Stripe решила жестко закодировать эту конкретную строку, но это кажется маловероятным).

https://checkout.stripe.com/v3/data/languages/en.json

Вы также можете увидеть, что inner.js используется для включения всплывающего окна. Скопируйте источник в js beautifier, и вы обнаружите, что нет упоминания. Фактически, вы можете видеть код, который анализирует параметры, и ни один из них не связан с купонами.

"lib/optionParser": function(exports, require, module) {
    (function() {
        var BOOLEAN_OPTIONS, DEFAULTS, STRING_OPTIONS, URL_OPTIONS, extractValue, helpers, toBoolean, _;
        _ = require("vendor/lodash");
        helpers = require("lib/helpers");
        DEFAULTS = {
            currency: "usd",
            allowRememberMe: true
        };
        BOOLEAN_OPTIONS = ["billingAddress", "shippingAddress", "notrack", "nostyle", "allowRememberMe", "allowPhoneVerification", "zipCode", "trace", "alipayReusable", "bitcoin"];
        STRING_OPTIONS = ["key", "amount", "name", "description", "panelLabel", "currency", "email", "locale", "alipay"];
        URL_OPTIONS = ["url", "referrer", "image"];

Вы можете увидеть, как каждый из параметров здесь выравнивается один на один с параметрами, доступными для пользовательской интеграции, которые сопоставляются с параметрами кнопки (вы просто нужно использовать дефисы вместо верблюда)

На этом этапе вы можете продолжать копать, если хотите убедить себя дальше, но я бы обратился к поддержке Stripe и сделал запрос функции. Счастливые копания!

Ответ 2

Checkout создает только токен. Купон применяется к клиенту после того, как токен возвращается на сервер и клиент взимается.

stripe.Customer.create(
  source=token,
  plan="basic_monthly",
  email="[email protected]",
  coupon="coupon_ID"
)

Ответ 3

Если вы хотите передать купон на свой конец, вы можете просто добавить поле ввода для него в форму. Однако он не будет изменять суммы в всплывающей форме из полоски, если вы не хотите получить сложную информацию и вызвать дополнительный javascript, чтобы проверить параметры введенного кода купона и изменить параметры полосы script.

Вы можете включать любые входы, необходимые в тегах формы, если они не используются полосой.

<form action="/your-server-side-code" method="POST">
  Coupon Code: <input type="text" name="coupon_code">
  <br>
  <script src="https://checkout.stripe.com/v2/checkout.js" class="stripe-button" data-key="pk_test_czwzkTp2tactuLOEOqbMTRzG" data-amount="2000" data-name="Demo Site" data-description="2 widgets ($20.00)" data-image="/128x128.png">
  </script>
</form>