nepster-web
@nepster-web

Как создать счет перед отправкой платежной формы?

Подключая платежные системы на сайт, я столкнулся с одной интересной проблемой.

Платежная система значения не имеет, но для примера давайте возьмем perfectmoney.

Чтобы подключить perfectmoney на наш сайт нам достаточно разместить платежную форму с определенными данными (обычно это id аккаунта, сумма платежа, номер счета и дополнительные данные типа описания и тп.).

Задача сделать так:
Пользователь заходит на сайт -> выбирает товар или услугу -> нажимает оплатить и попадает на сайт perfectmoney.

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

Усложнять не нужно
Легко решить проблему, попросив пользователя создать счет, а только потом оплатить. Но это лишнее действие, которое усложняет использование сайта и тз не разрешает так делать!

Есть еще способ
Я заметил вот такой способ:
https://github.com/yii-dream-team/yi...directForm.php

Тоесть мы делаем запрос к своему серверу, создаем счет, генерируем форму для perfectmoney и с помощью js сабмитим форму.
Но а как-же выключенный js ? Да таких пользователей мало, но мы же перфекционисты. На сколько этот способ косячный ?

Из вышеописанного возникает вопрос:
Подскажите пожалуйста как правильно организовать оплату через платежную систему создавая пользователю счет ?
  • Вопрос задан
  • 2448 просмотров
Пригласить эксперта
Ответы на вопрос 4
FanatPHP
@FanatPHP
Чебуратор тега РНР
Решение: Выгнать составителя ТЗ без выходного пособия. Нанять специалиста.

PS. perfectmoney не видел, но ставлю 100 против 1 что "перфекционист" там и двух полей заполнить не сможет.
Ответ написан
@1Rockman
Может быть я не совсем понял, что именно вы хотите, но уже давно работаю с платежными системами и везде один и тот же метод. Номер счета он нужен лично вашему сервису, что бы потом платежная система, когда клиент оплатит, пришлет вам запрос о том, что определенный счет оплачен.

Грубо говоря таблица со счетами
id, user_id, sum, paid

Пользователь c id 777, хочет оплатить 500 рублей, нажимает "оплатить" создается новый счет:
1, 777, 500, false

Потом ваш скрипт отправляет в платежную систему запрос где указывает id счета = 1, и сумму 500 ну и другие данные если требуются.

После того как клиент оплатит, платежная система вам пришлет запрос, что счет с id 1 оплачен на 500 рублей. Вы по этому id определите какой именно пользователь оплатил и сколько и пополните его счет на 500 рублей ну или предоставите ему услугу или товар.

и измените данные в таблице

1, 777, 500, true
Ответ написан
Hakkunamatata
@Hakkunamatata
Зефирный-человек
Но а как-же выключенный js ?

Рабочий способ, не всегда полезно быть перфекционистом. Ведь "лучшее", как известно - враг "хорошего".
Ответ написан
@Centrino
Тут проблема в другом. Как вы собираетесь потом идентифицировать, какой клиент и что оплатил на сайте? Если бы вы были благотворительным фондом, то вам бы достаточно было в поле ID подставить значение времени в микросекундах, к примеру.

Вы описали структуру магазина, без создания заказа в вашей базе, без идентификации стоимости заказа, валюты, привязки к клиенту. Как потом клиент должен обращаться к вам, что бы получить товар? Писать в поддержку с указанием и принскрином платежа из кошелька? Не геморно ли это по сравнению, с созданием заказа.
Планируется ли автоматическая обработка заказов, при возврате данных на ваш return (server, interaction) url? Как вы будете уведомлять клиента, о том, что его заказ оплачен и он его получит в течении времени, или он просто должен ждать, когда менеджер оторвет зад и решит написать клиенту?

Пользователь заходит на сайт -> выбирает товар или услугу -> нажимает оплатить и попадает на сайт perfectmoney.

Описаное вами действие не конечное, после оплаты он должен попасть к вам магазин, что бы сказали что все ок.

Проблема не в js, и не в меньшем кол-ве кликов или на одно действие больше. Проблема в том, как вы будете уведомлять клиентов, не создавая на сайте заказов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы