Создание купона Chargify API - PullRequest
1 голос
/ 03 июля 2011

В настоящее время я работаю над проектом и сталкиваюсь с проблемой задачи. Я пытаюсь случайным образом сгенерировать 6-значный номер купона и опубликовать его для оплаты аккаунта через там API. Если создание купона прошло успешно, я хочу, чтобы тот же код купона был отправлен клиенту по электронной почте.

Согласно документации для chargify, вот как я должен отправить все детали для зарядки из моей заявки:

{"subscription":{
      "product_handle":"[@product.handle]",
      "customer_attributes":{
        "first_name":"Joe",
        "last_name":"Blow",
        "email":"joe@example.com"
      },
      "credit_card_attributes":{
        "full_number":"1",
        "expiration_month":"10",
        "expiration_year":"2020"
      },
      "coupon_code":"6 digit random code"
    }}
    """

https://[@subdomain].chargify.com/subscriptions.json.

Я могу создать 6-значный случайный числовой код этим методом:

rand(999999).to_s.center(6, rand(9).to_s).

Однако, похоже, это не работает для меня. Любые предложения будут высоко оценены.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 июля 2011

Я не являюсь частью нашего технического персонала или разработчика, но я на 99% уверен, что в этом вызове API вы можете указать только ранее определенный код купона. Вы должны определить коды купонов в веб-интерфейсе администратора Chargify. В приведенном выше вызове API вы можете применить купон к подписке, но предполагается, что вы уже определили этот код купона в интерфейсе администратора.

Мы добавим эту возможность в будущем, но у меня нет конкретной даты для вас.

Извините за это.

--- Лэнс Уолли --- Chargify

0 голосов
/ 03 июля 2011

Я не уверен, что вы пытаетесь сделать со своим звонком на center. Наиболее разумным было бы заполнить код купона нулем. Это сделало бы это:

"%06d" % rand(1000000)

При этом будут сгенерированы такие коды, как «664001» и «061532».

Обратите внимание, что вы хотите rand(1000000), а не rand(999999). Это потому, что rand дает вам случайные целые числа от 0 до единицы меньше, чем аргумент. rand(999999) даст вам только случайные числа до 999998.

В приведенном выше коде есть нарушение режима СУХОЙ (не повторяйте себя): и «06», и «1000000» зависят от длины кода купона. Вот исправление для этого:

COUPON_CODE_LENGTH = 6
"%0#{COUPON_CODE_LENGTH}d" % rand(10 ** COUPON_CODE_LENGTH)

Хотя и дольше, теперь есть только одна вещь, которую нужно изменить, если длина кода купона должна измениться. Замена «магических чисел» на именованную константу также помогает коду сообщить о своем намерении.

...