Разработка платежныхмодулей для Drupal Commerce  и сравнение с Ubercart 3.x
Виды оплат1. С уходом на сторонний сервис - webmoney - paypal2. Не покидая сайта продавца - внутренняя валюта (points) - н...
Хуки регистрации платежных методов                       UBERCARThook_payment_method(){$methods[] = array(  id => check, /...
Хуки регистрации платежных методов               Drupal Commercehook_commerce_payment_method_info(){return array(mypayment...
Настройки платежных методов                          UBERCARTcallback => uc_payment_method_checkfunction uc_payment_method...
Настройки платежных методов                        Drupal Commercehook_settings_form();function mypaymentmethod_settings_f...
Обработка данных при выборе методаfunction mypaymentsmethod_submit_form($payment_method, $pane_values,$checkout_pane, $ord...
Обработка данных при выборе метода                      UBERCARTcallback => uc_payment_method_checkfunction uc_payment_met...
Обработка данных при выборе метода                         Drupal Commercehook_submit_form_validate();function mypaymentme...
Обработка данных при выборе метода                      UBERCARTcallback => uc_payment_method_checkfunction uc_payment_met...
Если не нужно на сайт платёжной системы             UBERCART :( :( :(function uc_rbkmoney_form_alter(&$form, &$form_state,...
Если не нужно на сайт платёжной системы                Drupal Commercefunction mypaymentmethod_submit_form_submit($payment...
Если нужно на сайт платёжной системы             UBERCART :( :( :(function mypaymentmethod_form_alter(&$form, &$form_state...
Если нужно на сайт платёжной системы              Drupal Commercefunction mypaymentmethod_redirect_form($form, &$form_stat...
Если нужно на сайт платёжной системы             Drupal CommerceВернулись на страницу checkout/[order_id]/payment/return/[...
Если нужно на сайт платёжной системы             Drupal Commercefunction mypaymentmethod_redirect_form_submit($order, $pay...
Спасибо за вниманиеКонтакты:+38 066 048-84-85+38 093 146-92-72Skype: yurigluE-mail: yury.glushkov@ardas.dp.uaardas.dp.ua
Upcoming SlideShare
Loading in...5
×

Create payment systems for Drupal Commerce

1,189

Published on

Published in: Self Improvement
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,189
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Create payment systems for Drupal Commerce

  1. 1. Разработка платежныхмодулей для Drupal Commerce и сравнение с Ubercart 3.x
  2. 2. Виды оплат1. С уходом на сторонний сервис - webmoney - paypal2. Не покидая сайта продавца - внутренняя валюта (points) - наличные в офисе - чеки и т.д.
  3. 3. Хуки регистрации платежных методов UBERCARThook_payment_method(){$methods[] = array( id => check, //машинное имя метода name => t(Check), // общедоступное название title => t(Check or Money Order), // тайтл собственно desc => t(Pay by mailing a check or money order.), callback => uc_payment_method_check, // ф-ция weight => 1, // вес checkout => TRUE, //отображать или нет в процессе);return $methods;
  4. 4. Хуки регистрации платежных методов Drupal Commercehook_commerce_payment_method_info(){return array(mypaymentmethod => array( // машинное имя способа оплаты. title => t(My Payment Method), // Название способа оплаты для админки. display_title => t(My Payment Method), // для отображения в форме чекаута. description => t(Example of Payment Method), // Описание способа оплаты. active => TRUE, // Состояние способа оплаты: по умолчанию TRUE terminal => TRUE, // может ли администратор самостоятельно добавить этот способ оплаты для завершённого заказа. По умолчанию TRUE. offsite => FALSE, // Нужно ли покупателю покидать пределы сайта при оплате заказа этим способом. offsite_autoredirect => FALSE, // Автоматический редирект на сторонний сайт при оплате заказа этим способом ),);}
  5. 5. Настройки платежных методов UBERCARTcallback => uc_payment_method_checkfunction uc_payment_method_check($op, &$order, &$form, &$form_state){ switch ($op) { case cart-details: // настройки для выбора (например select) case cart-process: // обработка данных для метода case settings: // настройки для платежного метода return $form; case order-view: // отображение на ордере }}
  6. 6. Настройки платежных методов Drupal Commercehook_settings_form();function mypaymentmethod_settings_form($settings){ $form = array(); // набор значений необходимых для формирования данных return $form;}
  7. 7. Обработка данных при выборе методаfunction mypaymentsmethod_submit_form($payment_method, $pane_values,$checkout_pane, $order) { $form = array(); if(!empty($order->data[mypaymentsmethod])) { $pane_values += $order->data[mypaymentsmethod]; } $pane_values += array( user_purse => , ); $form[user_purse] = array( #type => textfield, #title => t(Purse), #description => t(Enter your purse), #default_value => $pane_values[user_purse], #required => TRUE, ); return $form;}
  8. 8. Обработка данных при выборе метода UBERCARTcallback => uc_payment_method_checkfunction uc_payment_method_check($op, &$order, &$form, &$form_state){ switch ($op) { case cart-details: // настройки для выбора (например select) }}
  9. 9. Обработка данных при выборе метода Drupal Commercehook_submit_form_validate();function mypaymentmethod_submit_form_validate($payment_method,$pane_form, $pane_values, $order, $form_parents = array()){ // набор действий необходимых для проверки введенных данных return FALSE;}
  10. 10. Обработка данных при выборе метода UBERCARTcallback => uc_payment_method_checkfunction uc_payment_method_check($op, &$order, &$form, &$form_state){ switch ($op) { case cart-process: // обработка данных для метода }}
  11. 11. Если не нужно на сайт платёжной системы UBERCART :( :( :(function uc_rbkmoney_form_alter(&$form, &$form_state, $form_id) { $order_id = isset($_SESSION[cart_order]) ? intval($_SESSION[cart_order]) : 0; if ($form_id == uc_cart_checkout_review_form && $order_id > 0) { $order = uc_order_load($order_id); if ($order->payment_method == rbkmoney) { unset($form[actions][submit]); $form[#prefix] = <table><tr><td>; $form[#suffix] = </td><td> . drupal_render(drupal_get_form(uc_rbkmoney_submit_form, $order)) . </td></tr></table>; } }}
  12. 12. Если не нужно на сайт платёжной системы Drupal Commercefunction mypaymentmethod_submit_form_submit($payment_method, $pane_form, $pane_values, $order, $charge) { $order->data[mypaymentmethod] = $pane_values; // Создаём транзакцию $transaction = commerce_payment_transaction_new(mypaymentmethod, $order->order_id); $transaction->instance_id = $payment_method[instance_id]; $transaction->amount = $charge[amount]; $transaction->currency_code = $charge[currency_code]; $transaction->status = COMMERCE_PAYMENT_STATUS_SUCCESS; $transaction->message = t(The payment has completed.); commerce_payment_transaction_save($transaction);}
  13. 13. Если нужно на сайт платёжной системы UBERCART :( :( :(function mypaymentmethod_form_alter(&$form, &$form_state, $form_id) { drupal_render(drupal_get_form());}Redirect → на сайт платежной системыhook_menu() { //регистрируем url на который придет ответ от мерчанта}- возврат к оплате если FALSE- завершение оплаты если TRUE
  14. 14. Если нужно на сайт платёжной системы Drupal Commercefunction mypaymentmethod_redirect_form($form, &$form_state, $order, $payment_method) { $order_wrapper = entity_metadata_wrapper(commerce_order, $order); $form[#action] = https://example.com/payment; // Адрес шлюза $form[amount] = array( #type => hidden, #value => $order_wrapper->commerce_order_total->amount->value(), ); $form[redirect_uri] = array( #type => hidden, #value => url()); $form[error_uri] = array(#type => hidden, #value => url()); $form[submit] = array(#type => submit, #value => t(Pay)); return $form;}
  15. 15. Если нужно на сайт платёжной системы Drupal CommerceВернулись на страницу checkout/[order_id]/payment/return/[key]function mypaymentmethod_redirect_form_validate($order, $payment_method) { if (/* ... */) { return TRUE; // будет вызван callback PAYMENTNAME_redirect_form_submit() } else { return FALSE; // покупатель возвратится на шаг назад в форме чекаута }}
  16. 16. Если нужно на сайт платёжной системы Drupal Commercefunction mypaymentmethod_redirect_form_submit($order, $payment_method) { $order_wrapper = entity_metadata_wrapper(commerce_order, $order); // Создаём транзакцию $transaction = commerce_payment_transaction_new(mypaymentmethod, $order->order_id); $transaction->instance_id = $payment_method[instance_id]; $transaction->amount = $order_wrapper->commerce_order_total->amount- >value(); $transaction->currency_code = $order_wrapper->commerce_order_total- >currency_code->value(); $transaction->status = COMMERCE_PAYMENT_STATUS_SUCCESS; $transaction->message = t(The payment has completed.); commerce_payment_transaction_save($transaction);}
  17. 17. Спасибо за вниманиеКонтакты:+38 066 048-84-85+38 093 146-92-72Skype: yurigluE-mail: yury.glushkov@ardas.dp.uaardas.dp.ua
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×