php-keygen для Avangate и Asprotect

January 18th, 2009 Begemot Posted in Шаровароварение

Имел тут недавно день увелекательного секса процесса скрещивания php, системы ipn\idn авангейта и кейгена для аспротекта. Надо сразу сказать что прикрутить внешний кейген к Авангейту, на порядок сложнее чем к плимусу (я подразумеваю человека для которого пхп не родной). Система более сложная в плане передаваемых данных, требует проверки принимаемых и подписывания отправляемых данных, подтверждения получения ipn и подтверждения доставки ключа.

Конечн, о всегда можно использовать статический или даже динамический спискок ключей, но мы не ищем легких путей 🙂

О терминах

IPN – Instant Payment Notification – вызов вашего скрипта с параметрами содержащими данные о продажи

IDN – Instant Delivery Notification – тут уже вы должны вызвать скрипт на сайте авангейта, что бы подтвердить, что вы доставили ключ покупателю. Деньги не снимутся, пока вы этого не сделаете, как альтернатива можно делать руками в контрольной панели)

В принципе у Авангейта  есть пример php скрипта для IPN, но какой-то уж сильно… никакой. Там есть только код для проверки истиности полученных данных (они подписываются)  и отсылки ответа что данные полученны (тоже с  подписью), а учитывая их не самый простой формат данных, было бы хорошо если бы они включили и код для их разбора\интерпретации.  Примера для IDN вообще отсутсвует:(  Правда есть документация для всего этого, так что где наша не пропадала. Примеры и спецификации можно скачать в секции docs.

Теперь необходимый disclaimer

  • Код кейгена скорее всего крайне далек от совершенство. Так как пхп у меня со словарем, и вообще это мой второй или третий скрипт, и первый за последнии 4 года:)
  • Тем нее менее, код вроде работает и делает все что требуется. Правда у меня он тестировался\работал только в режиме наличия одного продукта, в ордере. Так что по крайне мере в качестве базы для того что бы понять как правильно взаимодейтсвовать с авангейтом его можно взять.
  • Ну и разумеется я не несу ответственности за любые ошибки, ущерб ну и так далее.
  • С удовольствием приму любые замечания, поправки, комментарии, а также пиво и печеньки 🙂

Скачать скрипт.

Related:

10 Responses to “php-keygen для Avangate и Asprotect”

  1. Николай, очень интересный пост. Спасибо!

    Несколько комментариев:
    Вы правы, настройка скриптов в системе Avangate требует минимальных знаний PHP 🙂
    Примеры скриптов, о которых вы говорите, созданы только в информативных целях. Дополнительно, в Панели доступна техническая документация (Control Panel – Resources – Technical docs).
    А также, Avangate Support Team всегда рада оказать поддержку клиентам, у которых возникают проблемы с настройками кейгена, и не только.
    Связаться с сотрудниками Техотдела можно по емайлу – supportplus@avangate.com, или по Live Support, доступный прямо с Панели Управления (Live Support активируется при запросе, и я только что сделала это для Вас 🙂 ).

  2. эээ я утверждал несколько обратное по поводу необходимости знаний:)

    Спасибо, за Live Support.

  3. Отличный пост и как всегда вовремя, в самую точку. Сейчас сам прикручиваю Avangate к сайту – благо имхо последняя бета выложена и через пару дней финал – самое время.
    Хотелось бы понять есть ли какой-нибудь простой способ прикрутить именно извещение от Avangate чтобы отсылать ключи самому? Кстати именно на этот вопрос саппорт Avangate выслал недетскую документацию по скрипту… Но сдается мне должен быть куда проще способ – благо ситуация типовая, зачем же в очередной раз изобретать велосипед на своем сайте с PHP, если в Avangate по идее должны уже были не по разу встречаться с этой проблемой!?! Наверняка же есть стандартное и проверенное временем решение!?!
    PHP в общем-то конечно особой проблемы не составляет, да и скриптов я написал аж 5-6 – гигант мысли. Но все таки зачем изобретать велосипед!?!
    В том же Plimus это делается минуты за три от силы, из которых полторы на аутентификацию на их сервере уйдет… Хотелось бы такой же простоты и в Avange! Не попадалась ли какая-то информация именно об извещениях на мыло?
    PS: 2Begemot – спасибо за статью – крайне интересно и актуально.
    PPS: в статье опечатка нужно писать “поимел увлекательного секоса” 🙂

  4. эээ не совсем понял, задачу, ты хочешь просто получать информацию об ордере на е-майл и руками отсылать ключи?
    Дык это самая что ни на есть стандартная фича, даже делать ничего не надо – нотификация сама уходит 🙂 или я не так понял ???

  5. Да – именно так! Хочу нотификацию себе на мыло с адресом клиента и ключик отсылать сам. Все собственно просто: защита своя полностью с нуля, так что мудрить с кей-геном для Юниксового сервера мягко говоря совсем не с руки, особенно если учесть что софт для Windows и не о каком порте на *Nix`ы и речи никогда не шло (с соответствующей поддержкой портабельности кода на *Nix`ы).
    Я собственно у них и спросил как насчет нотификации – в ответ пришла немеренная дока в PDF, а сдается мне должна быть где-нибудь банальная галка в контрольной панели…

  6. нотификация на мыло идет по умолчанию, так же как у любого другого регистратора.

    Но есть 1 ньюанс, у Авангейта надо подтверждать доставку каждого ордера – либо руками в контрольной панели, либо писать пхп скрипт который дергать, а уже пхп будет говорить авангейту что ключ доставлен. Код для подтверждения доставки (IDN) можно получить взяв мой кейген и допилив напильником:)

    Еще как вариант, спросить Авангейт не могут ли они захостить виндовый кейген на своем сервере, вполне возможно что могут.

  7. А смысл мне что-то подтверждать Авангейту?
    Т.е. с Плимусом ситуация ясна – они проаппрувили клиента, убедились что все зер гут, не террорист, но и не антитеррорист со свежеспертой у Бинладена кредиткой – все свои дела закончили и отослали мне мыло, чтобы я отправлял ключ.
    А тут собственно что я подтверждаю? Что ключ доставлен? А зачем им это? Ведь все равно они уже должны вроде как к этому моменту закончить все платежные дела с клиентом, и если что не так (ключ не отправлен) – клиент все равно с них спросит. И в любом случае будем разбираться видимо втроем – клиент, не получивший ключ, Авангейт который получил платеж и известил меня, и я такой плохой, который ключ не выслал. Как бы гипотетическая ситуация – на деле то понято – что как всегда антиспам у клиента сработал или другая техническая неувязка. Хотя отродясь такого не было.
    Или Авангейт известит меня мылом до всех проверок и приема платежа!?! Тоже ситуация странная!?! Думаю с покупками по краденной кредитке встречались все (я так регулярно – каждый год, 31 декабря, сидя в бане, поняв что кряк не получаицца или получаицца но плохо кардеры идут к регистратору… :). А в этой ситуации как бы и красть ничего не нужно – отменил платеж и порядок…
    Просто меня несколько запутала ситуация в панели Авангейта что мол либо динамический список, либо статический.
    В любом случае спасибо за помощь и мысли!

  8. С Авангейтом все тоже самое что и с любым другим регистратором, кроме момента подтверждения покупки ( хотя нет, не любым, у софткея еще так же примерно)

    1. Авангейт Априувит ордер, высылает тебе письмо нотификацию
    2. Ты отправляшь ключ
    3. Идешь в контрольную панель и подтверждаешь что ключ отправил.
    4. Авангейт снимает деньги
    (я конечно точно не знаю, но думаю что работает оно так)
    Если ты используешь их систему ключей – динамический или статический список – тогда наверное подтверждать доставку не надо.

    Автотизировать подтверждение доставки можно пхп скриптом 🙂

  9. 1. Большое спасибо за помощь, вроде разобрался более-менее. 2. А URL для подтверждения, что ключ отправлен где прописывается!?! На мыло пришла нотификация про тестовый заказ, но в самом мыле нет этой инфы и такого URL. Т.е. я могу только через панель в Avangate все это сделать!?!

  10. 1. Либо через контрольную панель
    2. Либо дергнув скрипт по специальному урл (есть в документации – IDN), но скрипту надо передавать кое-какие параметры + хеш от них, поэтому думаю что использовать его в ручном режиме не получится. Только в связке IPN+IDN, так как это сделано в моем примере.