Example #1
0
    return substr($rs, $start, $end - $start);
}
if ($_POST['signature'] == "" || $_POST['operation_xml'] == "") {
    die;
}
$insig = $_POST['signature'];
$resp = base64_decode($_POST['operation_xml']);
$order_id = str_replace("ORDER_", "", liqpay_parseTag($resp, "order_id"));
$status = liqpay_parseTag($resp, "status");
$response_description = liqpay_parseTag($resp, "response_description");
$transaction_id = liqpay_parseTag($resp, "transaction_id");
$pay_details = liqpay_parseTag($resp, "pay_details");
$pay_way = liqpay_parseTag($resp, "pay_way");
$amount = liqpay_parseTag($resp, "amount");
$currency = liqpay_parseTag($resp, "currency");
$sender_phone = liqpay_parseTag($resp, "sender_phone");
if ($order_id <= 0) {
    die;
}
if (!($arOrder = CSaleOrder::GetByID($order_id))) {
    die;
}
if ($arOrder["PAYED"] == "Y") {
    die;
}
CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]);
$merchant_id = CSalePaySystemAction::GetParamValue("MERCHANT_ID");
$signature = CSalePaySystemAction::GetParamValue("SIGN");
$gensig = base64_encode(sha1($signature . $resp . $signature, 1));
if ($insig == $gensig) {
    if ($status == "success") {
Example #2
0
function liqpay_parseTag($rs, $tag)
{
    $rs = str_replace("\n", "", str_replace("\r", "", $rs));
    $tags = '<' . $tag . '>';
    $tage = '</' . $tag;
    $start = strpos($rs, $tags) + strlen($tags);
    $end = strpos($rs, $tage);
    return substr($rs, $start, $end - $start);
}
if ($_POST['signature'] == "" || $_POST['operation_xml'] == "") {
    die;
}
$insig = $_POST['signature'];
$resp = base64_decode($_POST['operation_xml']);
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$entityId = str_replace("PAYMENT_", "", liqpay_parseTag($resp, "order_id"));
list($orderId, $paymentId) = \Bitrix\Sale\PaySystem\Manager::getIdsByPayment($entityId);
if ($orderId > 0) {
    /** @var \Bitrix\Sale\Order $order */
    $order = \Bitrix\Sale\Order::load($orderId);
    if ($order) {
        /** @var \Bitrix\Sale\PaymentCollection $paymentCollection */
        $paymentCollection = $order->getPaymentCollection();
        if ($paymentCollection && $paymentId > 0) {
            /** @var \Bitrix\Sale\Payment $payment */
            $payment = $paymentCollection->getItemById($paymentId);
            if ($payment) {
                $service = \Bitrix\Sale\PaySystem\Manager::getObjectById($payment->getPaymentSystemId());
                if ($service) {
                    $service->processRequest($request);
                }