Перейти к содержимому


buildcommunity

Регистрация: 05 мар 2015
Не в сети Активность: мая 10 2016 16:08
-----

Мои темы

Wordpress+API+Webmoney

01 апреля 2016 - 10:33

Всем доброго дня.

 

У меня вопрос.

Есть сайт на wordpress на котором установлена тема, что-то наподобие каталога. Тема буржуйская, соответственно прием денег только на буржуйские агрегаторы. Платежные шлюзы импортируются как плагины, плагины с сайта создателя темы. Хотелось бы прикрутить наш webmoney.
Для примера, вот как организована форма формирования платежа через moneybookers:

//1. HOOK INTO THE GATEWAY ARRAY
function wlt_gateway_moneybookers_admin($gateways){
    $nId = count($gateways)+1;
    $gateways[$nId]['name']         = "Moneybookers (Skrill)";
    $gateways[$nId]['logo']         = plugins_url()."/wlt_gateway_moneybookers/img/logo.png";
    $gateways[$nId]['function']     = "wlt_gateway_moneybookers_form";
    $gateways[$nId]['website']      = "https://www.skrill.com";
    $gateways[$nId]['callback']     = "yes";
    //$gateways[$nId]['ownform']        = "yes";
    $gateways[$nId]['fields']       = array(
    '1' => array('name' => 'Enable Gateway', 'type' => 'listbox','fieldname' => $gateways[$nId]['function'],'list' => array('yes'=>'Enable','no'=>'Disable',) ),    
    '2' => array('name' => 'moneybookers Email', 'type' => 'text', 'fieldname' => 'moneybookers_e'), 
    '3' => array('name' => 'Currency Code', 'type' => 'text', 'fieldname' => 'moneybookers_c' , 'default' => 'USD'), 
     
    '4' => array('name' => 'Display Name', 'type' => 'text', 'fieldname' => $gateways[$nId]['function'].'_name', 'default' => 'Pay Now with moneybookers'), 
    );
    $gateways[$nId]['notes']    = "";
    return $gateways;
}
add_action('hook_payments_gateways','wlt_gateway_moneybookers_admin');
 
//2. BUILD THE PAYMENT FORM DATA
function wlt_gateway_moneybookers_form($data=""){
 
    global $wpdb, $userdata;
    
    /* DATA AVAILABLE
   
    $GLOBALS['total']    
    $GLOBALS['subtotal']     
    $GLOBALS['shipping']     
    $GLOBALS['tax']          
    $GLOBALS['discount']     
    $GLOBALS['items']        
    $GLOBALS['orderid']      
    $GLOBALS['description'] 
    
    */
    
$gatewaycode = '<form action="https://www.moneybookers.com/app/payment.pl" method="post" name="gateway_moneybookers">
  <input type="hidden" name="pay_to_email" value="'.get_option('moneybookers_e').'"/>
  <input type="hidden" name="status_url" value="'.$GLOBALS['CORE_THEME']['links']['callback']."?order_id=".$GLOBALS['orderid'].'"/>
  <input type="hidden" name="cancel_url" value="'.$GLOBALS['CORE_THEME']['links']['callback'].'"/> 
  <input type="hidden" name="language" value="EN"/>
  <input type="hidden" name="amount" value="'.$GLOBALS['total'].'"/>
  <input type="hidden" name="currency" value="'.get_option('moneybookers_c').'"/>
  <input type="hidden" name="detail1_description" value="'.$GLOBALS['description'].'"/>
  <input type="hidden" name="transaction_id" value="'.$GLOBALS['orderid'].'"/>
 
  '.MakePayButton('javascript:document.gateway_moneybookers.submit();').' 
</form>';
 
return $gatewaycode;
 
}
 
// 3. HANDLE THE CALLBACK 
function wlt_gateway_moneybookers_callback($orderID){ global $CORE, $userdata;
 
    if(isset($_POST['pay_to_email']) && isset($_POST['transaction_id']) && $_POST['status'] == 2 ){      
         
        core_generic_gateway_callback($_POST['transaction_id'], array('description' =>  '', 'email' => $_POST['pay_from_email'], 'shipping' => 0, 'shipping_label' => "", 'tax' => 0, 'total' => $_POST['amount'] ) );
        
        return "success";   
        
    }else{
        return ""; // LEAVE FOR SYSTEM TO PICK  UP
    }   
}
 
add_action('hook_callback','wlt_gateway_moneybookers_callback');
 
?>

Я перебрал форму под webmoney, но не могу понять как сформировать 3-ю часть - 3. HANDLE THE CALLBACK - отчет об успешном или неудачном завершении операции. С сайта webmoney:

<html> 
<head>
 ... 
</head> 
<body> 
... 
<form method="<метод вызова Success URL>" action="<Success URL>">
  <input type="hidden" name="LMI_PAYMENT_NO" value="1">
  <input type="hidden" name="LMI_SYS_INVS_NO" value="281">
  <input type="hidden" name="LMI_SYS_TRANS_NO" value="558">
  <input type="hidden" name="LMI_SYS_TRANS_DATE" value="20020314 14:01:14">
  <input type="hidden" name="FIELD_1" value="VALUE_1">
  <input type="hidden" name="FIELD_2" value="VALUE_2">
  ... 
</form>
 .. 
</body> 
</html>

Все вроде просто, но как это впихнуть в мой код?
Программист я так себе - самоучка.

Вот еще концовки из других плагинов-агрегаторов:

// 3. HANDLE THE CALLBACK FROM GOOGLE WALLET
function wlt_gateway_adyen_callback($orderID){ global $CORE;
 
    if(isset($_POST['total'])){     
        $PPTPayment->UpdateOrderStatus(5, $orderID);
        return "thankyou";  
    }else{
        return ""; // LEAVE FOR SYSTEM TO PICK  UP
    }   
}
 
add_action('hook_callback','wlt_gateway_adyen_callback');
// 3. HANDLE THE CALLBACK 
function wlt_gateway_coinpayments_callback($orderID){ global $CORE, $userdata;
 
    if(isset($_POST['cartId']) && strlen($_POST['cartId']) > 4 ){        
         
        core_generic_gateway_callback($_POST['cartId'], array('description' =>  $_POST['desc'], 'email' => $userdata->user_email, 'shipping' => 0, 'shipping_label' => $_POST['displayAddress']." \n ".$_POST['countryString']." \n ".$_POST['postcode']." \n ".$_POST['email']." \n Tel:".$_POST['tel'], 'tax' => 0, 'total' => $_GET['authCost'] ) );
        
        return "success";   
        
    }else{
        return ""; // LEAVE FOR SYSTEM TO PICK  UP
    }   
}
 
add_action('hook_callback','wlt_gateway_coinpayments_callback');
// 3. HANDLE THE CALLBACK FROM PAYPAL PRO
function _process_blankform(){ global $CORE, $wpdb, $userdata;
    // PROCESS THE PAYMENT
    if(isset($_POST['payment_gateway_blankform']) && $_POST['pro']['amount'] > 0){  
        
        $email_content = "";
        foreach($_POST['bf'] as $k=>$v){
        $email_content .= $k.": ".$v." <br />"; 
        }
        
        $CORE->SENDEMAIL(get_option('blankform_email'),0,'[IMPORTANT] BLANK PAYMENT FORM',$email_content);
         
        // SUCCESS AND PASS IN DATA
        core_generic_gateway_callback($_POST['blank_order_id'], array('description' =>  $_POST['description'], 'email' => $userdata->user_email, 'shipping' => 0, 'shipping_label' => '', 'tax' => 0, 'total' => $_POST['pro']['amount'] ) );
    
        // REDIRECT USER ON SUCCESSFUL PAYMENT
        header("location:".$GLOBALS['CORE_THEME']['links']['callback']."?status=thankyou");
        exit();
         
    }
}
add_action('init','_process_blankform');

Буду рад помощи.