Введение
JustClick - Это такая платформа для инфобизнесменов, соль в том что там всё автоматизировано, повсюду цветастые кнопки на которых написано "сделать красиво".Что такое JustClick?
"херня забагованая" (с) тим-лид
Но к сожалению не всё так радужно. И вот мы - кучка программистов уже делаем свою SaaS, с шахматами и балеринами, но для начало нам нужно было плавно переводить все ресурсы. После того как была написана основа мы приступили к интеграции, а именно к покупки товаров. Соль в том что бы при покупки в JustClick, товар был бы доступен и в личном кабинете на нашей платформе, собственно кусок из моих похождений я постараюсь описать в данной записи.
Это не мы такие, это реквест такой
Мне очень понравилось что в JustClick было API и мне очень не понравилось какое у них API. Самый логичное решение сделать обмен через скажем JSON или хотя бы XML. Но нет, ребята решили что PHP у всех и нужно пользоваться чем-то сильно зависимым от подобных языков.
Но нам ли жаловаться.
Для начала нужно проделать такой финт конём (сразу скажу что с Asp.Net слабо знаком так-что быдлокодер костылём велосипед подгоняет)
-Берём и копируем отседова секретный ключ подписи "Мой магазин" - "Магазин" - "Настройки" - "RussianPostService и API"
-Создаём новую веб форму.
-Идём в товар, ставим в настройках API в графе оповещения ссылку на нашу форму.
-В форме ловим пост запрос который выглядит так в PHP и отправляется через urlencode(!):
-Идём в товар, ставим в настройках API в графе оповещения ссылку на нашу форму.
-В форме ловим пост запрос который выглядит так в PHP и отправляется через urlencode(!):
array( 'id' => номер заказа 'first_name' => имя клиента 'last_name' => фамилия клиента 'middle_name' => отчество клиента 'email' => мейл клиента 'phone' => телефон клиента 'city' => город доставки 'country' => страна доставки 'address' => адрес доставки 'region' => регион доставки 'postalcode' => почтовый индекс 'created' => время создания заказа 'paid' => время оплаты заказа 'items' => array( массив товаров array( 'id' => символьный идентификатор 'title' => название товара 'sum' => стоимость товара ), array( 'id' => символьный идентификатор 'title' => название товара 'sum' => стоимость товара ), ... ) 'hash' => md5(номер заказа + мейл клиента + дата оплаты + секретный ключ) )До нас доходит примерно следующее
id=3224966&first_name=asf&
last_name=&middle_name=&email=*******&phone=&city=&country=RUS&address=sdf®ion=&postalcode=&created=1392641297&paid=1392641312&items[0][id]=ebook&items[0][title]=??????????? ?????&items[0][sum]=500.00&items[1][id]=0&hash=*********&
ASP.net своими силами пытается разбросать это всё по коллекции типа NameValueCollection
и скажу даже больше, у него это получается! Ну как получается....
Допустим мы можем взять из Request все не вложенные элементы.
Requeste["id"]; //norm Requeste["email"]; //norm Requeste["items"]; //EMPTY!!!
А фишка в том, что все вложенные элементы не парсятся до ещё одного набор коллекций. Нет. Оно превращается в ключи... Выгляди это примерно так:
Requeste["items[0][sum"]; //norm Requeste["items[2][sum"]; //norm
Работать как все понимают с этим трудно, и даже слегка больно.
Заключение
Все пидорасы один я дартаньян (c)
Либо я не секу фишку, либо ребятам из JustClick стоило сделать лучше. Но в любом случае надеюсь эта заметка кому нибудь пригодится.
Комментариев нет:
Отправить комментарий