Page tree
Skip to end of metadata
Go to start of metadata

Пользователь БД

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