Пользователь БД
Для подключения к БД для приема платежей из внешних систем необходимо использовать специального пользователя 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