Создает и выводит форму оплаты на указанную сумму.

rcl_get_pay_form($args);

$args - массив передаваемых параметров для формирования формы оплаты с нужными характеристиками.

$args = array(

	'pay_summ' => //сумма платежа,
	'pay_type' => //тип платежа,
	'user_id' => //идентификатор пользователя совершающего платеж,
	'description' => //описание платежа,
	'submit_value' => //текст на кнопке оплаты,
	'box_id' => //css-идентификатор формы платежа в атрибуте id,
	'box_class' => //css-класс формы оплаты,
	'merchant_icon' => //указание вывода иконок доступных платежных систем,
	'pay_systems' => //массив предлагаемых платежных систем,
	'pay_systems_not_in' => //массив платежных систем для исключения из формы платежа,
	'baggage_data' => //массив произвольных данных передаваемых в платежную систему при платеже
	
);

pay_summ - сумма платежа, обязательно. Поддерживается указание нецелых чисел.

pay_type - тип платежа, обязательно. Уникальный идентификатор производимого платежа, по которому будет отличать все платежи данного типа от других, указывается строкой или числом. Плагином уже зарезервированы платежи с типами 1 (пополнение баланса пользователя) и 2 (оплата заказа Recall Commerce).

user_id - идентификатор пользователя, производящего платеж, необязательно. По-умолчанию - идентификатор текущего пользователя.

description - описание платежа. Поддерживается не всеми подключениями к платежным системам.

submit_value - текст на кнопках платежа, необязательно.

box_id - css-идентификатор формы платежа.

box_class - css-класс, указывается в массиве.

merchant_icon - включает/отключает вывод иконок для предлагаемых платежных систем внутри платежной формы. По-умолчанию - 1.

pay_systems - массив идентификаторов платежных систем, которые будут предлагаться к выбору внутри формы оплаты. Каждое подключение к платежной системе имеет свой идентификатор, например:

  • yandexkassa
  • unitpay
  • walletone
  • webmoney
  • freekassa
  • и другие

Кроме платежных систем может быть указан способ оплаты через личный баланс пользователя - user_balance.

pay_systems_not_in - массив идентификаторов платежных систем, которые следует исключить из списка предлагаемых внутри формы оплаты.

baggage_data - массив произвольных данных, которые следует передать через платежную форму, чтобы в после успешной оплаты получить их на обработку. Подключение к платежному агрегатору, через который производится платеж, должен поддерживать передачу данного параметра.

Порядок применения

Создадим и выведем форму на получение пожертвований с суммой платежа 100 рублей:

$args = array(

	'pay_summ' => 100,
	'pay_type' => 'donate',

);


echo rcl_get_pay_form($args);

Выведем форму, которую можно будет оплатить только с личного счета:

$args = array(

	'pay_summ' => 100,
	'pay_type' => 'donate',
	'pay_systems' => array('user_balance'),

);


echo rcl_get_pay_form($args);

Выведем форму, которую можно оплатить любым из доступных способов оплаты, кроме оплаты с личного счета:

$args = array(

	'pay_summ' => 100,
	'pay_type' => 'donate',
	'pay_systems_not_in' => array('user_balance'),

);


echo rcl_get_pay_form($args);

Создадим платежную форму для оплаты произвольного заказа с типом 'pay-order' и передадим в платежную форму идентификатор оплачиваемого заказа и количество товаров внутри заказа:

$args = array(

	'pay_summ' => 100,
	'pay_type' => 'pay-order',
	'baggage_data' => array(
				'order_id' => 123,
				'product_amount' => 2
				),

);


echo rcl_get_pay_form($args);

Получим данные на обработку при удачном платеже типа 'pay-order' в свою функцию, в том числе переданные через baggage_data произвольные данные и отправим администратору письмо с деталями произведенного платежа:

add_action('rcl_success_pay','process_data_pay_order',10);
function process_data_pay_order($payData){
    
	//проверяем тип платежа, нам нужен 'pay-order'
    if($payData->pay_type != 'pay-order') return false;
	
	//получим произвольные данные переданные через baggage_data

	$baggageData = $payData->baggage_data;
	
	$order_id = $baggageData->order_id; //123
	$productCount = $baggageData->product_amount; //2
	
	//указываем админский емейл сайта
	$email = get_option('admin_email');
	
	//заголовок письма
	$subject = 'Оплата заказа!';
	
	//готовим текст письма
	$textMail = '<p>Пользователь: '.get_the_author_meta('display_name',$payData->user_id).'</p>';
	$textMail .= '<p>Сумма платежа: '.$payData->pay_summ.'</p>';
	$textMail .= '<p>Заказ №: '.$order_id.'</p>';
	$textMail .= '<p>Кол-во товаров в заказе: '.$productCount.'</p>';
	$textMail .= '<p>Система оплаты: '.$payData->current_connect.'</p>';

	rcl_mail($email,$subject,$textMail);
    
}