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');
?>