Описание
Модуль Commerce Yandex.Money P2P добавляет в Drupal Commerce новый способ оплаты с помощью Яндекс.Деньги.
Модуль использует Яндекс.Деньги API и работает по схеме p2p (перевод с кошелька на кошелёк). Эта схема подходит для небольших магазинов и не требует заключения договора с яндексом, однако кошельки между которыми происходит перевод должны быть идентифицированы.
Комиссия при переводе составляет 0.5%, но не менее 1 копейки. Комиссия взимается либо с владельца магазина (покупатель будет оплачивать сумму указанную в заказе, но на кошелёк будет приходить на 0.5% меньше), либо с покупателя (покупатель будет оплачивать сумму указанную в заказе + 0.5%, и на кошелёк будет приходить нужная сумма).
Установка и настройки
Установка стандартная — распаковать в sites/all/modules
, включить.
Дальше идём на страницу https://sp-money.yandex.ru/myservices/new.xml и регистрируем новое приложение:
Название вашего приложения — название магазина.
Адрес вашего сайта — URL магазина.
Redirect URI — URL магазина + commerce/yandex-money/authorization
.
Использовать проверку подлинности приложения — Нет
После регистрации выдадут Идентификатор приложения (Client ID).
Переходим на страницу способа оплаты Yandex.Money (admin/commerce/config/payment-methods/manage/commerce_payment_commerce_yandex_money
) и открываем действие Enable payment method: Yandex.Money.
В поле Client ID прописываем выданный идентификатор приложения, а в Purse number номер кошелька, на который будут приходит деньги. Сохраняем.
Profit.
- Модуль Commerce Fast Ajax Add to Cart — ajax кнопка "Добавить в корзину" без кэширования формы
- Краткий обзор моей песочницы на drupal.org
- Модуль EAV Field — хранение большого числа характеристик сущности в одном поле
- Модуль Background Queue — выполнение всей очереди в фоне
- Модуль Block Visibility by Vocabulary — вывод блока только на страницах терминов определённого словаря
Комментарии
Можно сделать без использования API и пугающего экрана для покупателя.
Если интересно, могу рассказать как.
Ну, Вячеслав Сергеевич, сказали А, говорите Б ;)
В качестве потенциального импрувмента модуля: можно токен получать не каждый раз при покупке, а сохранять его для пользователя и когда он повторно придет раз в магазин (если придет), не показывать ему больше запрос прав.
у нас сейчас есть так называемые кнопки и формы:
https://money.yandex.ru/embed/quickpay/shop.xml и
https://money.yandex.ru/embed/quickpay/small.xml
в модуле можно использовать не сами формы, разумеется, а их параметры.
описание можно посмотреть тут http://yadi.sk/d/SMh5GIF17d_C
Вячеслав Сергеевич, ничего себе, а мы думали, Яндекс такое не разрешает :) здесь и с карты можно будет оплачивать, на сколько я понимаю
Платёж идёт также через p2p транзакцию, а для них платёж с карты пока не возможен, но в целом, для организации разовых платежей это гораздо удобнее, чем реализация API, как мне кажется.
API больше подходит для организации подписок или когда пользователь в одном и том же магазине совершает покупки по 10 раз на дню. Например внутриигровая валюта, предметы. Хотя как геймер я этого не одобряю =)
тогда я зря обрадовалась.
какой экран пугающий?) все привыкли, что нужно подтвердить перевод на странице яндекс.денег
сравним:
это через API http://yadi.sk/d/E4mEoOQT7i2m
это через правильно настроенные параметры формы http://yadi.sk/d/mOptj5aV7i1G
мы же не знаем на какую сумму будет второй и последующий заказ, а в запросе надо точно указать - сколько денег нужно и на какое время ими разрешено будет пользоваться
здесь проблема в том, что уведомлений о платежах через формы нет
конечно же есть и описано в документе, который я приложил:
2.5 Получение информации о поступлении платежа
Для получения информации о входящем платеже необходимо подключить и настроить http-уведомления. В рамках сервиса http-уведомлений вы сможете получать данные о сумме платежа и значения поля label, что поможет идентифицировать платёж.
ок. но тогда получается, что к одному кошельку можно привязать только один интернет магазин.
данный вывод сделан на основании того, что http-уведомления отсылаются на адрес 1 сервера?
да
можно сделать релей, который указать в качестве приёмщика хттп-уведомлений и он будет разбирать какое уведомление в какой магазин отправить, а разбирать он будет по параметру label. например первые 2 цифры параметра можно отдать под идентификатор магазина.
01ххххххх в магазин 1
02ххххххх в магазин 2
где ххххххх это номер заказа
кстати, сейчас в процессе платежа через платёжные формы у пользователя на нашей стороне можно запросить контактные данные. вот вопрос - насколько это актуально для магазинов? или в большинстве случаев контактные данные запрашиваются на сайте самого магазина и эта функциональность не нужна?
для Commerce не актуально
Понятно, спасибо.
а как Вам решение с привязкой нескольких магазинов к 1 кошельку через разбор label?
мне кажется это костыль) но если кому-нибудь будет нужна оплата именно через форму, а не api, то сделаю
а часто бывает нужда к 1 счёту несколько магазинов привязывать? в каких случаях?
кстати, чтобы запрос доступа по токену через API не выглядел таким страшным, необходимо использовать проверку подлинности сервиса http://api.yandex.ru/money/doc/dg/tasks/register-client.xml
однозначно
и на сколько он будет «нестрашным»?
это можно наверно прикрутить, что думаешь xandeadx?
кстати, вывесили документацию в клуб http://clubs.ya.ru/moneyapi/replies.xml?item_no=1624, чтобы всё по официальному :)
А для Ubercart не планируется модуль аналогичный?
нет
Нужно еще иметь ввиду, что при смене доменного имени, а иногда почему-то при переезде на другой хостинг, нужно будет переподключать кошелек, иначе Яндекс при переходе сообщит об ошибке. Пустяк, конечно, но пугает не хило)
ну ключ же привязывается к конкретному домену. Вот с хостингом такое быть не должно, возможно какие-то настройки потеряли при переезде
При установке модуля Commerce Yandex.Money требуются дополнительные модули:Commerce и Commerce Payment. Не могу никак их найти для друпала 7. Может кто-нибудь поможет.
На демо-сайте тоже не получается осуществить платеж. После ввода платежного пароля перенаправляет обратно к checkout и показывает вот это: http://fotki.yandex.ru/users/vsgladyshev/view/807724/
Итог: Elizete при создании приложения поставила галку "Использовать проверку подлинности приложения" вот тут https://sp-money.yandex.ru/myservices/new.xml и был выдан client_secret
Модуль Commerce Yandex.Money по словам Elizete не использует.
В результате к нам приходил запрос без client_secret от приложения, для которого при создании был запрошен client_secret. Соответственно мы этот запрос отбивали.
Решение:
Если в модуле действительно не предусмотрено поле под ввод client_secret, то нужно перевыпустить приложение, но уже с не нажатой галкой "Использовать проверку подлинности приложения". Если соответствующее поле в модуле есть, то нужно заполнить его. Client_secret можно узнать в настройках приложения: Управление кошельком-Мои приложения-Настроить
Вячеслав что именно скрывается под операцией "перевыпустить приложение", как и где чуть более в деталях? Когда добавлял приложение то изначально галку выставил, потом пробовал ее обезГалить но такой возможности интерфейс яндекса. денег в настройках приложения не предоставлял. Так же добавленное приложение нет возможности удалить. Че делать?
Создайте новое приложение БЕЗ этой галки! Перенастройте способ оплаты (admin/commerce/config/payment-methods/manage/commerce_payment_commerce_yandex_money)
та пробовал уже так конечно... но все тот же результат.
Че то закешилось не чей то стороне - надо продебагить и посмотреть параметры запроса
Хочется почистить приложения... удалить их, но почему то такой возможности нет.
Че писать в сапорт просьбу на удаление приложений?
Первое приложение зарегистрировала с галкой - закономерный отказ в доступе. Затем еще несколько без галки - все равно отказ в доступе. Спустя несколько дней зарегистрировала новое без галки, на все тот же кошелек - и платеж прошел. *разводит руками*
Вот да, очень пригодилась бы возможность удалить ненужные приложения.
xandeadx, спасибо за модуль!
Вячеслав, спасибо за помощь!
Ну вот... у меня как раз несколько дней прошло, мож и у меня наконец "разведет руками" и сработает :)
Однако это настораживает... когда причина неСтабильности в тумане. Седня не работает, завтра заработал... а после завтра иди гадай.
Всем спасибо за коммы :)))
Кстати, в песочнице можно найти модуль Вебмани для комерца.
я его опробовал... оплата проходит, но правда статус заказа не меняется... это так, кому интересно
Ндя... в конечном итоге конечно сам яндекс сапорт это лажа, так как порой разговаривать не с кем.
"invalid_request" это нонсенс - что нельзя прямо сказать по какой причине и на каком именно параметре запрос отлоняется? Отсылают к разработчику, без никакой абсолютно конкретной инфы и в результате разработчику ничего не остается сказать как пингнуть в ответ "общайтесь с яндекс.сапорт" :)
Насчет "обгаливания" и "обезгаливания" тут уже говорил: Перерегистрация мож сработает, мож нет...это тож от яндекса зависит и непонятно почему приложение добавленное незя если не удалить то хотя бы отключить?
Опыт показывает что если у тебя к кошелю привязанны несколько приложений и одно из них облажилось хоть раз в запросе, ввиду неправельных настроек то остальные НЭ ПАШУТ. Это так сказать опытным путем выведенно.
Пока не создал новый акаунт и зарегил там приложение - одно единное как береза в поле, то модуль работать не начал. Во дела, а ежли у тебя несколько магазинов на разных платформах, то для каждого создавай акаунт в яндексе.... с его спец. приложением? :)
и последнее... GlobalRedirect.
если версия Комерца руссифицированна и модуль GlobalRedirect активизирован и есть проблемы типо "invalid_request" то советую в регистрации приложения попробовать след:
Redirect URI — URL магазина + ru/commerce/yandex-money/authorization
яндексу спасибо конечно что он есть и за то что обязуется ответить в течение 30 дней. Эка тормоз :)
xandeadx, спасибо за модуль!
Нет. При сценарии с "галочкой", параметр client_secret предъявляется на стадии генерации токена, в то время как яндекс отклоняет запрос на стадии авторизации. Опытным путем вписав в код модуля сгенерированный яндексом client_secret не дало положительного результата. Ответ был тот же - invalid_request.
П.С. где то в другом месте прочитал умную инфу что чаще всего причина отклонения авторизации скрытая под "invalid_request" является не сопоставимость параметра redirect_uri ... ну а про GlobalRedirect уже написал выше
оно может конечно и нет, но почему то, внезапно, перерегистрация приложения без галки помогла. а чтобы не ждать сапорта, пишите в клуб апи. там быстро отвечают.
хотелось бы также, чтобы модуль поддерживал client_secret. с ним надёжнее всё-таки.
Перестал работать перевод. Переводит на страницу оплаты хорошо, после ввода платежного пароля появляется страница с ошибками This XML file does not appear to have any style information associated with it. The document tree is shown below. Снизу идёт громадная страница с кодом. Это временное явление на Яндексе или это связано с самим кошельком, непонятно?
пока непонятно
Вы бы не могли подтвердить, что выдаётся ошибка?
проверил на демо-сайте, ошибка была
Ясно, значит, действительно что-то не так, сталкивались ли с подобной ошибкой раньше? Просто начал использовать данный модуль буквально около 2 недель, поэтому пока что имею мало опыта с ним.
Снова заработало ) Спасибо за комментарии, а то было совсем непонятно, что же происходило.
кстати, Яндекс реализовал возможность указания урла возврата в случае успеха
@Гладышев Вячеслав Сергеевич, помогите с вопросом по api, задавал здесь - http://clubs.ya.ru/moneyapi/replies.xml?item_no=3902 но два месяца не могу пройти премодерацию, если надо, то могу продублировать по почте
@xandeadx Я в Я.Деньгах уже не работаю, как раз месяца 2, но помочь попробую - попросил, чтобы пост открыли и вышли с Вами на связь.
@Гладышев Вячеслав Сергеевич, спасибо большое!
Здравствуйте,
Возможно ли создать аналогичный модуль (или добавить функционал к этому), чтобы было возможно с банковских карт принимать платежи?
только через яндекс кассу
Насколько понял, есть api и для этого случая, также видел сайты, где физические лица принимают платежи через карты https://tech.yandex.ru/money/doc/dg/reference/request-external-payment-…
Здравствуйте,
Получается, что всё же через api нельзя реализовать перевод с банковских карт на ЯндексДеньги без ЯндексКассы? Есть вопрос, а возможно ли через универсальную форму https://money.yandex.ru/embed/quickpay/shop.xml разработать модуль, который возвращает параметры об успешном поступлении средств и чтобы товар был продан на сайте конкретно этому пользователю? Вроде бы можно, если правильно понимаю? https://tech.yandex.ru/money/doc/dg/reference/notification-p2p-incoming…
для приёма денег с карт надо регистрировать магазин в яндексе.
зарегистрированные магазины работают по своему протоколу, и для этого есть модуль яндекс.кассы.
Не подскажете, может быть возможно как-то связать универсальную форму с Commerce?
не в курсе
Здравствуйте,
Есть ли у Вас возможность заняться разработкой подобного модуля? (за отдельную плату)
Деньги с карт может принимать и физлицо на счет в Я.Деньгах. Для этого есть соответствующие инструменты money.yandex.ru/embed/smallshop/
зачем если всё уже разработано?
Что зачем? Был задан вопрос: как принимать с карт. Вы ответили, что нужно по договору подключаться. на самом деле не нужно.
@Гладышев Вячеслав Сергеевич, комментарий не вам
Да, ступил чего то ;) с Новым годом!
Как понимаю, там только универсальная форма, а чтобы покупать товары через Commerce и чтобы можно было платить через кредитные карты в автоматическом режиме, такого нету? Если есть, можно ссылку на модуль? Не мог такой найти. Все относятся либо к ЯндексКассе (юр.лицо или ИП) или только возможность перевода на Яндекс кошелёк.
т.е. с Яндекс кошелька на Яндекс кошелёк
Насколько я понимаю, уже возможно принимать оплату и с карт без дополнительных танцев. Полагаю, кастомизация параметров оплаты позволит проводить оплату и по картам. Попробую покопаться в коде.
Оу, кому нужна оплата картам, сами Яндексом уже реализован модуль https://github.com/yandex-money/yandex-money-cms-drupal
Не могу найти. А как сделать, чтобы комиссию платил покупатель?
Планируется ли порт на Drupal 8 / Commerce 2?
В данный момент нет.
Печаль
А то официальный как буд-то есть, но не работает совсем
p2p переводы ещё тогда были не очень живы, а сейчас и подавно все уже картами пользуются
Добавить комментарий