Пользователь БД
Для подключения к БД для приема платежей из внешних систем необходимо использовать специального пользователя AIS_PAYMENTS.
Инициализация сессии
В самом начале работы с БД необходимо инициализировать сессию с помощью специального вызова процедуры SS_AUTHENTICATION_PKG.LOGIN
:
BEGIN SS_AUTHENTICATION_PKG.LOGIN( vch_VC_IP => :vch_VC_IP, vch_VC_LOGIN => :vch_VC_LOGIN, vch_VC_PASSWORD => :vch_VC_PASSWORD, vch_VC_APP_CODE => :vch_VC_APP_CODE, vch_VC_CLN_APPID => :vch_VC_CLN_APPID); END;
vch_VC_IP
— IP-адрес платежного сервера, для логирования (VARCHAR2)vch_VC_LOGIN
— имя пользователя (VARCHAR2)vch_VC_PASSWORD
— пароль (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 b_Allow_Disabled => :b_Allow_Disabled, b_EvalRecommendedPayment => :b_EvalRecommendedPayment, num_RecommendedPayment => :num_RecommendedPayment); END;
b_AllowCompanyPaying — Флаг разрешения приема платежей от юрлиц (MAIN.b_TRUE или MAIN.b_FALSE)
vch_VC_USER_GROUP — Код группы абонентов (VARCHAR2). Может быть не задан, если ограничение не требуется
vch_Info — Информация по абоненту (выходной аргумент)
b_Allow_Disabled — Флаг для поиска по отключенным абонентам (MAIN.b_TRUE или MAIN.b_FALSE)
- b_EvalRecommendedPayment — Флаг для расчета рекомендуемого платежа (MAIN.b_TRUE или MAIN.b_FALSE)
- num_RecommendedPayment — Сумма рекомендуемого платежа (выходной аргумент)
Идентификационные данные абонента:
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)
В вызове разрешается указание только одного из возможных аргументов, идентифицирующих абонента (например, vch_VC_CONTRACT_DOC_NO
— номер договора), при этом все остальные идентифицирующие аргументы должны быть либо удалены из вызова, либо равны NULL
. В результате вызова функция EX_PAYMENTS_PKG_S.GET_ACCOUNT_ID_FOR_CHARGE
возвращает идентификатор лицевого счета (num_N_ACCOUNT_ID
) и информацию по абоненту (vch_Info
— первые буквы фамилии, имени и отчества для физлиц. Например, Ф. П. П.) Если в результате вызова не удалось подобрать ЛС абонента, функция возвращает NULL
.
Проведение платежа
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, b_AllowCompanyPaying => :b_AllowCompanyPaying, 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). См. проверку наличия лицевого счетаb_AllowCompanyPaying — Флаг разрешения приема платежей от юрлиц (MAIN.b_TRUE или MAIN.b_FALSE)
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