Про 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 ); }
- Код выше копируете в новый файл с кодировкой 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, полученные от Яндекс Кассы, и тестируете платежи.
Когда всё протестировано, снимаете галочку с Тестовый режим
и принимаете реальные платежи.
Свежие комментарии