Привет всем знатокам 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($_POST, SORT_STRING);
array_push($_POST, variable_get('interkassa_secret', ''));
$signString = implode(':', $_POST);
$sign = base64_encode(md5($signString, true));
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;
}
?>
Комментарии
Так прикрепите модуль