Easy Digital Downloads добавить данные пользователя в платежный шлюз Яндекс.Деньги

Редактирую старый плагин платежного шлюза Яндекс.Деньги для Easy Digital Downloads под новые задачи и появился вопрос: - Как мне добавить данные из профиля продавца (shop_vendor) в платежный шлюз?

<?php
/**
 * Plugin Name: Easy Digital Downloads Yadengi Gateway
 * Description: Добавляет возможность принимать платежи Яденьги в плагин Easy Digital Downloads
 * Author: Yuri Abramenkov aka Joys | Благодарности принимаются < a href=http://foxclub.ru/donate.php>тут </a> | Вопросы и пожелания <a href=mailto:[email protected]>[email protected] </a>
 * Version: 1.1.2
 * Text Domain: edd
 * Domain Path: languages
 *

 */
 
function edd_listen_for_yadengi() {
    global $edd_options;
    if( isset( $_GET['edd-listener'] ) && $_GET['edd-listener'] == 'yadengi' && $_GET['type'] == 'success' )
    {
        
        do_action( 'edd_success_yadengi' );
    }
    else if( isset( $_GET['edd-listener'] ) && $_GET['edd-listener'] == 'yadengi' && $_GET['type'] == 'fail' )
    {
        do_action( 'edd_fail_yadengi' );
    }
    else if( isset( $_GET['edd-listener'] ) && $_GET['edd-listener'] == 'yadengi' )
    {
        do_action( 'edd_verify_yadengi' );
    }
}
add_action( 'init', 'edd_listen_for_yadengi' );


function edd_process_yadengi() {
    global $edd_options;
    
    $mrh_url = $edd_options['yadengi_url'];
    
    $payment_id = $_POST['label'];
    $notification_type=$_POST['notification_type'];
    $operation_id=$_POST['operation_id'];
    $amount=$_POST['amount'];
    $datetime=$_POST['datetime'];
    $sender=$_POST['sender'];
    $codepro=$_POST['codepro'];
    $notification_secret=$edd_options['yadengi_secret'];

    
    // retrieve the meta info for this payment
    $payment_meta = get_post_meta( $payment_id, '_edd_payment_meta', true );
    
    $yadengi_amount = $_POST['withdraw_amount'];
    
    $payment_amount = edd_get_payment_amount( $payment_id );

    if( $yadengi_amount != $payment_amount )
    {
        exit();
    }
    if ($codepro=='true') exit();
    
    $crc = $_POST["sha1_hash"];

    // HTTP parameters: $out_summ, $inv_id, $crc
    $crc = strtoupper($crc);

    // build own CRC
    $my_crc = strtoupper(sha1("$notification_type&$operation_id&$amount&643&$datetime&$sender&$codepro&$notification_secret&$payment_id"));

    if (strtoupper($my_crc) != strtoupper($crc))
    {
        echo "bad sign\n";
        exit();
    }
    
    edd_update_payment_status($payment_id, 'complete');
    
    // print OK signature
    echo "OK$payment_id\n";
    exit();
}
add_action( 'edd_verify_yadengi', 'edd_process_yadengi' );


function edd_successlink_yadengi() {
    global $edd_options;
    
    $return_url = add_query_arg( 'payment-confirmation', 'yadengi', get_permalink( $edd_options['success_page'] ) );
    
    // Redirect
    wp_redirect( $return_url );
    exit;
}
add_action( 'edd_success_yadengi', 'edd_successlink_yadengi' );

function edd_faillink_yadengi() {
    global $edd_options;
    
    $return_url = add_query_arg( 'payment-confirmation', 'yadengi', get_permalink( $edd_options['failure_page'] ) );
    
    // Redirect
    wp_redirect( $return_url );
    exit;
}
add_action( 'edd_fail_yadengi', 'edd_faillink_yadengi' );

// adds the settings to the Payment Gateways section
function pw_edd_yadengi_settings($settings) {
 
    $yadengi_gateway_settings = array(
        'yadengi' => array(
                    'id' => 'yadengi',
                    'name' => '<strong>' . __( 'Настройки шлюза ЯДеньги', 'edd' ) . '</strong>',
                    'desc' => __( 'Configure the Yadengi settings', 'edd' ),
                    'type' => 'header'
                ),
                
                'yadengi_login' => array(
                    'id' => 'yadengi_login',
                    'name' => __( 'Кошелек Яденьги', 'edd' ),
                    'desc' => __( 'Номер Вашего кошелька ЯДеньги. На него будут перечисляться платежи. И именно для него надо настроить HTTP уведомления Яндеса https://money.yandex.ru/myservices/online.xml', 'edd' ),
                    'type' => 'text',
                    'size' => 'regular'
                ),
                
                'yadengi_secret' => array(
                    'id' => 'yadengi_secret',
                    'name' => __( 'Секретное слово', 'edd' ),
                    'desc' => __( 'Секретное слово, которое вы указали на странице настроек HTTP уведомлений  https://money.yandex.ru/myservices/online.xml <b> Не забудьте там же указать адрес, по которому Яндекс будет слать уведомления<br> http://адрес_вашего_магазина/?edd-listener=yadengi</b>', 'edd' ),
                    'type' => 'text',
                    'size' => 'regular'
                ),
                
                'yadengi_url' => array(
                    'id' => 'yadengi_url',
                    'name' => __( 'URL на стороне Яндекс', 'edd' ),
                    'desc' => __( 'Адрес, по которому будет обрабатываться ваш запрос. Обычно https://money.yandex.ru/quickpay/confirm.xml', 'edd' ),
                    'type' => 'text',
                    'size' => 'regular'
                ),
                    'yadengi_succsess_url' => array(
                    'id' => 'success_url',
                    'name' => __( 'URL успешного платежа', 'edd' ),
                    'desc' => __( 'Адрес на вашей стороне, на который покупатель попадет после успешной оплаты заказа. Если не знаете, то используйте http://Адрес_вашего_магазина/checkout/purchase-confirmation/', 'edd' ),
                    'type' => 'text',
                    'size' => 'regular'
                ),
                    'yadengi_fail_url' => array(
                    'id' => 'fail_url',
                    'name' => __( 'URL неудачного платежа', 'edd' ),
                    'desc' => __( 'Адрес на вашей стороне, на который покупатель попадет после неудачной оплаты. Если не знаете, то используйте http://Адрес_вашего_магазина/checkout/purchase-confirmation/', 'edd' ),
                    'type' => 'text',
                    'size' => 'regular'
                ),
    );
 
    return array_merge($settings, $yadengi_gateway_settings);
}
add_filter('edd_settings_gateways', 'pw_edd_yadengi_settings');

// registers the gateway
function pw_edd_yadengi_register_gateway($gateways) {
    $gateways['yadengi'] = array('admin_label' => 'ЯДеньги', 'checkout_label' => 'ЯДеньги' );
    return $gateways;
}
add_filter('edd_payment_gateways', 'pw_edd_yadengi_register_gateway');

function pw_edd_yadengi_cc_form() {
    // register the action to remove default CC form
   echo "Способ оплаты: <br>
 <input id='pay_pc' name='paymentType' type='radio' value='PC' checked='checked'> <label for='pay_pc' style='display: inline;'><img src=http://art-storona.ru/wp-content/uploads/2015/10/pc.png>ЯДеньги </label>
 <input id='pay_ac' name='paymentType' type='radio' value='AC'> <label for='pay_ac' style='display: inline;'><img src=http://art-storona.ru/wp-content/uploads/2015/10/ac.png>Банковскaя карта </label>";
    return;
}
add_action('edd_yadengi_cc_form', 'pw_edd_yadengi_cc_form');

function gateway_yadengi_process_payment($purchase_data) {
    global $edd_options;
    
    $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_options['currency'],
        'downloads' => $purchase_data['downloads'],
        'user_info' => $purchase_data['user_info'],
        'cart_details' => $purchase_data['cart_details'],
        'status' => 'pending'
    );

    // record the pending payment
    $payment = edd_insert_payment( $payment_data );
    
    if( $payment ) {
        // only send to paypal if the pending payment is created successfully
        $listener_url = trailingslashit( home_url() ).'?edd-listener=yadengi';
        $return_url = add_query_arg( 'payment-confirmation', 'yadengi', get_permalink( $edd_options['success_page'] ) );
        $cart_summary = edd_get_purchase_summary( $purchase_data, false );
    
        // one time payment
        if( edd_is_test_mode() ) {
            
        } else {
            
        }
    
        $mrh_login = $edd_options['yadengi_login'];
         $post_data=$purchase_data['post_data'];
        $mrh_secret = $edd_options['yadengi_secret'];
        $success_url=$edd_options['success_url'];
        $fail_url=$edd_options['fail_url'];
        
        //$yadengi_redirect = 'https://auth.yadengi.ru/Merchant/Index.aspx?';
        $yadengi_redirect = $edd_options['yadengi_url'];

        // generate signature
        $crc  = md5("{$mrh_login}:{$purchase_data['price']}:{$payment}:{$mrh_secret}");
        
        $yadengi_args = array(
            'receiver' => $mrh_login,
            'sum' => $purchase_data['price'],
            'formcomment' => $cart_summary,
            'short-dest'=>$cart_summary,
            'quickpay-form'=> 'small',
            'targets'=>$cart_summary,
            'paymentType'=>$post_data['paymentType'],
            'label'=>$payment,
            'targets'=> "Покупка",
            'need-fio'=>'false',
            'need-email'=>'true',
            'need-phone'=>'false',
            'need-address'=>'false',
            );
        
        
echo 'Please Wait!!!  <form name="formya" action="'.$edd_options['yadengi_url'].'" method="POST">
<input type="hidden" name="receiver" value="'.$mrh_login.'">
<input type="hidden" name="formcomment" value="'.$cart_summary.'">
<input type="hidden" name="short-dest" value="'.$cart_summary.'">
<input type="hidden" name="label" value="'.$payment.'">
<input type="hidden" name="quickpay-form" value="shop">
<input type="hidden" name="targets" value="'.$cart_summary.' по счету '.$payment.'">
<input type="hidden" name="sum" value="'.$purchase_data['price'].'" data-type="number">
<input type="hidden" name="comment" value="">
<input type="hidden" name="need-fio" value="false">
<input type="hidden" name="need-email" value="false">
<input type="hidden" name="need-phone" value="false">
<input type="hidden" name="need-address" value="false">
<input type="hidden" name="successURL" value="'.$success_url.'">
<input type="hidden" name="failURL" value="'.$fail_url.'">  
 <input type="hidden" name="paymentType" value="'.$post_data['paymentType'].'">

</form>
   <script> document.formya.submit();</script>
';
//      $yadengi_redirect .= http_build_query($yadengi_args);
        
        // get rid of cart contents
        edd_empty_cart();


//      wp_redirect( $yadengi_redirect );
        exit;
        
    } else {
        // if errors are present, send the user back to the purchase page so they can be corrected
        edd_send_back_to_checkout( '?payment-mode=' . $purchase_data['post_data']['edd-gateway'] );
    }
}
add_action('edd_gateway_yadengi', 'gateway_yadengi_process_payment');
?>

Ответы (0 шт):