Настройка модуля Paylinks
Все методы конфигурируются в конфигурации модуля. Количество методов неограничено. Большинство из параметров метода параметризуются через макросы вида {$var}, количество которых, теоретически, неограничено.
В общем виде конфигурация модуля выглядит так (с подробными комментариями), используется реальный пример со шлюзом газпромбанка:
# Параметры для одного варианта оплаты.
# Во всех параметрах (кроме title) действуют макроподстановки:
# 1) {$sum} - сумма, которую юзер вводит в поле.
# В параметре description не действует.
# В параметрах url и confirm действует: подставляется из поля, в которое её ввёл юзер.
# В параметрах result.* действует: попадает при наличии в обратных url параметра "sum", а для этого она должа быть прописана в параметре url в обратных адресах.
# 2) {$contract.getTitle} - данные договора, действуют везде.
# Здесь getTitle - пример, допустим любой публичный get-тер объекта Contract (см. API), "contract." - префикс переменной.
# В данный момент поддерживаются префиксы:
# {$contract.*} - объект договора соответствующего текущего.
# Примеры: {$contract.getTitle} - заголовок договора, {$contract.getId} - ИД договора (cid).
# 3) {$action}, {$mid}, {$module} - данные доступа для обратных url, действуют только в параметре url.
# Можно прописывать и напрямую, если удобно (например, module=paylinks&mid=666&action=Paylinks).
#
# Метод оплаты 1
# Заголовок.
method.
1
.title=Карты
VISA
, MasterCard
# url, на который отправляется пользователь.
# Если используются обратные url, то в них должно быть обязательно такое: http://webexecuter?mid=${mid}&module=${module}&action=${action}&operation=result&result=success
# При этом у параметра result могут быть разные значения, например, &result=success и т.д., на основании которых выберется дальше ответ.
# Если в ответе надо показать сумму (используется в шаблонах method.1.result.*), то она должна присутствовать как параметр "sum" в обратном url.
# Также в обратных url должен присутствовать параметр methodId=1 (с соответствующим номером метода), чтобы при возврате знать по какому методу платили и отобразить нужное сообщение.
# Если не надо показывать сообщение и т.д., то можно просто подставить url одного из экшенов, например просмотра баланса, тогда вернётся прямо туда.
# Здесь у нас два url обратных - для успеха и для неуспеха.
back_url_s=http://
127
.
0
.
0
.
1
:
8080
/bgbilling/webexecuter?mid={
$mid
}%26module={
$module
}%26action={
$action
}%26operation=result%26result=success%26sum={
$sum
}%26methodId=
1
back_url_f=http://
127
.
0
.
0
.
1
:
8080
/bgbilling/webexecuter?mid={
$mid
}%26module={
$module
}%26action={
$action
}%26operation=result%26result=failed%26sum={
$sum
}%26methodId=
1
method.
1
.url=https://www.pps.gazprombank.ru:
443
/payment/start.wsm?merch_id=xxx&o.account={
$contract
.getTitle}&o.sum={
$sum
}&back_url_s={
@back_url_s
}&back_url_f={
@back_url_f
}
# Описание метода, выводится при выборе варианта оплаты и запросе суммы.
method.
1
.description=Оплата через gazprombank, на счёт {
$contract
.getTitle}. Тест код договора: {
$contract
.getId}.
# Текст подтверждения, после ввода суммы.
method.
1
.confirm=Вы действительно хотите оплатить через gazprombank на счёт {
$contract
.getTitle} на сумму {
$sum
}?
# Варианты возврата, может быть любое количество. Соответствующее сообщение будет выведено
# при наличии в обратном url (по которому вернулся пользователь) соответствующего
# параметра (&result=anything).
method.
1
.result.success=Хорошо, платёж на сумму {
$sum
} прошёл на счёт {
$contract
.getTitle}
method.
1
.result.failed=Плохо, платёж на сумму {
$sum
} не прошёл на счёт {
$contract
.getTitle}
#
# Второй вариант оплаты какой-то
method.
2
.title=Test Тест
...
Обратите внимание, для удобства вынесены url успеха и неуспеха в отдельные параметры, а затем вставлены в основной параметр method.1.url.
Также обратите внимание, что в случае необходимости (например, при передаче через url других адресов возврата) экранировать символы надо заранее, и прописывать в конфигурацию уже экранированное, как, например, здесь %26 вместо &.
В данный момент существует возможность перехода формы только с методом GET.