| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 27.11.2017 11:47 / 27.11.2017 11:49
Я недавно подключал к своему билингу интернет-эквайринг. Так там у сбера достаточно удобный rest-интерфейс. Если не заморачиваться со всякими возвратами (делать из через веб-инетрфес банка, если понадобится), то нужно реализовать всего две функции — выставить счет, проверить счет.@CLASS
pfSberbankCardsRest
@USE
pf/types/pfClass.p
pf/io/pfCFile.p
pf/tests/pfAssert.p
@BASE
pfClass
@create[aOptions]
## aOptions.timeout(10)
## aOptions.userName
## aOptions.password
^cleanMethodArgument[]
^BASE:create[]
^pfAssert:isTrue(def $aOptions.userName)[Не задат userName магазина.]
^pfAssert:isTrue(def $aOptions.password)[Не задат password для магазина.]
$_urlPrefix[https://3dsec.sberbank.ru/payment/rest/]
$_userName[$aOptions.userName]
$_password[$aOptions.password]
$_timeout(^aOptions.timeout.int(10))
@_formatDate[aDate][locals]
$d[^date::create[$aDate]]
$result[^d.year.format[%04d]-^d.month.format[%02d]-^d.day.format[%02d]T^d.hour.format[%02d]:^d.minute.format[%02d]:^d.month.second.format[%02d]]
@createOrder[aBill;aOptions]
## aBill.orderID - номер заказа
## aBill.amount - сумма выставляемого счёта в рублях.
## aBill.comment - комментарий.
## aOptions.returnURL — адрес страницы возврата в магазин
^cleanMethodArgument[aBill]
^cleanMethodArgument[]
^pfAssert:isTrue(def $aBill.orderID)[Не задан номер заказа.]
^pfAssert:isTrue($aBill.amount > 0)[Сумма счета должна быть положительной.]
$result[]
$lResponse[^pfCFile:load[text;$_urlPrefix/register.do;
$.method[GET]
$.chrset[utf-8]
$.any-status(true)
$.timeout($_timeout)
$.form[
$.userName[$_userName]
$.password[$_password]
$.orderNumber[$aBill.orderID]
$.amount[^math:ceiling($aBill.amount*100)]
^if(def $aBill.comment){
$.description[$aBill.comment]
}
$.returnUrl[$aOptions.returnURL]
]
]]
^if($lResponse.status ne "200"){
^throw[pfSberbankCardsRest.fail;HTTP error $lResponse.status;$lResponse.text]
}
$result[^json:parse[^taint[as-is][$lResponse.text]]]
@orderStatus[aSBOrderID;aOptions]
^cleanMethodArgument[]
^pfAssert:isTrue(def $aSBOrderID)[Не задан номер заказа в системе Сбербанка.]
$result[]
$lResponse[^pfCFile:load[text;$_urlPrefix/getOrderStatus.do;
$.method[GET]
$.chrset[utf-8]
$.any-status(true)
$.timeout($_timeout)
$.form[
$.userName[$_userName]
$.password[$_password]
$.orderId[$aSBOrderID]
]
]]
^if($lResponse.status ne "200"){
^throw[pfSberbankCardsRest.fail;HTTP error $lResponse.status;$lResponse.text]
}
$result[^json:parse[^taint[as-is][$lResponse.text]]]