Sheensay → WordPress → Как подключить Яндекс Кассу к Easy Digital Downloads

Как подключить Яндекс Кассу к Easy Digital Downloads

12.11.2017

  • Про Easy Digital Downloads
  • Подключение к Yandex Kassa
  • Установка плагина Yandex Kassa к Easy Digital Downloads
  • Настройка Easy Digital Downloads

Про Easy Digital Downloads

Easy Digital Download — это довольно удобный плагин для WordPress, который позволяет создать на сайте магазин по продаже цифровых товаров. По сути, является узконаправленным аналогом WooCommerce.

Скачать плагин Easy Digital Downloads из официального репозитория WordPress.org

В магазине, который получится при установке этого плагина, есть возможность оплаты онлайн. По умолчанию, есть следующие варианты:

  • Paypal
  • Amazon

Как видите, плагин ориентирован, в основном, на западную публику. А для России и СНГ будет удобно подключить Яндекс Кассу для приёма платежей традиционными для нас способами:

  • Банковские карты
  • Яндекс.Деньги
  • Сбербанк Онлайн
  • Webmoney
  • Qiwi
  • С баланса телефона: МТС, Билайн, Мегафон, Tele2
  • и так далее

Подключение к Yandex Kassa

Вся процедура — это зайти на главную Яндекс Кассы — Подключить кассу
Подключение к Яндекс Кассе

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

Адреса, на которые будет обращаться Яндекс к сайту при проведении платежей (example.com заменяете на свой домен):

  • checkURL: http://example.com/kassa-check
  • Aviso: http://example.com/kassa-aviso
  • Платёж успешно прошёл: http://example.com/kassa-success
  • Платёж не прошёл: http://example.com/kassa-fail

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

Код плагина:

<?php

/**
 *
 * Plugin Name:  Easy Digital Download Yandex Kassa
 * Plugin URI: https://sheensay.ru/?p=3691
 * Description:  Яндекс Касса для Easy Digital Downloads. Ярлыки для адресов: kassa-check, kassa-aviso, kassa-success, kassa-fail
 * Version:      1.0.0
 * Author: Sheens
 * Author URI: https://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 );
}
  1. Код выше копируете в новый файл с кодировкой UTF-8
  2. Cохраняете этот файл в /wp-content/mu-plugins/ (если каталог не существует, создаёте)
  3. Либо сохраняете его в каталоге со стандартными плагинами /wp-content/plugins/, но тогда нужно будет активировать новый плагин
  4. В панели админа WordPress переходите в Настройки — Постоянные ссылки и, ничего не меняя на странице, Сохранить

Настройка Easy Digital Downloads

Теперь, нужно настроить параметры Яндекс Кассы в плагине Easy Digital Downloads. Для этого, в настройках находите вкладку Способы оплаты (http://example.com/wp-admin/edit.php?post_type=download&page=edd-settings&tab=gateways):
Настройка параметров Яндекс Кассы в Easy Digital Downloads
Проставляете галочки, как на скриншоте, вносите Shop ID и SCID, полученные от Яндекс Кассы, и тестируете платежи.
Когда всё протестировано, снимаете галочку с Тестовый режим и принимаете реальные платежи.



Так себеНеплохоНормальноХорошоОтлично (1 оценок, в среднем: 5,00 из 5)
Загрузка...


  • Как добавить сайт в Яндекс Дзен
  • Как установить Tor в Debian Ubuntu и настроить работу php через прокси Tor
  • Вебмастер Яндекс — Оригинальные Тексты и WordPress
  • РСЯ — контекстная реклама Яндекса на сайте
  • Репостинг на страницу Facebook из WordPress

WordPress

Свежие записи

  • Как установить Tor в Debian Ubuntu и настроить работу php через прокси Tor
  • Как вернуть старый редактор после обновления WordPress 5.0 Gutenberg
  • Monit — как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM
  • Резервные копии WordPress — UpdraftPlus WordPress Backup Plugin
  • Репостинг на страницу Facebook из WordPress

Свежие записи

  • Как установить Tor в Debian Ubuntu и настроить работу php через прокси Tor
  • Как вернуть старый редактор после обновления WordPress 5.0 Gutenberg
  • Monit — как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM
  • Резервные копии WordPress — UpdraftPlus WordPress Backup Plugin
  • Репостинг на страницу Facebook из WordPress

Свежие комментарии

  • Sheens к записи Как добавить сайт в Яндекс Дзен
  • Olga Sharzhanova к записи Как добавить сайт в Яндекс Дзен
  • Sheens к записи Как добавить сайт в Яндекс Дзен
  • Арт к записи Как добавить сайт в Яндекс Дзен
  • Sheens к записи Как добавить сайт в Яндекс Дзен
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

· Copyright © 2019 · О ·