НЕ забыл я и не забил.
ЗАМЕНА ФАЙЛА yabilling.ajax.php
<?php
/**
* [BEGIN_COT_EXT]
* Hooks=ajax
* [END_COT_EXT]
*/
/**
* Yandex money billing Plugin
*
* @package yabilling
* @version 1.0
* @author devkont (Yusupov)
* @copyright (c) CMSWorks Team 2013
* @license BSD
*/
defined('COT_CODE') or die('Wrong URL');
require_once cot_incfile('payments', 'module');
$status_data = $_POST;
$notification_secret = $cfg['plugin']['yabilling']['secret_key'];
$par_string = $status_data['notification_type'] . '&' .
$status_data['operation_id'] . '&' .
$status_data['amount'] . '&' .
$status_data['currency'] . '&' .
$status_data['datetime'] . '&' .
$status_data['sender'] . '&' .
$status_data['codepro'] . '&' .
$notification_secret . '&' .
$status_data['label'];
$sha1_hash = sha1($par_string);
if ($sha1_hash == $status_data['sha1_hash'] && !$status_data['test_notification'])
{
$pinfo = $db->query("SELECT * FROM $db_payments
WHERE pay_id='" . (int)$status_data['label'] . "'
AND pay_status='process'")->fetch();
if(empty($pinfo))
{
header ('HTTP/1.1 302');
}
else
{
$amount = number_format($pinfo['pay_summ'] * $cfg['plugin']['yabilling']['rate'], 2, '.', '');
if($status_data['withdraw_amount'] == $amount)
{
// Меняем статус на "оплачено"
if(cot_payments_updatestatus($status_data['label'], 'paid'))
{
// Зачисляем деньги на баланс пользователя
$pay_info = cot_payments_payinfo($status_data['label']);
if ($pay_info && $pay_info['pay_area'] == 'balance')
{
cot_payments_updateuserbalance($pay_info['pay_userid'], $pay_info['pay_summ'], $pay_info['pay_id']);
cot_payments_updatestatus($status_data['label'], 'done');
}
header ('HTTP/1.1 200');
}
else
{
header ('HTTP/1.1 302');
}
}
else
{
header ('HTTP/1.1 302');
}
}
}
elseif($status_data['test_notification'])
{
header ('HTTP/1.1 200');
}
else
{
header ('HTTP/1.1 302');
}
НЕМНОГО ОТ РАЗРАБОТЧИКА ПЛАГИНА:
Платежный плагин для подключения Яндекс.денег к модулю Payments для Cotonti
Разработчик: Булат Юсупов cmsworks.ru
Copyright CMSWorks Team 2014
Плагин для приема оплаты через платежную систему Яндекс.Деньги
(для физ. лиц).
Данный плагин работает только если на вашем сайте установлен платежный модуль Payments.
###Установка:
Распакуйте и скопируйте папку yabilling в директорию plugins/ вашего сайта.
Зайдите в админ-панель сайта и перейдите в раздел "Расширения". Установите плагин Yandexbilling.
Перейдите по ссылке "HTTP-уведомления" и укажите ссылку на страницу вашего сайта куда нужно отсылать уведомление об оплате от платежной системы.
Ссылка должна иметь следующий формат: http://vashsite.com/index.php?r=yabilling
На этой же странице скопируйте свое секретное слово и укажите его в настройках плагина.
В настройках плагина необходимо указать номер вашего Яндекс-кошелька и секретное слово, которое вы получили в настройках кошелька Яндекс.Деньги.
Соотношение к валюте сайта устанавливается соответствующей опцией в настройках плагина.
Также в настройках плагина можно включить вывод способов оплаты (Яндекс.кошелек и Банковская карта) перед переходом на страницу платежной системы.
Внимание! Этот плагин предназначен только для подключения яндекс.кошелька физических лиц.
Если не помогло - читаем ниже
1. такая же проблема у меня была как-то со старым "payeerbilling" - я там полностью плагин перебрал и выложил в репозиторий у себя, и он отлично справлялся, пока сам сервис не засанкцили.
2. Дерьмо в том, что у вас старый модуль "Payments",
а у меня, уже на основе переработанного модуля Алексеем Кальновым, используется, расположенная здесь, уже моя пофиксенная и дополненная версия модуля платежей.
И с ней же в паре, я решал и решил точно такую проблему.
3. Что бы заниматься вашей проблемой, это нужно работать в живую, и здесь два ключевых слова "работать" и "в живую" - то есть платно и то если будет время.
4. Что могу порекомендовать не в качестве совета, а что бы сделал я на вашем месте и делаю так всегда - никогда не держаться за старое. Есть новая сборка фриланс-биржи, где уже есть все для старта, а плагинов и всяких доработок полно и здесь в репозиториях и здесь, в маркетплейсе расширений.
Для образовательных целей или как рабочий фундамент - Рекомендую Ставить новый "Скрипт торговой площадки фриланс услуг" и с ним работать, поддерживать и развивать уже под себя.
Это не будет бесплатно, если вы сам не разработчик.
5. Чисто интуитивно могу предположить, что проблема лежит где-то здесь, в функции обновлении статуса
cot_payments_updatestatus($status_data['label'], 'paid')
if($status_data['withdraw_amount'] == $amount)
{
if(cot_payments_updatestatus($status_data['label'], 'paid'))
{
header ( 'HTTP/1.1 200' ); //
}
else
{
header ( 'HTTP/1.1 302' );
}
}
но для ее решения нужно вникать в старый модуль, что не имеет резона, если есть новый и точно рабочий. И уже под новый рабочий, в паре, нужно смотреть ваш юмани.
дополнительно по теме:
1. Уведомления — API ЮMoney для сбора денег
2. HTTP-уведомления (требуется авторизация)