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(); } }
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(); } $good_reply = ' <?xml version="1.0"?> <response> <osmp_txn_id>' . $hash . '</osmp_txn_id> <result>0</result> </response> '; die(trim($good_reply)); } else { $bad_reply = ' <?xml version="1.0"?> <response>
$merchantData = $merchantData[0]; if ($merchantData->name == 'paymentid') { $customerId = $merchantData->value; $allcustomers = op_CustomersGetAll(); if (isset($allcustomers[$customerId])) { $paysys = 'FONDY'; $hash = 'OPL_' . $requestData->payment_id; $summ = $requestData->amount / 100; // деньги то в копейках $orderStatus = $requestData->order_status; //а нету ли уже такой транзакции? if (opl_CheckTransaction($hash)) { //проверяем состояние платежа if ($orderStatus == 'approved') { //регистрируем новую транзакцию op_TransactionAdd($hash, $summ, $customerId, $paysys, 'NOPE'); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); } } else { //здесь по логике должен быть ответ о том, что это дубль } } else { // тут должен быть вопль о том, что невалидный пользователь aka merchantData->value } } } } } } }
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; }
} //обработка входящего платежа if ($action == 'payment') { if (sber_CheckGet(array('amount', 'receipt', 'number'))) { $hashClean = $_GET['receipt']; $hashStore = 'SBERBANK_' . $hashClean; $summ = $_GET['amount']; $paysys = 'SBERBANK'; $note = 'some debug info here'; $customer_id = $_GET['number']; $date = date("Y-m-d\\TH:i:s"); $allcustomers = op_CustomersGetAll(); if (isset($allcustomers[$customer_id])) { if (sber_CheckTransaction($hashStore)) { //регистрируем новую транзакцию op_TransactionAdd($hashStore, $summ, $customer_id, $paysys, $note); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); $replyPayment = ' <?xml version="1.0" encoding="utf-8"?> <response> <code>0</code> <date>' . $date . '</date> <message>Платеж успешно обработан</message> </response> '; } else { $replyPayment = ' <?xml version="1.0" encoding="utf-8"?> <response> <code>0</code>
<Comment></Comment> </Response>'; $reply = trim($reply); die($reply); } //ловим запрос на пополнение счета if ($_GET['QueryType'] == 'pay') { if (cpay_CheckGet(array('Amount', 'TransactionDate'))) { $amount = $_GET['Amount']; $payDate = $_GET['TransactionDate']; //если абонент найден по платежному ID регистрируем транзакцию if (isset($allcustomers[$customerid])) { $note = 'hash:' . mysql_real_escape_string($hash) . ' date:' . mysql_real_escape_string($payDate); if (cpay_CheckTransaction($hashPrepared)) { //регистрируем новую транзакцию op_TransactionAdd($hashPrepared, $amount, $customerid, $paysys, $note); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); } //выцепляем ее внутренний ID $transactionExtID = cpay_GetTransactionID($hashPrepared); $resultPayCode = 0; } else { $resultPayCode = 21; $transactionExtID = ''; } $reply = '<?xml version="1.0" encoding="UTF-8"?> <Response> <TransactionId>' . $hash . '</TransactionId> <TransactionExt>' . $transactionExtID . '</TransactionExt> <Amount>' . $amount . '</Amount>
// Ловим сообщения о совершенных платежах в виде: // ?action=bill_input&bill_identifier=2887647236&summ=10&pkey=aaa444455656&date=2012-04-02T18:20:15 if (isset($_GET['action'])) { if ($_GET['action'] == 'bill_input') { $customerid = vf($_GET['bill_identifier'], 3); //если все нормально регистрируем новую транзакцию if (!empty($customerid)) { $summ = $_GET['sum']; $hash = $_GET['pkey']; $ophash = 'PB' . $_GET['pkey']; $date = date("Y-M-d H:i:s"); //точно ли уникальный хеш? if (pb_IsHashUnique($ophash)) { //не нулевая ли сумма if ($summ > 1 and !ispos($summ, ',')) { op_TransactionAdd($ophash, $summ, $customerid, 'PBANK', $date); op_ProcessHandlers(); $transaction_ok = ' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseExtInputPay> <extInputPay> <inner_ref>' . $hash . '</inner_ref> </extInputPay> </ResponseExtInputPay> '; print $transaction_ok; } else { $sum_fail = ' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseExtInputPay> <errorResponse>
die($reply); } } // // создание платежа // if (isset($rawXml['Request']['Payment'])) { $allcustomers = op_CustomersGetAll(); $paymentCustomerId = mysql_real_escape_string($rawXml['Request']['Payment']['Account']); $hashClean = mysql_real_escape_string($rawXml['Request']['Payment']['OrderId']); $hash = 'EP_' . $hashClean; $summ = mysql_real_escape_string($rawXml['Request']['Payment']['Amount']); if (isset($allcustomers[$paymentCustomerId])) { if (!ep_GetTransaction($hash)) { //регистрируем новую транзакцию, вызываем хендлеры, получаем айдишку op_TransactionAdd($hash, $summ, $paymentCustomerId, 'EASYPAY', 'no debug info'); op_ProcessHandlers(); $newTransactionId = ep_GetTransaction($hash); $reply = ' <Response> <StatusCode>0</StatusCode> <StatusDetail>Order Created</StatusDetail> <DateTime>' . date("Y-m-d\\TH:i:s") . '</DateTime> <PaymentId>' . $newTransactionId . '</PaymentId> </Response> '; $reply = trim($reply); die($reply); } else { //уже есть такая транзакцийка $reply = '
function ns_PaymentProcessing($payId, $summ, $customerid, $note) { global $serviceName; $hash = '24NS_' . mysql_real_escape_string($payId); $note = mysql_real_escape_string($note); if (ns_CheckTransaction($hash)) { op_TransactionAdd($hash, $summ, $customerid, '24NONSTOP', $note); op_ProcessHandlers(); $result = '<?xml version="1.0" encoding="UTF-8" ?> <pay-response> <pay_id>' . $payId . '</pay_id > <service_id>' . $serviceName . '</service_id> <amount>' . $summ . '</amount> <status_code>22</status_code> <description>' . $serviceName . '</description> <time_stamp>' . date('d.m.Y H:i:s') . '</time_stamp> </pay-response>'; } else { //if duplicate hash $result = '<?xml version="1.0" encoding="UTF-8" ?> <pay-response> <status_code>-100</status_code> <time_stamp>' . date('d.m.Y H:i:s') . '</time_stamp> </pay-response>'; } $result = trim($result); return $result; }
} */ ////////////////////////������ ����������//////////////////////// 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); $orderid = $prog['1']; if (strpos($_POST['XML'], 'ErrorText') !== false) { //��������! ����� ���������! answer_to_ipay('error_time_out.txt', array('%TRX_ID%' => $orderid, '%SITE%' => $site)); } //�������� ����������� �������������� ���������� op_ProcessHandlers(); answer_to_ipay('success.txt', array('%TRX_ID%' => $orderid, '%SITE%' => $site)); } }
function pltz_Payment($login, $password, $transactionID, $payTimestamp, $payID, $payElementID, $account, $amount, $terminalId) { $extTransactionID = 0; //Платеж в системе Вашей системе $result = 0; //Поле кода завершения (см. Приложение А. Список кодов завершения) $comment = ''; //Необязательном поле, служебный комментарий. //Здесь записываем в базу поступивший запрос, для того что бы потом разобраться какие запросы к Вам приходили. Уникальный индификатор запроса - $transactionID if (pltz_AuthLogin($login, $password)) { //Проверяем $login, $password, что бы отсекать чужие запросы $extTransactionID = 'PLTZ_' . pltz_GetFreeId(); //Записываем сюда номер Вашей транзакции if (pltz_CheckTransaction($extTransactionID)) { //Обязательно нужно проверить(по $payID) платеж в Вашей системе, если платеж оплачен - возвращаем result - 0 $hash = $extTransactionID; $summ = $amount / 100; // деньги то в копейках $customerid = $account; $paysys = 'PLATEZHKA'; $note = 'transactionID:' . $transactionID . ' amount:' . $amount; //регистрируем новую транзакцию op_TransactionAdd($hash, $summ, $customerid, $paysys, $note); //вызываем обработчики необработанных транзакций op_ProcessHandlers(); $result = 0; //ОК $comment = 'Платеж выполнен'; //Коментарий не обязателен } else { $result = 0; //ОК } } else { $result = 7; //Прием платежа запрещен провайдером } pltz_sendResponse("<extTransactionID>{$extTransactionID}</extTransactionID>\n <account>{$account}</account>\n <result>{$result}</result>\n <comment>{$comment}</comment>"); }