Qiwi — различия между версиями

Материал из ExpertBilling
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 10: Строка 10:
  
 
<pre>
 
<pre>
*/5 * * * * root /opt/ebs/web/ebscab/paymentgateways/qiwi/qiwiapi.py &> /opt/ebs/data/log/qiwi_process.log.
+
*/5 * * * * python /opt/ebs/web/ebscab/paymentgateways/qiwi/qiwiapi.py > /opt/ebs/data/log/qiwi_process.log &
 +
</pre>
 +
 
 +
Для версии 1.4.1 дополнительно требуется импортировать в базу данных функцию
 +
<pre>
 +
CREATE OR REPLACE FUNCTION account_payment_transaction_trg_fn()
 +
  RETURNS trigger AS
 +
$BODY$
 +
BEGIN
 +
 
 +
IF (TG_OP = 'INSERT') AND NEW.accepted = TRUE THEN
 +
    UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
 +
    RETURN NEW;
 +
END IF;   
 +
IF (TG_OP = 'INSERT') AND NEW.accepted = FALSE THEN
 +
    RETURN NEW;
 +
END IF;   
 +
IF (TG_OP = 'DELETE') AND OLD.accepted = TRUE THEN
 +
    UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=OLD.account_id;
 +
    RETURN OLD;
 +
END IF;   
 +
IF (TG_OP = 'UPDATE') AND NEW.accepted = TRUE AND OLD.accepted = FALSE THEN
 +
    UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
 +
    RETURN NEW;
 +
END IF;
 +
IF (TG_OP = 'UPDATE') AND NEW.accepted = FALSE AND OLD.accepted = TRUE THEN
 +
    UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=NEW.account_id;
 +
    RETURN NEW;
 +
END IF;   
 +
IF (TG_OP = 'UPDATE') AND NEW.accepted = TRUE AND OLD.accepted = TRUE THEN
 +
  UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=NEW.account_id;
 +
  UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
 +
  RETURN NEW;
 +
END IF;
 +
IF (TG_OP = 'UPDATE') AND NEW.accepted = FALSE AND OLD.accepted=False THEN
 +
  RETURN NEW;
 +
END IF;
 +
RETURN NULL;
 +
END;
 +
$BODY$
 +
  LANGUAGE plpgsql VOLATILE
 +
  COST 100;
 
</pre>
 
</pre>

Текущая версия на 17:17, 19 августа 2012

В ExpertBilling 1.4 реализовано 2 схемы работы с системой QiWi:

  1. выставление счетов с последующей проверкой оплаченных счетов и занесением их в базу.
  2. выставление счетов и автоматическое их подтверждене, в случае указания абонентом пароля для доступа к своему qiwi кошельку.
Qiwi gateway.png

-Настройка приёма платежей через платёжную систему QiWi осуществляется в 2 этапа:

  1. В файле веб-кабинета ebscab/paymentgateways/qiwi/qiwiapi.py прописать id терминала, пароль и другие параметры для работы с qiwi
  2. Прописать в crontab запуск скрипта, который будет просматривать подтверждённые счета и делать проводки в базе данных.
*/5 * * * * python /opt/ebs/web/ebscab/paymentgateways/qiwi/qiwiapi.py > /opt/ebs/data/log/qiwi_process.log &

Для версии 1.4.1 дополнительно требуется импортировать в базу данных функцию

CREATE OR REPLACE FUNCTION account_payment_transaction_trg_fn()
  RETURNS trigger AS
$BODY$
BEGIN

IF (TG_OP = 'INSERT') AND NEW.accepted = TRUE THEN
    UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
    RETURN NEW;
END IF;    
IF (TG_OP = 'INSERT') AND NEW.accepted = FALSE THEN
    RETURN NEW;
END IF;    
IF (TG_OP = 'DELETE') AND OLD.accepted = TRUE THEN
    UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=OLD.account_id;
    RETURN OLD;
END IF;    
IF (TG_OP = 'UPDATE') AND NEW.accepted = TRUE AND OLD.accepted = FALSE THEN
    UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
    RETURN NEW;
END IF;
IF (TG_OP = 'UPDATE') AND NEW.accepted = FALSE AND OLD.accepted = TRUE THEN
    UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=NEW.account_id;
    RETURN NEW;
END IF;    
IF (TG_OP = 'UPDATE') AND NEW.accepted = TRUE AND OLD.accepted = TRUE THEN
  UPDATE billservice_account SET ballance=ballance-OLD.summ WHERE id=NEW.account_id;
  UPDATE billservice_account SET ballance=ballance+NEW.summ WHERE id=NEW.account_id;
  RETURN NEW;
END IF;
IF (TG_OP = 'UPDATE') AND NEW.accepted = FALSE AND OLD.accepted=False THEN
  RETURN NEW;
END IF;
RETURN NULL;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;