Drupal → Модуль Commerce Yandex.Money P2P — оплата заказов с помощью Яндекc.Деньги

07.08.2012

Описание

Модуль 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 Yandex.Money 7.x-1.x-dev
Похожие записи

Комментарии

Гладышев Вячеслав Сергеевич
09.08.2012, 11:47

Можно сделать без использования API и пугающего экрана для покупателя.
Если интересно, могу рассказать как.

Ну, Вячеслав Сергеевич, сказали А, говорите Б ;)

Гость
09.08.2012, 12:01

В качестве потенциального импрувмента модуля: можно токен получать не каждый раз при покупке, а сохранять его для пользователя и когда он повторно придет раз в магазин (если придет), не показывать ему больше запрос прав.

Вячеслав Сергеевич, ничего себе, а мы думали, Яндекс такое не разрешает :) здесь и с карты можно будет оплачивать, на сколько я понимаю

Гладышев Вячеслав Сергеевич
09.08.2012, 12:49

Платёж идёт также через p2p транзакцию, а для них платёж с карты пока не возможен, но в целом, для организации разовых платежей это гораздо удобнее, чем реализация API, как мне кажется.
API больше подходит для организации подписок или когда пользователь в одном и том же магазине совершает покупки по 10 раз на дню. Например внутриигровая валюта, предметы. Хотя как геймер я этого не одобряю =)

Платёж идёт также через p2p транзакцию, а для них платёж с карты пока не возможен

тогда я зря обрадовалась.

и пугающего экрана для покупателя.

какой экран пугающий?) все привыкли, что нужно подтвердить перевод на странице яндекс.денег

В качестве потенциального импрувмента модуля: можно токен получать не каждый раз при покупке, а сохранять его для пользователя и когда он повторно придет раз в магазин (если придет), не показывать ему больше запрос прав.

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

у нас сейчас есть так называемые кнопки и формы:
https://money.yandex.ru/embed/quickpay/shop.xml и
https://money.yandex.ru/embed/quickpay/small.xml

в модуле можно использовать не сами формы, разумеется, а их параметры.

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

Гладышев Вячеслав Сергеевич
09.08.2012, 14:05

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

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

2.5 Получение информации о поступлении платежа
Для получения информации о входящем платеже необходимо подключить и настроить http-уведомления. В рамках сервиса http-уведомлений вы сможете получать данные о сумме платежа и значения поля label, что поможет идентифицировать платёж.

ок. но тогда получается, что к одному кошельку можно привязать только один интернет магазин.

Гладышев Вячеслав Сергеевич
09.08.2012, 14:40

данный вывод сделан на основании того, что http-уведомления отсылаются на адрес 1 сервера?

Гладышев Вячеслав Сергеевич
09.08.2012, 14:49

можно сделать релей, который указать в качестве приёмщика хттп-уведомлений и он будет разбирать какое уведомление в какой магазин отправить, а разбирать он будет по параметру label. например первые 2 цифры параметра можно отдать под идентификатор магазина.
01ххххххх в магазин 1
02ххххххх в магазин 2
где ххххххх это номер заказа

Гладышев Вячеслав Сергеевич
10.08.2012, 14:16

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

Гладышев Вячеслав Сергеевич
10.08.2012, 14:26

для Commerce не актуально

Понятно, спасибо.

а как Вам решение с привязкой нескольких магазинов к 1 кошельку через разбор label?

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

Гладышев Вячеслав Сергеевич
10.08.2012, 15:02

а часто бывает нужда к 1 счёту несколько магазинов привязывать? в каких случаях?
кстати, чтобы запрос доступа по токену через API не выглядел таким страшным, необходимо использовать проверку подлинности сервиса http://api.yandex.ru/money/doc/dg/tasks/register-client.xml

мне кажется это костыль)

однозначно

чтобы запрос доступа по токену через API не выглядел таким страшным, необходимо использовать проверку подлинности сервиса http://api.yandex.ru/money/doc/dg/tasks/register-client.xml

и на сколько он будет «нестрашным»?
это можно наверно прикрутить, что думаешь xandeadx?

А для Ubercart не планируется модуль аналогичный?

Гость
18.01.2013, 22:43

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

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

Гость
24.01.2013, 15:51

При установке модуля Commerce Yandex.Money требуются дополнительные модули:Commerce и Commerce Payment. Не могу никак их найти для друпала 7. Может кто-нибудь поможет.

Вячеслав Гладышев
20.12.2013, 15:18

Итог: Elizete при создании приложения поставила галку "Использовать проверку подлинности приложения" вот тут https://sp-money.yandex.ru/myservices/new.xml и был выдан client_secret
Модуль Commerce Yandex.Money по словам Elizete не использует.
В результате к нам приходил запрос без client_secret от приложения, для которого при создании был запрошен client_secret. Соответственно мы этот запрос отбивали.
Решение:
Если в модуле действительно не предусмотрено поле под ввод client_secret, то нужно перевыпустить приложение, но уже с не нажатой галкой "Использовать проверку подлинности приложения". Если соответствующее поле в модуле есть, то нужно заполнить его. Client_secret можно узнать в настройках приложения: Управление кошельком-Мои приложения-Настроить

Гость
20.12.2013, 19:22

Если в модуле действительно не предусмотрено поле под ввод client_secret, то нужно перевыпустить приложение, но уже с не нажатой галкой "Использовать проверку подлинности приложения".

Вячеслав что именно скрывается под операцией "перевыпустить приложение", как и где чуть более в деталях? Когда добавлял приложение то изначально галку выставил, потом пробовал ее обезГалить но такой возможности интерфейс яндекса. денег в настройках приложения не предоставлял. Так же добавленное приложение нет возможности удалить. Че делать?

Гость
20.12.2013, 20:55

Создайте новое приложение БЕЗ этой галки! Перенастройте способ оплаты (admin/commerce/config/payment-methods/manage/commerce_payment_commerce_yandex_money)

та пробовал уже так конечно... но все тот же результат.
Че то закешилось не чей то стороне - надо продебагить и посмотреть параметры запроса
Хочется почистить приложения... удалить их, но почему то такой возможности нет.
Че писать в сапорт просьбу на удаление приложений?

Первое приложение зарегистрировала с галкой - закономерный отказ в доступе. Затем еще несколько без галки - все равно отказ в доступе. Спустя несколько дней зарегистрировала новое без галки, на все тот же кошелек - и платеж прошел. *разводит руками*

Хочется почистить приложения... удалить их, но почему то такой возможности нет.

Вот да, очень пригодилась бы возможность удалить ненужные приложения.

xandeadx, спасибо за модуль!
Вячеслав, спасибо за помощь!

Гость
20.12.2013, 23:48

Спустя несколько дней зарегистрировала новое без галки

Ну вот... у меня как раз несколько дней прошло, мож и у меня наконец "разведет руками" и сработает :)

Однако это настораживает... когда причина неСтабильности в тумане. Седня не работает, завтра заработал... а после завтра иди гадай.

Всем спасибо за коммы :)))

Гость
20.12.2013, 23:50

Кстати, в песочнице можно найти модуль Вебмани для комерца.
я его опробовал... оплата проходит, но правда статус заказа не меняется... это так, кому интересно

Гость
22.12.2013, 03:01

Ндя... в конечном итоге конечно сам яндекс сапорт это лажа, так как порой разговаривать не с кем.
"invalid_request" это нонсенс - что нельзя прямо сказать по какой причине и на каком именно параметре запрос отлоняется? Отсылают к разработчику, без никакой абсолютно конкретной инфы и в результате разработчику ничего не остается сказать как пингнуть в ответ "общайтесь с яндекс.сапорт" :)

Насчет "обгаливания" и "обезгаливания" тут уже говорил: Перерегистрация мож сработает, мож нет...это тож от яндекса зависит и непонятно почему приложение добавленное незя если не удалить то хотя бы отключить?
Опыт показывает что если у тебя к кошелю привязанны несколько приложений и одно из них облажилось хоть раз в запросе, ввиду неправельных настроек то остальные НЭ ПАШУТ. Это так сказать опытным путем выведенно.
Пока не создал новый акаунт и зарегил там приложение - одно единное как береза в поле, то модуль работать не начал. Во дела, а ежли у тебя несколько магазинов на разных платформах, то для каждого создавай акаунт в яндексе.... с его спец. приложением? :)

и последнее... GlobalRedirect.

Redirect URI — URL магазина + commerce/yandex-money/authorization

если версия Комерца руссифицированна и модуль GlobalRedirect активизирован и есть проблемы типо "invalid_request" то советую в регистрации приложения попробовать след:
Redirect URI — URL магазина + ru/commerce/yandex-money/authorization

яндексу спасибо конечно что он есть и за то что обязуется ответить в течение 30 дней. Эка тормоз :)

xandeadx, спасибо за модуль!

Гость
22.12.2013, 03:18

Итог: Elizete при создании приложения поставила галку "Использовать проверку подлинности приложения"......
Решение:
Если в модуле действительно не предусмотрено поле под ввод client_secret, то нужно перевыпустить приложение, но уже с не нажатой галкой "Использовать проверку подлинности приложения". Если соответствующее поле в модуле есть, то нужно заполнить его. Client_secret можно узнать в настройках приложения: Управление кошельком-Мои приложения-Настроить

Нет. При сценарии с "галочкой", параметр client_secret предъявляется на стадии генерации токена, в то время как яндекс отклоняет запрос на стадии авторизации. Опытным путем вписав в код модуля сгенерированный яндексом client_secret не дало положительного результата. Ответ был тот же - invalid_request.
П.С. где то в другом месте прочитал умную инфу что чаще всего причина отклонения авторизации скрытая под "invalid_request" является не сопоставимость параметра redirect_uri ... ну а про GlobalRedirect уже написал выше

Вячеслав Гладышев
22.12.2013, 16:03

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

Вячеслав Гладышев
22.12.2013, 16:05

хотелось бы также, чтобы модуль поддерживал client_secret. с ним надёжнее всё-таки.

Гость
29.08.2014, 16:07

Перестал работать перевод. Переводит на страницу оплаты хорошо, после ввода платежного пароля появляется страница с ошибками This XML file does not appear to have any style information associated with it. The document tree is shown below. Снизу идёт громадная страница с кодом. Это временное явление на Яндексе или это связано с самим кошельком, непонятно?

Гость
29.08.2014, 16:42

Вы бы не могли подтвердить, что выдаётся ошибка?

проверил на демо-сайте, ошибка была

Гость
29.08.2014, 16:58

Ясно, значит, действительно что-то не так, сталкивались ли с подобной ошибкой раньше? Просто начал использовать данный модуль буквально около 2 недель, поэтому пока что имею мало опыта с ним.

Гость
29.08.2014, 17:51

Снова заработало ) Спасибо за комментарии, а то было совсем непонятно, что же происходило.

Гладышев Вячеслав Сергеевич
29.08.2014, 22:21

кстати, Яндекс реализовал возможность указания урла возврата в случае успеха

@Гладышев Вячеслав Сергеевич, помогите с вопросом по api, задавал здесь - http://clubs.ya.ru/moneyapi/replies.xml?item_no=3902 но два месяца не могу пройти премодерацию, если надо, то могу продублировать по почте

Гладышев Вячеслав Сергеевич
01.09.2014, 09:50

@xandeadx Я в Я.Деньгах уже не работаю, как раз месяца 2, но помочь попробую - попросил, чтобы пост открыли и вышли с Вами на связь.

@Гладышев Вячеслав Сергеевич, спасибо большое!

Гость
03.01.2015, 02:52

Здравствуйте,
Возможно ли создать аналогичный модуль (или добавить функционал к этому), чтобы было возможно с банковских карт принимать платежи?

Гость
04.01.2015, 02:38

Здравствуйте,
Получается, что всё же через api нельзя реализовать перевод с банковских карт на ЯндексДеньги без ЯндексКассы? Есть вопрос, а возможно ли через универсальную форму https://money.yandex.ru/embed/quickpay/shop.xml разработать модуль, который возвращает параметры об успешном поступлении средств и чтобы товар был продан на сайте конкретно этому пользователю? Вроде бы можно, если правильно понимаю? https://tech.yandex.ru/money/doc/dg/reference/notification-p2p-incoming…

для приёма денег с карт надо регистрировать магазин в яндексе.
зарегистрированные магазины работают по своему протоколу, и для этого есть модуль яндекс.кассы.

Гость
04.01.2015, 02:50

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

Гость
04.01.2015, 09:06

Здравствуйте,
Есть ли у Вас возможность заняться разработкой подобного модуля? (за отдельную плату)

Гладышев Вячеслав Сергеевич
04.01.2015, 12:32

Деньги с карт может принимать и физлицо на счет в Я.Деньгах. Для этого есть соответствующие инструменты money.yandex.ru/embed/smallshop/

Есть ли у Вас возможность заняться разработкой подобного модуля?

зачем если всё уже разработано?

Гладышев Вячеслав Сергеевич
04.01.2015, 18:29

Что зачем? Был задан вопрос: как принимать с карт. Вы ответили, что нужно по договору подключаться. на самом деле не нужно.

@Гладышев Вячеслав Сергеевич, комментарий не вам

Гладышев Вячеслав Сергеевич
04.01.2015, 18:35

Да, ступил чего то ;) с Новым годом!

Гость
04.01.2015, 21:06

Как понимаю, там только универсальная форма, а чтобы покупать товары через Commerce и чтобы можно было платить через кредитные карты в автоматическом режиме, такого нету? Если есть, можно ссылку на модуль? Не мог такой найти. Все относятся либо к ЯндексКассе (юр.лицо или ИП) или только возможность перевода на Яндекс кошелёк.

Гость
04.01.2015, 21:37

т.е. с Яндекс кошелька на Яндекс кошелёк

Гость
05.10.2015, 17:56

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

Гость
10.02.2017, 16:27

Не могу найти. А как сделать, чтобы комиссию платил покупатель?

Планируется ли порт на Drupal 8 / Commerce 2?

justlike.ru
10.02.2020, 06:24

Печаль

А то официальный как буд-то есть, но не работает совсем

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

Добавить комментарий