Для подключения к БД для приема платежей из внешних систем необходимо использовать специального пользователя AIS_PAYMENTS.
В самом начале работы с БД необходимо инициализировать сессию с помощью процедуры MAIN.INIT
:
BEGIN MAIN.INIT( vch_VC_IP => :vch_VC_IP, vch_VC_USER => :vch_VC_USER, vch_VC_PASS => :vch_VC_PASS, vch_VC_APP_CODE => :vch_VC_APP_CODE, vch_VC_CLN_APPID => :vch_VC_CLN_APPID); END; |
vch_VC_IP
— IP-адрес платежного сервера, для логирования (VARCHAR2)vch_VC_USER
— имя пользователя (VARCHAR2)vch_VC_PASS
— пароль (VARCHAR2)vch_VC_APP_CODE
— код приложения (VARCHAR2 — NETSERV_HPD
)vch_VC_CLN_APPID
— название платежного приложения, для логирования (VARCHAR2)DECLARE num_N_ACCOUNT_ID SI_V_SUBJ_ACCOUNTS.N_ACCOUNT_ID%TYPE; vch_Info VARCHAR(2000); BEGIN num_N_ACCOUNT_ID := EX_PAYMENTS_PKG_S.GET_ACCOUNT_ID_FOR_CHARGE( vch_VC_ACCOUNT => :vch_VC_ACCOUNT, vch_VC_USER_CODE => :vch_VC_USER_CODE, vch_VC_TEL_NUMBER => :vch_VC_TEL_NUMBER, vch_VC_CONTRACT_DOC_NO => :vch_VC_CONTRACT_DOC_NO, vch_VC_BILL_DOC_NO => :vch_VC_BILL_DOC_NO, b_AllowCompanyPaying => :b_AllowCompanyPaying, vch_VC_USER_GROUP => :vch_VC_USER_GROUP, vch_Info => :vch_Info); END; _Идентификационные данные абонента_: * {{vch_VC_ACCOUNT}} --- Номер лицевого счета (VARCHAR2) * {{vch_VC_USER_CODE}} --- Код абонента (VARCHAR2) * {{vch_VC_TEL_NUMBER}} --- Номер телефона (VARCHAR2) * {{vch_VC_CONTRACT_DOC_NO}} --- Номер договора (VARCHAR2) * {{vch_VC_BILL_DOC_NO}} --- Номер счета (VARCHAR2) * {{b_AllowCompanyPaying}} --- Флаг разрешения приема платежей от юрлиц ({{MAIN.b_TRUE}} или {{MAIN.b_FALSE}}) * {{vch_VC_USER_GROUP}} --- Код группы абонентов (VARCHAR2). Может быть не задан, если ограничение не требуется * {{vch_Info}} --- Информация по абоненту (выходной аргумент) В вызове возможно указания одного из возможных аргументов, идентифицирующих абонента (например, {{vch_VC_CONTRACT_DOC_NO}}), при этом все остальные идентифицирующие аргументы должны быть либо удалены из вызова, либо равны {{NULL}}. В результате вызова функция {{EX_PAYMENTS_PKG_S.GET_ACCOUNT_ID_FOR_CHARGE}} возвращает идентификатор лицевого счета ({{num_N_ACCOUNT_ID}}) и информацию по абоненту ({{vch_Info}} --- первые буквы фамилии, имени и отчества для физлиц. Например, _Ф. П. П._) Если в результате вызова не удалось подобрать ЛС абонента, функция возвращает *{{NULL}}*. h3. Проведение платежа BEGIN -- Очистка логов TT_MESSAGE_LOGS_PKG.TT_MESSAGE_LOGS_CLEAR; -- Проведение платежа EX_PAYMENTS_PKG.EX_PAYMENTS_CHARGE( vch_VC_TO_BANK => :vch_VC_TO_BANK, vch_VC_TO_ACCOUNT => :vch_VC_TO_ACCOUNT, num_N_SUM => :num_N_SUM, num_Fee => :num_Fee, vch_PayType => :vch_PayType, vch_Currency => :vch_Currency, vch_VC_TRANSACTION_ID => :vch_VC_TRANSACTION_ID, vch_VC_TRANSACTION_NO => :vch_VC_TRANSACTION_NO, num_N_FORWHO_ACCOUNT_ID => :num_N_FORWHO_ACCOUNT_ID, dt_D_TAKING => :dt_D_TAKING, num_N_DOC_ID => :num_N_DOC_ID, dt_D_LOAD => :dt_D_LOAD); END; {{vch_VC_TO_BANK}} --- код банка платежной системы (VARCHAR2) {{vch_VC_TO_ACCOUNT}} --- номер счета юрлица оператора в банке ПС (VARCHAR2) {{num_N_SUM}} --- сумма платежа к зачислению (NUMBER) {{num_Fee}} --- размер комиссии ПС в процентах (NUMBER) {{vch_PayType}} --- тип платежа (VARCHAR2) {{vch_Currency}} --- код валюты (VARCHAR2, значение *{{RUB}}*) {{vch_VC_TRANSACTION_ID}} --- идентификатор транзакции (VARCHAR2) {{vch_VC_TRANSACTION_NO}} --- номер транзакции (VARCHAR2). Может быть не задан {{num_N_FORWHO_ACCOUNT_ID}} --- идентификатор ЛС абонента (NUMBER). См. _проверку наличия лицевого счета_ {{dt_D_TAKING}} --- дата получения платежа от абонента (DATE, значение по умолчанию {{SYSDATE}} --- текущее время) {{num_N_DOC_ID}} --- идентификатор платежа в биллинге (NUMBER, выходной аргумент) {{dt_D_LOAD}} --- дата загрузки платежа в биллинг (DATE, выходной аргумент) Если в результате вызова процедуры {{EX_PAYMENTS_PKG.EX_PAYMENTS_CHARGE}} идентификатор платежа ({{num_N_DOC_ID}}) оказался {{NULL}} (платеж не прошел), в представлении {{TT_V_MESSAGE_LOGS}} содержится информация с указанием причины: |
SELECT D_MESSAGE,
VC_MESSAGE
FROM TT_V_MESSAGE_LOGS
ORDER BY D_MESSAGE