Перейти к содержимому


Фото
- - - - -

Платежный модуль для Яндекс Денег


  • Чтобы отвечать, сперва войдите на форум
148 ответов в теме

#141 Noxter

Noxter
  • Фрилансер
  • 5 765 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2017 - 10:12

Я так полагаю тема мертвая уже? И прийдется искать сторонних программистов что бы сделали отправку заказа на почту после оплаты.

Попробуйте мое решение, если не сработает пишите в скайп simplacms.

#142 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 24.03.2017 - 13:03

Попробуйте мое решение, если не сработает пишите в скайп simplacms.

 
Сравнил callback.php из предложенного решения и и стандартного дистрибутива Simpla.
ИМХО, по сути - одно и то же. Нашел отличия  такого сорта.
1. * @author
В стандартном         Denis Pikusov, 
в предложенном      Noxter
2. Комментарии отличаются к нескольких местах, например
В стандартном      
////////////////////////////////////////////////
// Проверка статуса
////////////////////////////////////////////////
в предложенном   покороче
// Проверка статуса
3. Сообщения об ошибках отличаются к нескольких местах, например
В стандартном      
if($hash !== $_POST['sha1_hash'])
    err('bad sign');
в предложенном 
// Проверка статуса
if($hash !== $_POST['sha1_hash'])
{
    error('Не верный секретный ключ');
}
 
Вопрос: такие изменения достаточно существенны, чтобы ставить свой copyright ?  Или я пропустил что-то важное?

 
4  * @copyright 
В стандартном          * @copyright     2013 Denis Pikusov
в предложенном       * @copyright     2014 Noxter



#143 Noxter

Noxter
  • Фрилансер
  • 5 765 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2017 - 15:49

Ну я писал этот модуль очень давно, до того как Денис внес свои правки в стандартный модуль.
Да и то написан он был как я помню по причине не рабочего модуля в симпле, точно не помню вроде Яндекс поля какие-то в форме поменял.

#144 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 24.03.2017 - 16:13

Ну я писал этот модуль очень давно, до того как Денис внес свои правки в стандартный модуль.

 
Текущий стандартный модуль Simpla появился в версии 2.2.5 в феврале 2014 и сам  файл callback.php датируется 2013 годом.
В предлагаемом решении в архиве файл callback.php и другие датируется 2015 годом. А внутри файла  стоит "* @copyright     2014 Noxter"...

 

Да и то написан он был как я помню по причине не рабочего модуля в симпле, точно не помню вроде Яндекс поля какие-то в форме поменял.

 

Хорошо было бы вспомнить, по какой причине и вставить эту причину в описание. А то в файле callback.php не видно ни одного реального изменения, одни косметические прикрасы...



#145 Noxter

Noxter
  • Фрилансер
  • 5 765 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.03.2017 - 17:08

В отличии от тебя Корс, мне есть чем занятся, а ты дальше страдай ерундой.
Как говориться "Старость не радость".

#146 pereborr

pereborr
  • Пользователь
  • 15 сообщений
  • Дизайн, Программирование, Верстка, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:ул.Пушкина дом колотушкина

Опубликовано 13.06.2017 - 14:31

Никак не настрою статус. кто поможет? После оплаты он не меняется.

Статус ждет обработки Оплата оплачен

#147 pereborr

pereborr
  • Пользователь
  • 15 сообщений
  • Дизайн, Программирование, Верстка, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:ул.Пушкина дом колотушкина

Опубликовано 28.10.2017 - 17:02

Ребят, готов заплатить тому кто поможет с этим нерабочим модулем!!!



#148 ABSORBER

ABSORBER
  • Модератор
  • 383 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Хабаровск

Опубликовано 28.10.2017 - 17:20

Ребят, готов заплатить тому кто поможет с этим нерабочим модулем!!!

Пишите в скайп или телеграм, будем чинить.



#149 pereborr

pereborr
  • Пользователь
  • 15 сообщений
  • Дизайн, Программирование, Верстка, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:ул.Пушкина дом колотушкина

Опубликовано 28.10.2017 - 18:40

В общем сам разобрался. Сейчас все работает.

Yandex.php

<?php

require_once('api/Simpla.php');

class Yandex extends Simpla
{

	// Комиссия Яндекса, %
	private $fee = 1;

	public function checkout_form($order_id, $button_text = null)
	{
		if(empty($button_text))
			$button_text = 'Перейти к оплате';
		
		$order = $this->orders->get_order((int)$order_id);
		$payment_method = $this->payment->get_payment_method($order->payment_method_id);
		$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
		$settings = $this->payment->get_payment_settings($payment_method->id);
		
		$price = round($this->money->convert($order->total_price, $payment_method->currency_id, false), 2);
		
		// Учесть комиссию Яндекса
		$price = $price+max(0.01, $price*$this->fee/100);

		// описание заказа
		$desc = 'Оплата заказа №'.$order->id.' на сайте '.$this->settings->site_name;
							
		$button = '<form method="POST" action="https://money.yandex.ru/quickpay/confirm.xml">
					<input name="receiver" type="hidden" value="'.$settings['yandex_id'].'">
					<input name="formcomment" type="hidden" value="'.$desc.'">
					<input name="short-dest" type="hidden" value="'.$desc.'">
					<input name="targets" type="hidden" value="'.$desc.'">
					<input name="quickpay-form" type="hidden" value="shop">
					<input name="sum" data-type="number" type="hidden" value="'.$price.'">
					<input name="label" type="hidden" value="'.$order->id.'">
					<input name="paymentType" type="hidden" value="PC">
					<input type="submit" name="submit-button" value="'.$button_text.'"  class="checkout_button">
					</form>';
		return $button;
	}
}

 

callback.php - общий для карт и для яндекса

 

<?php

/*
 *
 * К этому скрипту обращается Yandex для уведомления об оплате
 * Документация https://money.yandex.ru/i/forms/guide-to-custom-p2p-forms.pdf
 *
 */
 
// Работаем в корневой директории
chdir ('../../');
require_once('api/Simpla.php');
$simpla = new Simpla();

// Проверка статуса
if($_POST['notification_type'] !== 'p2p-incoming' && $_POST['notification_type'] !== 'card-incoming')
{
	error('Плохой статус');
}
	
// Выберем заказ из базы
$order = $simpla->orders->get_order(intval($_POST['label']));
if(empty($order))
{
	error('Оплачиваемый заказ не найден');
}
 
// Выбираем из базы соответствующий метод оплаты
$method = $simpla->payment->get_payment_method(intval($order->payment_method_id));
if(empty($method))
{
	error("Неизвестный метод оплаты");
}
	
$settings = unserialize($method->settings);
$payment_currency = $simpla->money->get_currency(intval($method->currency_id));

// Проверяем контрольную подпись
$hash = sha1($_POST['notification_type'].'&'.$_POST['operation_id'].'&'.$_POST['amount'].'&'.$_POST['currency'].'&'.$_POST['datetime'].'&'.$_POST['sender'].'&'.$_POST['codepro'].'&'.$settings['yandex_secret'].'&'.$_POST['label']);

if($hash !== $_POST['sha1_hash'])
{
	error('Не верный секретный ключ');
}

// Нельзя оплатить уже оплаченный заказ  
if($order->paid)
{
	error('Этот заказ уже оплачен');
}

// Учет комиссии Яндекса
$amount = round($simpla->money->convert($order->total_price, $method->currency_id, false), 2);

if($_POST['amount'] != $amount || $_POST['amount']<=0)
	error("Не корректная цена");

// Установим статус оплачен
$simpla->orders->update_order(intval($order->id), array('paid'=>1));

// Отправим уведомление на email
$simpla->notify->email_order_user(intval($order->id));
$simpla->notify->email_order_admin(intval($order->id));

// Спишем товары  
$simpla->orders->close(intval($order->id));

function error($msg)
{
	header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request', true, 400);
	mail($simpla->settings->order_email, "yandex: $msg", $msg);
	die($msg);
}

 

 

Дарю безвозмездно






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых