function copayco_perform() { $sRequestType = NULL; try { $oCPC = copayco_api::instance(); // Получение ID транзакции для загрузки остальных параметров $sTaId = $oCPC->get_ta_id(); // Подготовка основных данных $aReq = $oCPC->get_request_data(); $sRequestType = $oCPC->get_request_type(); //в копейках же $nAmount = $aReq['amount'] / 100; $sCurrency = $aReq['currency']; $sCustom = $aReq['custom']; // Установка основных параметров $oCPC->set_main_data($sTaId, $nAmount, $sCurrency); // Установка custom-поля (если необходимо) $oCPC->set_custom_field($sCustom); //всякие штуки нужные для OpenPayz $hash = $sTaId; $customerid = trim($sCustom); $summ = $nAmount; $paysys = 'COPAYCO'; $note = $aReq['currency'] . ':' . $aReq['amount'] . ' ' . $aReq['custom'] . ' ' . $aReq['payment_mode']; $allcustomers = op_CustomersGetAll(); $transactionCheck = copayco_CheckTransaction($hash); if ($sRequestType == 'check') { // Проверка полученных данных // ограничимся просто проверкой на существование такого Payment ID и уникальности транзакции. if (!isset($allcustomers[$customerid])) { $oCPC->set_error_message('Unknown Payment ID'); } if (!$transactionCheck) { $oCPC->set_error_message('Transaction ID is not unique'); } } else { if ($aReq['status'] == 'finished') { //о, кажись нам пришли бабки, давайте нарисуем транзакцию для OpenPayz? //регистрируем новую транзакцию op_TransactionAdd($hash, $summ, $customerid, $paysys, $note); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); } } } catch (copayco_exception $e) { // Обработка ошибок $nErrType = $e->get_error_type_code(); $nCode = $e->getCode(); $oCPC->set_error_message($e->getMessage() . ' ' . $nCode); } // Вывод результатов if ($sRequestType == 'perform') { $oCPC->output_perform_answer(); } else { $oCPC->output_check_answer(); } }
{ $hash = mysql_real_escape_string($hash); $query = "SELECT `id` from `op_transactions` WHERE `hash`='" . $hash . "'"; $data = simple_query($query); if (!empty($data)) { return $data['id']; } else { return false; } } $required = array('command', 'txn_id', 'account', 'sum'); //если нас пнули объязательными параметрами if (comepay_CheckGet($required)) { //это нас киви как-бы проверяет на вшивость if ($_GET['command'] == 'check') { $allcustomers = op_CustomersGetAll(); $hash = 'COME_' . $_GET['txn_id']; $summ = $_GET['sum']; $customerid = trim($_GET['account']); $paysys = 'COMEPAY'; $note = 'some debug info'; //нашелся братиша! if (isset($allcustomers[$customerid])) { $transactionCheck = nvp_CheckTransaction($hash); //если еще нету такой транзакции регистрируем и обрабатываем новую if (!$transactionCheck) { //регистрируем новую транзакцию op_TransactionAdd($hash, $summ, $customerid, $paysys, $note); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); }
function pbx_ReplyPayment($customerid, $summ, $rawhash) { $allcustomers = op_CustomersGetAll(); if (isset($allcustomers[$customerid])) { if (pbx_CheckHash($rawhash)) { //do the payment $hash = 'PBX_' . $rawhash; $paysys = 'PBANKX'; $note = 'inputreference: ' . $rawhash; op_TransactionAdd($hash, $summ, $customerid, $paysys, $note); op_ProcessHandlers(); $templateOk = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Transfer xmlns="http://debt.privatbank.ua/Transfer" interface="Debt" action="Pay"> <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Gateway" reference="' . $rawhash . '"> </Data> </Transfer>'; $result = $templateOk; } else { $templateFail = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Transfer xmlns="http://debt.privatbank.ua/Transfer" interface="Debt" action="Pay"> <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ErrorInfo" code="7"> <Message>' . PBX_EX_DUPLICATE . '</Message> </Data> </Transfer>'; $result = $templateFail; } } else { $templateFail = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Transfer xmlns="http://debt.privatbank.ua/Transfer" interface="Debt" action="Pay"> <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ErrorInfo" code="2"> <Message>' . PBX_EX_NOT_FOUND . '</Message> </Data> </Transfer>'; $result = $templateFail; } $result = trim($result); return $result; }
/** * Mail notification handler * * @param string $body * * @return void */ function op_HandleMail($body) { $opconfig = op_LoadConfig(); $allcustomers = op_CustomersGetAll(); $notify_mail = $opconfig['NOTIFY_MAIL']; $subject = "New OpenPayz transaction"; mail($notify_mail, $subject, $body); }
function ns_CheckCustomer($customerId) { global $minAmount, $maxAmount, $serviceName; $allcustomers = op_CustomersGetAll(); if (isset($allcustomers[$customerId])) { $login = $allcustomers[$customerId]; $allrealnames = ns_UserGetAllRealnames(); $alltariffprices = ns_TariffGetPricesAll(); $userData = simple_query("SELECT * from `users` WHERE `login`='" . $login . "'"); //extracting tariff price if (!empty($userData)) { $userTariff = $userData['Tariff']; } else { $userTariff = false; } if ($userTariff) { $tariffPrice = $alltariffprices[$userTariff]; } else { $tariffPrice = 0; } $result = '<?xml version="1.0" encoding="UTF-8" ?> <pay-response> <balance>' . @$userData['Cash'] . '</balance> <name>' . @$allrealnames[$login] . '</name> <account>' . $customerId . '</account> <service_id>' . $serviceName . '</service_id> <abonplata>' . $tariffPrice . '</abonplata> <min_amount>' . $minAmount . '</min_amount> <max_amount>' . $maxAmount . '</max_amount> <status_code>21</status_code> <time_stamp>' . date('d.m.Y H:i:s') . '</time_stamp> </pay-response> '; } else { $result = '<?xml version="1.0" encoding="UTF-8" ?> <pay-response> <status_code>-40</status_code> <time_stamp>' . date('d.m.Y H:i:s') . '</time_stamp> </pay-response> '; } $result = trim($result); return $result; }
//��������� ����� ������ $total=0; //��� �� ��� ��������? �������. $items=unserialize($order_array['items']); foreach($items as $id=>$count) { $itemdata=fn_cat_get_itemdata($id); $summ=$itemdata['price']*$count; $total=$total+$summ; } answer_to_ipay('answer.txt',array('%ORDER_ID%'=>$orderid,'%AMOUNT%'=>$total)); } */ ////////////////////////������ ����������//////////////////////// if (strpos($_POST['XML'], 'TransactionStart') !== false) { preg_match("/<PersonalAccount>(.*)<\\/PersonalAccount>/imU", $_POST['XML'], $order); $order_array = op_CustomersGetAll(); $orderid = $order['1']; if (!isset($order_array[$orderid])) { answer_to_ipay('error_no_order.txt', array('%ORDER_ID%' => $orderid, '%SITE%' => $site)); } preg_match("/<RequestId>(.*)<\\/RequestId>/imU", $_POST['XML'], $hash_arr); $hash = $hash_arr['1']; $paysys = 'IPAYBY'; $note = iconv("WINDOWS-1251", "UTF-8", $_POST['XML']); //������������ ����� ���������� op_TransactionAdd($hash, $total, $orderid, $paysys, $note); answer_to_ipay('trans_start.txt', array('%TRX_ID%' => $orderid)); } //////////////////////��������� ����������///////////////////////// if (strpos($_POST['XML'], 'TransactionResult') !== false) { preg_match("/<PersonalAccount>(.*)<\\/PersonalAccount>/imU", $_POST['XML'], $prog);
function pltz_Check($login, $password, $payElementID, $transactionID, $account) { global $serviceId; $extTransactionID = 0; //Платеж в системе Вашей системе $result = 0; //Поле кода завершения (см. Приложение А. Список кодов завершения) $comment = ''; //Необязательном поле, служебный комментарий. //Здесь записываем в базу поступивший запрос, для того что бы потом разобраться какие запросы к Вам приходили. Уникальный индификатор запроса - $transactionID if (pltz_AuthLogin($login, $password)) { //Проверяем $login, $password, что бы отсекать чужие запросы if ($payElementID == $serviceId) { //Ищем сервис для оплаты (по $payElementID) в Вашей БД $allcustomers = op_CustomersGetAll(); if (isset($allcustomers[$account])) { //Проверяем в БД абонента (по $account) //Здесь нужно сохранить платеж в базу, со статусом не оплачен $extTransactionID = 'PLTZ_' . pltz_GetFreeId(); //Записываем сюда номер Вашей транзакции. $comment = 'Ожидание платежа'; //Коментарий не обязателен } else { $result = 5; //Идентификатор абонента не найден (Ошиблись номером). Здесь может быть другая ошибка, например 79 (Счет абонента не активен) $comment = 'Идентификатор абонента не найден'; //Коментарий не обязателен } } else { $result = 7; //Прием платежа запрещен провайдером } } else { $result = 7; //Прием платежа запрещен провайдером } pltz_sendResponse("<extTransactionID>{$extTransactionID}</extTransactionID>\n <account>{$account}</account>\n <result>{$result}</result>\n <comment>{$comment}</comment>"); }