Новости | 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]]]