Way For Pay не проводит оплату через WP-Recall (Wordpress)
Есть дополнение для оплаты с помощью системы Way For Pay через плагин WP-Recall для Wordpress.
Дополнение включается. Можно с помощью него оплатить. Деньги снимаются и поступают на счет. Однако сама оплата не видна в системе wordpress. Я думаю, что это из-за методов result и success в самом дополнении.
Подскажите, кто сталкивался: как реализовать это правильно? Уже много всего перепробовал - немогу понять как попасть в метод result и как эмулировать его, чтобы проверить что там происходит и где ошибка.
<?
add_action( 'rcl_payments_gateway_init', 'rcl_add_wayforpay_gateway' );
function rcl_add_wayforpay_gateway() {
//указываем идентификатор платежной системы и
//наименование созданного класса с логикой обработки платежа
rcl_gateway_register( 'wayforpay', 'Rcl_Wayforpay_Payment' );
}
class Rcl_Wayforpay_Payment extends Rcl_Gateway_Core {
function __construct() {
//регистрационные данные подключения
parent::__construct( array(
'request' => 'wayforpay-request', //get- или post-параметр, по которому будем отлавливать запрос от платежной системы
'name' => 'Way For Pay', //наименование платежной системы
'submit' => __( 'Way For Pay' ), //надпись на окончательной кнопке оплаты
'icon' => rcl_addon_url( 'assets/way-for-pay.jpg', __FILE__ ) //url до иконки платежной системы в папке дополнения
) );
}
//указание опций подключения
function get_options() {
return array(
array(
'type' => 'text',
'slug' => 'wfp_account',
'title' => __( 'Merchant login (Например U123456)' )
),
array(
'type' => 'text',
'slug' => 'wfp_site_name',
'title' => __( 'Адрес сайта' )
),
array(
'type' => 'text',
'slug' => 'wfp_phrase',
'title' => __( 'Merchant secret key' )
)
);
}
//создание платежной формы
function get_form( $data ) {
$wfp_account = rcl_get_commerce_option('wfp_account');
$wfp_site_name = rcl_get_commerce_option('wfp_site_name');
$wfp_phrase = rcl_get_commerce_option('wfp_phrase');
$currency = rcl_get_commerce_option['primary_cur'];
$timestamp = current_time('timestamp');
if(empty($data->currency))
{
$data->currency = 'USD';
}
$data->currency = 'UAH';
$wfp_account = 'test_merch_n1';
$wfp_phrase = 'flk3409refn54t54t*FNJRET';
$string = $wfp_account.';'.$wfp_site_name.';'.$data->pay_id.';'.$timestamp.';'.$data->pay_summ.';'.$data->currency.';'.$data->description.';'.'1'.';'.$data->pay_summ;
$hash = hash_hmac("md5",$string,$wfp_phrase);
// $data->pay_type
// $data->baggage_data
$fields = array(
'merchantAccount' => $wfp_account,
'merchantDomainName' => $wfp_site_name,
'merchantTransactionSecureType' => 'AUTO',
'merchantSignature' => $hash,
'orderReference' => $data->pay_id,
'orderDate' => $timestamp,
'amount' => $data->pay_summ,
'currency' => $data->currency,
'productName' => $data->description,
'productPrice' => $data->pay_summ,
'productCount' => 1,
'clientAccountId' => $data->user_id,
'defaultPaymentSystem' => 'card',
'info' => base64_encode( json_encode( array(
'baggage_data' => $data->baggage_data,
'pay_type' => $data->pay_type
) ) ),
'returnUrl' => get_permalink( $data->page_success ),
'serviceUrl' => get_permalink( $data->page_result )
);
return parent::construct_form( [
'action' => 'https://secure.wayforpay.com/pay',
'fields' => $fields
] );
}
//обработка платежа
function result( $data ) {
mail('[email protected]', 'result', $_REQUEST);
//принимаем данные переданные платежной системой
$pay_id = $_REQUEST['order_id'];
$user_id = $_REQUEST['customer'];
$pay_summ = $_REQUEST['amount'];
$pay_type = $_REQUEST['custom_field_pay_type'];
$baggage_data = $_REQUEST['custom_field_baggage_data'];
//проверяем наличие платежа по идентификатору
if ( ! parent::get_payment( $pay_id ) ) {
//создаем новый платеж, передав массив с обязательными параметрами
parent::insert_payment( array(
'pay_id' => $pay_id,
'pay_summ' => $pay_summ,
'user_id' => $user_id,
'pay_type' => $pay_type,
'baggage_data' => $baggage_data
) );
}
//завершаем выполнение скрипта в любом случае
echo "OK";
exit();
}
//проверка платежа и перенаправление
//на страницы fail или successfull
function success( $data ) {
//принимаем от платежной системы идентификатор платежа
die();
$pay_id = $_REQUEST['order_id'];
//проверяем наличие платежа
if ( parent::get_payment( $pay_id ) ) {
wp_redirect( get_permalink( $data->page_successfully ) );
exit;
} else {
wp_die( 'Платеж не найден в базе данных!' );
}
}
}
?>