Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: POST/cart покупка на яндексе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: POST/cart покупка на яндексе
Tyoma5891
Отправлено: 21 Октября, 2014 - 09:39:36
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Добрый день, коллеги!
хочу реализовать покупку на яндекс маркете для joomlashopping, прочитал документацию и много инфы, но никак не могу понять как мне обработать пост запрос входящий от яндекс маркета POST/cart вот документация:
https://github[dot]com/nixsolutions/[dot][dot][dot]rket-for-Partner
идет подключение библиотеки
PHP:
скопировать код в буфер обмена
  1. require_once 'phar://yandex-sdk_master.phar/vendor/autoload.php';


дальше инициализация
PHP:
скопировать код в буфер обмена
  1. use Yandex\Market\MarketClient;
  2. //
  3. $market = new MarketClient(ACCESS_TOKEN);
  4. $market->setClientId(CLIENT_ID);
  5. //логин, указанный при регистрации в партнерском интерфейсе
  6. $market->setLogin(MARKET_LOGIN);


и дальше код обработки этого запроса
PHP:
скопировать код в буфер обмена
  1. $postCartJson = file_get_contents("php://input");
  2. $cartRequest = new \Yandex\Market\Models\PostCartRequest();
  3. $cartRequest->fromJson($postCartJson);
  4. $currency = $cartRequest->getCart()->getCurrency();
  5. $requestedItems = $cartRequest->getCart()->getItems();


в настройках пишут:
Указывается базовый URL API, например: https://shop[dot]ru/market/api . Для такого примера вызов метода /cart будет приходить на URL: https://shop[dot]ru/market/api/cart .

вопрос в каком файле мне нужно распологать вышеуказаный код и по какому пути на сервере, чтобы я мог сделать хотябы тестовую покупку с их сервиса? как заставить отдавать ответ на запрос?
спасибо
(Добавление)
либо если можно пример как работает эта строчка
$postCartJson = file_get_contents("php://input");
где нужно размещать файл обработчика на который приходит входящий запрос этот?
 
 Top
RickMan
Отправлено: 21 Октября, 2014 - 11:04:07
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




По поводу php://input не пробовали гуглить?
http://php.net/manual/ru/wrappers.php.php
 
 Top
Tyoma5891
Отправлено: 21 Октября, 2014 - 11:30:54
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




RickMan пишет:
По поводу php://input не пробовали гуглить?
http://php.net/manual/ru/wrappers.php.php

та пробовал и как раз на этой ссылке и был, но так и не понял, как мне применить это в случае с яндекс маркетом, вот я создал на фтп на сайте где у меня магазин такую директорию market/api где мне файл обработчика теперь размещать в какой папке? куда будут приходить запросы POST/cart от яндекса? и где размещать код этот $postCartJson = file_get_contents("php://input"); и прочий?
(Добавление)
или я что-то так не так понимаю?
(Добавление)
просто сам механизм немного непонятен, если кто такое делал подобное поясните на пальцах буквально я пойму...
спасибо
 
 Top
RickMan
Отправлено: 21 Октября, 2014 - 12:39:08
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Конечно же нет универсального адреса. Для каждого сайта он уникальный, следовательно его надо настраивать. Если я правиль понял то обратите внимание на это:
https://github[dot]com/nixsolutions/[dot][dot][dot]ть-настройки-api
Вы укажете адрес, и yandex будет использовать его. Там и разместите обработчик.
 
 Top
Tyoma5891
Отправлено: 21 Октября, 2014 - 13:09:29
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




так все равно не работает, смотрите сделал на фтп у себя на сайте где магазин путь
https://сайт[dot]com/market/api
в корне папки api сделал файл index.php вот его код:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. require_once 'phar://yandex-sdk_master.phar/vendor/autoload.php';
  4. use Yandex\Market\MarketClient;
  5. //
  6. $market = new MarketClient('хххххххх');
  7. $market->setClientId('ххххххх');
  8. //логин, указанный при регистрации в партнерском интерфейсе
  9. $market->setLogin('хххххх');
  10.  
  11. $postCartJson = file_get_contents("php://input");
  12. $cartRequest = new \Yandex\Market\Models\PostCartRequest();
  13. $cartRequest->fromJson($postCartJson);
  14. $currency = $cartRequest->getCart()->getCurrency();
  15. $requestedItems = $cartRequest->getCart()->getItems();
  16.  
  17. //Ответ магазина на запрос от Яндекс.Маркета
  18. $postCartResponse = new \Yandex\Market\Models\PostCartResponse();
  19. //Корзина
  20. $cart = new \Yandex\Market\Models\CartResponse();
  21.  
  22. //Товары в корзине
  23. $items = new \Yandex\Market\Models\Items();
  24. /** @var Yandex\Market\Models\Item $requestedItem */
  25. foreach ($requestedItems as $requestedItem) {
  26.     //Информация о товаре в корзине.
  27.     $item = new \Yandex\Market\Models\Item();
  28.     $item->setFeedId((int)$requestedItem->getFeedId());
  29.     $item->setOfferId($requestedItem->getOfferId());
  30.     $item->setPrice(300);
  31.     $item->setCount($requestedItem->getCount());
  32.     $item->setDelivery(true);
  33.     $items->add($item);
  34. }
  35. $cart->setItems($items);
  36.  
  37. //Способы оплаты, доступные для корзины.
  38. $cart->setPaymentMethods(
  39.     array(
  40.         //Способ оплаты заказа
  41.         MarketClient::PAYMENT_METHOD_CASH_ON_DELIVERY,
  42.         MarketClient::PAYMENT_METHOD_CARD_ON_DELIVERY,
  43.     )
  44. );
  45.  
  46. //Опции доставки, доступные для корзины.
  47. $deliveryOptions = new \Yandex\Market\Models\DeliveryOptions();
  48. //Информация о доставке #1
  49. $deliveryOption1 = new \Yandex\Market\Models\DeliveryOption();
  50. $deliveryOption1->setType(MarketClient::DELIVERY_TYPE_PICKUP);
  51. $datesRange1 = new \Yandex\Market\Models\DatesRange();
  52. $datesRange1->setFromDate(date('d-m-Y'));
  53. $datesRange1->setToDate(date('d-m-Y', mktime(0, 0, 0, date("m"), date("d") + 3, date("Y"))));
  54. $deliveryOption1->setDates($datesRange1);
  55. $deliveryOption1->setServiceName('СПСР');
  56. $deliveryOption1->setPrice(0);
  57. $deliveryOption1->setId("1");
  58. //Информация о пункте самовывоза.
  59. $outlets = new \Yandex\Market\Models\Outlets();
  60. $outlet1 = new \Yandex\Market\Models\Outlet();
  61. $outlet1->setId(9);
  62. $outlet2 = new \Yandex\Market\Models\Outlet();
  63. $outlet2->setId(10);
  64. $outlet3 = new \Yandex\Market\Models\Outlet();
  65. $outlet3->setId(11);
  66. $outlets->add($outlet1);
  67. $outlets->add($outlet2);
  68. $outlets->add($outlet3);
  69. $deliveryOption1->setOutlets($outlets);
  70.  
  71. //Информация о доставке #2
  72. $deliveryOption2 = new \Yandex\Market\Models\DeliveryOption();
  73. $deliveryOption2->setType(MarketClient::DELIVERY_TYPE_DELIVERY);
  74. $datesRange2 = new \Yandex\Market\Models\DatesRange();
  75. $datesRange2->setFromDate(date('d-m-Y', mktime(0, 0, 0, date("m"), date("d") + 5, date("Y"))));
  76. $deliveryOption2->setDates($datesRange1);
  77. $deliveryOption2->setServiceName('Собственная служба доставки');
  78. $deliveryOption2->setPrice(350);
  79. $deliveryOption2->setId("2");
  80.  
  81. $deliveryOptions->add($deliveryOption1);
  82. $deliveryOptions->add($deliveryOption2);
  83. $cart->setDeliveryOptions($deliveryOptions);
  84.  
  85. $postCartResponse->setCart($cart);
  86.  
  87. header('Content-Type: application/json');
  88. echo $postCartResponse->toJson();
  89.  


все как в документации

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

в логах ошибка
:java.security.cert.CertificateException: expected and actual fingerprints aren't the same. Expected:
но сертификаты и sha слепок указал правильные в настройках не могу понять в чем ошибка?
 
 Top
Tyoma5891
Отправлено: 21 Октября, 2014 - 16:38:01
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




товарищи кто-то может сказать что не так делаю то?
эта строка
$postCartJson = file_get_contents("php://input");
принимает от маркета запрос, а ответ как нужно тоже постом отправлять? через curl? почему то в доке об этом нету ни слова эти строки
header('Content-Type: application/json');
echo $postCartResponse->toJson();
отслыают казывая тип данных ноя так понимаю, что в ответе нужна ещё ссылка в которой мне нужно указывать свой токен и айди?
 
 Top
Tyoma5891
Отправлено: 22 Октября, 2014 - 11:18:36
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




что на форуме никто подобного никогда не делал?
 
 Top
RickMan
Отправлено: 22 Октября, 2014 - 11:26:44
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Попробуйте написать в техническую поддержку яндекса. Как бы они авторы api и они должны отвечать за него. Думаю с этого вам толку будет больше.
 
 Top
Panoptik
Отправлено: 22 Октября, 2014 - 11:32:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)






-----
Just do it
 
 Top
Tyoma5891
Отправлено: 22 Октября, 2014 - 11:49:41
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Panoptik пишет:
тут посмотрите
https://opencartforum.com/topic/29650-yandex-cpa-%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%BA%D0%B0-%D0%BD%D0%B0-%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D0%B5/page-3

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

(Отредактировано автором: 22 Октября, 2014 - 12:45:42)

 
 Top
Panoptik
Отправлено: 22 Октября, 2014 - 12:45:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




а вот это дело что показывает то?

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $postCartResponse->toJson();


-----
Just do it
 
 Top
Tyoma5891
Отправлено: 22 Октября, 2014 - 12:47:47
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Panoptik пишет:
а вот это дело что показывает то?

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $postCartResponse->toJson();

а как я это дело проверю физически что показывает если запрос поступает от яндекса произвольно, ну тоесть как я увижу это в браузере когда запущу скрипт понимаете?
 
 Top
Panoptik
Отправлено: 22 Октября, 2014 - 12:50:57
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




вообще исходя из этого описания
https://github[dot]com/nixsolutions/[dot][dot][dot]rket-for-Partner
попробуйте сделать примитивные вещи, в режиме тестирования и добейтесь того чтобы оно начало адкватно работать, а уже потом усложняйте и добавляйте кастомизацию, потому что мне кажется что вы делаете что-то не так. слишком много всего нагромождено сразу и возможно в итоге некоторые методы работают не так как положено по протоколу
(Добавление)
ну тогда сохраните перед выводом это дело в файл
PHP:
скопировать код в буфер обмена
  1.  
  2. $json = $postCartResponse->toJson();
  3. file_put_contents($_SERVER['DOCUMENT_ROOT'] . 'yandex_response.json', $json);
  4. echo $json;
  5.  

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


-----
Just do it
 
 Top
Tyoma5891
Отправлено: 22 Октября, 2014 - 13:40:38
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




вообще никак не реагирует, не создает файл в папке в этой api даже делал сохранение после приема данных
PHP:
скопировать код в буфер обмена
  1. $postCartJson = file_get_contents("php://input");
  2. file_put_contents('out.txt', $postCartJson);

все равно, или неправильно путь создаю или не знаю даже что, но данные не заходят
я удивляюсь как у людей так все легко получается:
http://forum.php.su/topic.php?forum=74&topic=3200

(Отредактировано автором: 22 Октября, 2014 - 13:42:18)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB