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)
Загрузка...


  • Как добавить сайт в Яндекс Дзен
  • Вебмастер Яндекс — Оригинальные Тексты и WordPress
  • Tor
  • Query Monitor
  • РСЯ — контекстная реклама Яндекса на сайте

WordPress

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

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

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

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

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

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in