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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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

Для подключения к БД для приема платежей из внешних систем необходимо использовать специального пользователя 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;
  • b_AllowCompanyPaying — Флаг разрешения приема платежей от юрлиц (MAIN.b_TRUE или MAIN.b_FALSE)
  • vch_VC_USER_GROUP — Код группы абонентов (VARCHAR2). Может быть не задан, если ограничение не требуется
  • vch_Info — Информация по абоненту (выходной аргумент)

Идентификационные данные абонента:

  • 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,
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
  • No labels