Всем доброго дня.
У меня вопрос.
Есть сайт на 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');
Буду рад помощи.