Помогите настроить модуль userpoints_payments

Главные вкладки

Аватар пользователя SANGA666 SANGA666 17 июня 2014 в 1:55

Привет всем знатокам Drupal.
У меня возник вопрос. Имеется созданный модуль userpoints_payments который настроен на interkassa. Как и что нужно дописать, добавить в код чтобы так же была оплата и с помощью Pay2Pay?

Просьба не кричать и ругаться, знаю в php мало,но разбираюсь.
Поэтому крикунов прошу мимо))

Если нужен данный модуль или его код, могу запостить.

<?php

function userpoints_payments_menu(){
    
$items['userpoints/payments'] = array(
        
'title' => 'Пополнение счета',
        
'page callback' => 'drupal_get_form',
        
'page arguments' => array('userpoints_payments_form'),
        
'access callback' => 'user_is_logged_in',
        
'type' => MENU_CALLBACK,
        );

    

$items['userpoints/payments/success'] = array(
        
'page callback' => 'userpoints_payments_success',
        
'access callback' => 'user_is_logged_in',
        
'type' => MENU_CALLBACK,
        );

    

$items['userpoints/payments/fail'] = array(
        
'page callback' => 'userpoints_payments_fail',
        
'access callback' => 'user_is_logged_in',
        
'type' => MENU_CALLBACK,
        );

    

$items['userpoints/payments/interaction'] = array(
        
'page callback' => 'userpoints_payments_interaction',
        
'access callback' => true,
        
'type' => MENU_CALLBACK,
        );

    

$items['admin/config/system/userpoints_paygates'] = array(
        
'title' => 'Настройка платежных систем',
        
'page callback' => 'drupal_get_form',
        
'page arguments' => array('userpoints_payments_settings_form'),
        
'access arguments' => array('administer site configuration'), 
        
'type' => MENU_NORMAL_ITEM,
        );

    return 

$items;
}

function 

userpoints_payments_interaction(){

    if(empty(

$_POST['ik_sign'])){
        return;
    }
    
$ik_sign $_POST['ik_sign'];
    unset(
$_POST['ik_sign']); 
    
ksort($_POSTSORT_STRING); 
    
array_push($_POSTvariable_get('interkassa_secret'''));
    
$signString implode(':'$_POST);
    
$sign base64_encode(md5($signStringtrue));

    if (

$_POST['ik_co_id'] != variable_get('shop_id''')
        || 
$_POST['ik_cur'] != variable_get('interkassa_cur''')
        || 
$sign != $ik_sign){
        
        
watchdog('userpoints_payments''Платеж отклонен: '.$_POST['ik_pm_no']);
        return;
    }

    

$params explode('_'$_POST['ik_pm_no']);

    

userpoints_userpointsapi(array(
        
'uid' => $params[0],
        
'points' => $_POST['ik_am']));

    

watchdog('userpoints_payments''Платеж обработан: '.$_POST['ik_pm_no']); 

    return;

    

//drupal_goto('userpoints/payments');
}

function 

userpoints_payments_success(){
    if(
$_POST['ik_inv_st'] == 'success'){
        
drupal_set_message('Счет пополнен.');    
    }    
    
drupal_goto('userpoints/payments');
}

function 

userpoints_payments_fail(){
    if(
$_POST['ik_inv_st'] == 'canceled'){
        
drupal_set_message('Платеж отклонен.');    
    }
    
drupal_goto('userpoints/payments');
}

function 

userpoints_payments_settings_form($form, &$form_state) {

    

$from = array();

    

    

//интеркасса

    

$form['interkassa'] = array(
        
'#type' => 'fieldset',
        
'#title' => 'Интеркасса',
        );

    

$form['interkassa']['shop_id'] = array(
        
'#type' => 'textfield',
        
'#title' => 'ID магазина',
        
'#description' => 'Идентификатор магазина зарегистрированного в системе «INTERKASSA». Узнать его можно в разделе «Настройки магазина».',
        
'#default_value' => variable_get('shop_id'''),
        
'#required' => TRUE,
    );

    

$form['interkassa']['interkassa_secret'] = array(
        
'#type' => 'textfield',
        
'#title' => 'Секретный ключ',
        
'#description' => 'Секретный ключ хранить обязательно в строгой секретности!',
        
'#default_value' => variable_get('interkassa_secret'''),
        
'#required' => TRUE,
    );

    

$form['interkassa']['interkassa_cur'] = array(
        
'#type' => 'textfield',
        
'#title' => 'Валюта платежа',
        
'#description' => 'USD; EUR; UAH',
        
'#default_value' => variable_get('interkassa_cur''USD'),
        
'#required' => TRUE,
    );

    

$form['interkassa']['interkassa_desc'] = array(
        
'#type' => 'textfield',
        
'#title' => 'Описание платежа',
        
'#default_value' => variable_get('interkassa_desc'''),
        
'#required' => FALSE,
    );

    return 

system_settings_form($form); 
}    

function 

userpoints_payments_form_view(){
    return 
render(drupal_get_form('userpoints_payments_form'));
}

function 

userpoints_payments_form($form, &$form_state){
    if (!isset(
$form_state['stage'])) $form_state['stage'] = 'payment';

    switch(

$form_state['stage']){

        case 

'payment':
            return 
userpoints_payments_payment_form($form$form_state);
            break;

        case 

'review':
            return 
userpoints_payments_payment_review_form($form$form_state);
            break;
    }
}

function 

userpoints_payments_setup_paygate_form($form, &$form_state) {

    

$path base_path() . drupal_get_path('module''userpoints_payments');

    

$form['setup_paygate'] = array(
        
'#type' => 'radios',
        
'#title' => 'Выбор способа оплаты',
        
'#options' => array(
            
'interkassa' => 'Интеркасса',
            
'Pay2Pay' => 'Pay2Pay',
            ),
        
'#default_value' => 'interkassa',
        );

    

$form['next'] = array(
        
'#type' => 'submit',
        
'#value' => 'Далее',
        );

    return 

$form;
}

function 

userpoints_payments_payment_form($form, &$form_state){

    

$form['amount'] = array(
        
'#type' => 'textfield',
        
'#title' => 'Сумма пополнения ('variable_get('interkassa_cur''USD').')',
        
'#default_value' => '100',
        );

    

$form['submit'] = array(
        
'#type' => 'submit',
        
'#value' => 'Далее',
        );

    return 

$form;
}

function 

userpoints_payments_payment_review_form($form, &$form_state){

    global 

$user;

    

$form = array(
        
'#method' => 'post',
        
'#action' => 'https://sci.interkassa.com/',
    );

    

$data = array(
        
'ik_co_id' => variable_get('shop_id'''),
        
'ik_am' => $form_state['amount'],
        
'ik_pm_no' => userpoints_payments_get_payment_id(),
        
'ik_cur' => variable_get('interkassa_cur''USD'),
        
'ik_desc' => variable_get('interkassa_desc'''),
    );

    

/*ksort($data, SORT_STRING);
    $data['secret_key'] = variable_get('interkassa_secret', '');
    $signString = implode(':', $data);
    $sign = base64_encode(md5($signString, true));
    $data['ik_sign'] = $sign;
    unset($data['secret_key']);*/

    

foreach ($data as $name => $value) {
        
$form[$name] = array('#type' => 'hidden''#value' => $value);
    }

    

$form['submit'] = array( 
        
'#type' => 'submit',
        
'#prefix' => '<p>Пополнение баланса сайта на '.$form_state['amount']. ' '.variable_get('interkassa_cur''USD').'</p>',
        
'#value' => 'Оплатить',
        );

    return 

$form;
}

function 

userpoints_payments_form_submit($form, &$form_state){

    switch(

$form_state['stage']){
        case 
'setup_paygate':
            
$form_state['payment_type'] = $form_state['values']['setup_paygate'];
            
$form_state['stage'] = 'payment';
            
$form_state['rebuild'] = TRUE;
            break;

        case 

'payment':
            
$form_state['amount'] = $form_state['values']['amount'];
            
$form_state['stage'] = 'review';
            
$form_state['rebuild'] = TRUE;
            break;
    }
}

function 

userpoints_payments_form_validate($form, &$form_state){
    switch(
$form_state['stage']){
        case 
'setup_paygate':
            break;

        case 

'payment':
            if(!
is_numeric($form_state['values']['amount'])){
                
form_set_error('amount''Значение суммы пополнения не должно содержать ничего, кроме числа');
            }
            break;
    }
}

function 

userpoints_payments_get_payment_id(){
    
$pid variable_get('payment_id'0);
    
variable_set('payment_id', ++$pid);
    global 
$user;
    return 
$user->uid.'_'.$pid;
}

?>

Комментарии