|

Установка плагина Yandex Kassa к Easy Digital Downloads


AliExpress WW


Установка плагина Yandex Kassa к Easy Digital Downloads
Код плагина:
<?php

/**
*
* Plugin Name: Easy Digital Download Yandex Kassa
* Plugin URI: sheensay.ru/?p=3691
* Description: Яндекс Касса для Easy Digital Downloads. Ярлыки для адресов: kassa-check, kassa-aviso, kassa-success, kassa-fail
* Version: 1.0.0
* Author: Sheens
* Author URI: sheensay.ru/?p=3691
*
* ************************************************************************ */
defined( 'ABSPATH' ) or exit;

/**
* Activation
*/
register_activation_hook( __FILE__, 'rewrite_yandex_kassa_urls__activation' );

function rewrite_yandex_kassa_urls__activation() {
flush_rewrite_rules();
}

/**
* WP Rewrite
*/
add_filter( 'rewrite_rules_array', 'rewrite_yandex_kassa_urls__rewrite' );

function rewrite_yandex_kassa_urls__rewrite( $rules ) {

$new = array(
'kassa-check$' => 'index.php?yk-check=1',
'kassa-aviso$' => 'index.php?yk-aviso=1',
'kassa-success$' => 'index.php?yk-success=1',
'kassa-fail$' => 'index.php?yk-fail=1',
);

return $new + $rules;
}

add_filter( 'query_vars', 'rewrite_yandex_kassa_urls__rewrite_vars' );

function rewrite_yandex_kassa_urls__rewrite_vars( $vars ) {

array_push( $vars, 'yk-check', 'yk-aviso', 'yk-success', 'yk-fail' );
return $vars;
}

/**
* Yandex Kassa
*/
add_action( 'wp', 'yandex_result_hooks' );

function yandex_result_hooks() {

if ( get_query_var( 'yk-success' ) ) {
edd_empty_cart();
edd_send_to_success_page();
exit;
} else if ( get_query_var( 'yk-fail') ) {
wp_redirect( edd_get_failed_transaction_uri() );
exit;
}
}

add_action( 'wp', 'yandex_url_hooks' );

function yandex_url_hooks() {
if ( get_query_var( 'yk-check') || get_query_var( 'yk-aviso') ) {
$ya_mode = get_query_var( 'yk-check')? 'check': 'aviso';
$payment_id = intval( $_POST['orderNumber'] );

if ( !is_integer( $payment_id ) ) {
wp_die( 'Bad payment' );
}

$payment_amount = edd_get_payment_amount( $payment_id );

if ( intval( $payment_amount ) !== intval( $_POST['orderSumAmount'] ) ) {
wp_die( 'Bad amount' );
}

$code = 0;

echo '<?xml version=«1.0» encoding=«UTF-8»?>';
if ( $ya_mode == 'check' ) {
echo '<checkOrderResponse performedDatetime="'. $_POST['requestDatetime']. '" code="'. $code. '"'. ' invoiceId="'. $_POST['invoiceId']. '" shopId="'. edd_get_option( 'ya_shop_id', false ). '"/>';
} else if ( $ya_mode == 'aviso' ) {
echo '<paymentAvisoResponse performedDatetime="'. $_POST['requestDatetime']. '" code="'. $code. '" invoiceId="'. $_POST['invoiceId']. '" shopId="'. edd_get_option( 'ya_shop_id', false ). '"/>';

edd_update_payment_status( $payment_id, 'completed' );
}
exit;
}
}

// Регистрация шлюза Яндекс Кассы для Easy Digital Download
add_filter( 'edd_payment_gateways', 'sh_edd_register_gateway' );

function sh_edd_register_gateway( $gateways ) {
$gateways['yandex'] = array( 'admin_label' => 'Yandex Kassa', 'checkout_label' => __( 'Yandex Kassa', 'sh_edd' ) );
return $gateways;
}

add_action( 'edd_yandex_cc_form', '__return_false' );

// Добавляем настройки платёжного шлюза Яндекс Кассы для Easy Digital Download
add_filter( 'edd_settings_gateways', 'sh_edd_add_settings' );

function sh_edd_add_settings( $settings ) {
$yandex_gateway_settings = array(
array(
'id' => 'yandex_gateway_settings',
'name' => '<strong>'. __( 'Yandex.Kassa Settings', 'sh_edd' ). '</strong>',
'desc' => __( 'Configure the gateway settings', 'sh_edd' ),
'type' => 'header'
),
array(
'id' => 'ya_shop_id',
'name' => __( 'Shop ID' ),
'desc' => __( 'Введите Shop ID от Яндекс Кассы' ),
'type' => 'text',
'size' => 'regular'
),
array(
'id' => 'ya_scid',
'name' => __( 'SCID' ),
'desc' => __( 'Введите SCID от Яндекс Кассы' ),
'type' => 'text',
'size' => 'regular'
)
);

return array_merge( $settings, $yandex_gateway_settings );
}

// Платёж Яндекс Кассы
add_action( 'edd_gateway_yandex', 'gateway_function_to_process_payment' );

function gateway_function_to_process_payment( $purchase_data ) {
// Можно раскомментировать и посмотреть, как идут платежи
// var_dump( edd_is_test_mode() );

if ( edd_is_test_mode() ) {
$yandex_redirect = 'https://demomoney.yandex.ru/eshop.xml?';
} else {
$yandex_redirect = 'https://money.yandex.ru/eshop.xml?';
}

$purchase_summary = edd_get_purchase_summary( $purchase_data );

$payment_data = array(
'price' => $purchase_data['price'],
'date' => $purchase_data['date'],
'user_email' => $purchase_data['user_email'],
'purchase_key' => $purchase_data['purchase_key'],
'currency' => edd_get_currency(),
'downloads' => $purchase_data['downloads'],
'cart_details' => $purchase_data['cart_details'],
'user_info' => $purchase_data['user_info'],
'status' => 'pending'
);

// Record the pending payment
$payment = edd_insert_payment( $payment_data );

// Setup Yandex.Kassa arguments
$yandex_args = array(
'ShopID' => edd_get_option( 'ya_shop_id', false ),
'scid' => edd_get_option( 'ya_scid', false ),
'cps_email' => $purchase_data['user_email'],
'Sum' => $purchase_data['price'],
'orderNumber' => $payment,
'CustName' => $purchase_data['user_info']['first_name'],
'paymentType' => 'AC'
);

$yandex_redirect .= http_build_query( $yandex_args );
wp_redirect( $yandex_redirect );
}


Код выше копируете в новый файл с кодировкой UTF-8
Cохраняете этот файл в /wp-content/mu-plugins/ (если каталог не существует, создаёте)
Либо сохраняете его в каталоге со стандартными плагинами /wp-content/plugins/, но тогда нужно будет активировать новый плагин
В панели админа WordPress переходите в Настройки — Постоянные ссылки и, ничего не меняя на странице, Сохранить
Настройка Easy Digital Downloads
Теперь, нужно настроить параметры Яндекс Кассы в плагине Easy Digital Downloads. Для этого, в настройках находите вкладку Способы оплаты (http://example.com/wp-admin/edit.php?post_type=download&page=edd-settings&tab=gateways):

Изображение

Проставляете галочки, как на скриншоте, вносите Shop ID и SCID, полученные от Яндекс Кассы, и тестируете платежи.
Когда всё протестировано, снимаете галочку с Тестовый режим и принимаете реальные платежи.

19:41
[addon]1043[/addon]
Реклама
|
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.