PageRenderTime 54ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/catalog/googlecheckout/inserts/admin/orders1.php

http://google-checkout-oscommerce.googlecode.com/
PHP | 218 lines | 157 code | 22 blank | 39 comment | 76 complexity | c6603b6b8596689427e1c4507198a0b9 MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. /*
  3. Copyright (C) 2008 Google Inc.
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  15. */
  16. /**
  17. * Google Checkout v1.5.0
  18. * $Id: orders1.php 224 2009-03-11 16:31:28Z ed.davisson $
  19. *
  20. * This method is meant to be included in catalog/admin/orders.php.
  21. */
  22. define('GC_STATE_NEW', 100);
  23. define('GC_STATE_PROCESSING', 101);
  24. define('GC_STATE_SHIPPED', 102);
  25. define('GC_STATE_REFUNDED', 103);
  26. define('GC_STATE_SHIPPED_REFUNDED', 104);
  27. define('GC_STATE_CANCELED', 105);
  28. // Execute the cron hook.
  29. require_once(DIR_FS_CATALOG . '/googlecheckout/library/google_cron_hook.php');
  30. $google_cron_hook = new GoogleCronHook();
  31. $google_cron_hook->execute();
  32. function google_checkout_state_change($check_status, $status, $oID,
  33. $cust_notify, $notify_comments) {
  34. global $db, $messageStack, $orders_statuses;
  35. define('API_CALLBACK_ERROR_LOG',
  36. DIR_FS_CATALOG. "/googlecheckout/logs/response_error.log");
  37. define('API_CALLBACK_MESSAGE_LOG',
  38. DIR_FS_CATALOG . "/googlecheckout/logs/response_message.log");
  39. include_once(DIR_FS_CATALOG . '/includes/modules/payment/googlecheckout.php');
  40. include_once(DIR_FS_CATALOG . '/googlecheckout/library/googlerequest.php');
  41. require_once(DIR_FS_CATALOG . '/googlecheckout/library/configuration/google_configuration.php');
  42. require_once(DIR_FS_CATALOG . '/googlecheckout/library/configuration/google_configuration_keys.php');
  43. $config = new GoogleConfigurationKeys();
  44. $googlecheckout = new googlecheckout();
  45. $google_request = new GoogleRequest($googlecheckout->merchantid,
  46. $googlecheckout->merchantkey,
  47. MODULE_PAYMENT_GOOGLECHECKOUT_MODE ==
  48. 'https://sandbox.google.com/checkout/'
  49. ? "sandbox" : "production",
  50. DEFAULT_CURRENCY);
  51. $google_request->SetLogFiles(API_CALLBACK_ERROR_LOG, API_CALLBACK_MESSAGE_LOG);
  52. $google_answer = tep_db_fetch_array(tep_db_query("SELECT go.google_order_number, go.order_amount, o.customers_email_address, gc.buyer_id, o.customers_id
  53. FROM " . $googlecheckout->table_order . " go
  54. inner join " . TABLE_ORDERS . " o on go.orders_id = o.orders_id
  55. inner join " . $googlecheckout->table_name . " gc on gc.customers_id = o.customers_id
  56. WHERE go.orders_id = '" . (int)$oID ."'
  57. group by o.customers_id order by o.orders_id desc"));
  58. $google_order = $google_answer['google_order_number'];
  59. $amount = $google_answer['order_amount'];
  60. // If status update is from Google New -> Google Processing on the Admin UI
  61. // this invokes the processing-order and charge-order commands
  62. // 1->Google New, 2-> Google Processing
  63. if ($check_status['orders_status'] == GC_STATE_NEW
  64. && $status == GC_STATE_PROCESSING && $google_order != '') {
  65. list($curl_status,) = $google_request->SendChargeOrder($google_order, $amount);
  66. if ($curl_status != 200) {
  67. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_CHARGE_ORDER, 'error');
  68. } else {
  69. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_CHARGE_ORDER, 'success');
  70. }
  71. list($curl_status,) = $google_request->SendProcessOrder($google_order);
  72. if ($curl_status != 200) {
  73. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_PROCESS_ORDER, 'error');
  74. } else {
  75. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_PROCESS_ORDER, 'success');
  76. }
  77. }
  78. // If status update is from Google Processing or Google Refunded -> Google Shipped on the Admin UI
  79. // this invokes the deliver-order and archive-order commands
  80. // 2->Google Processing or Google Refunded, 3-> Google Shipped (refunded)
  81. else if (($check_status['orders_status'] == GC_STATE_PROCESSING
  82. || $check_status['orders_status'] == GC_STATE_REFUNDED)
  83. && ($status == GC_STATE_SHIPPED || $status == GC_STATE_SHIPPED_REFUNDED)
  84. && $google_order != '') {
  85. $carrier = $tracking_no = "";
  86. // Add tracking Data
  87. if (isset($_POST['carrier_select']) && ($_POST['carrier_select'] != 'select')
  88. && isset($_POST['tracking_number']) && !empty($_POST['tracking_number'])) {
  89. $carrier = $_POST['carrier_select'];
  90. $tracking_no = $_POST['tracking_number'];
  91. $comments = GOOGLECHECKOUT_STATE_STRING_TRACKING ."\n" .
  92. GOOGLECHECKOUT_STATE_STRING_TRACKING_CARRIER . $_POST['carrier_select'] ."\n" .
  93. GOOGLECHECKOUT_STATE_STRING_TRACKING_NUMBER . $_POST['tracking_number'] . "";
  94. tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . "
  95. (orders_id, orders_status_id, date_added, customer_notified, comments)
  96. values ('" . (int)$oID . "',
  97. '" . tep_db_input(($check_status['orders_status']==GC_STATE_REFUNDED
  98. ?GC_STATE_SHIPPED_REFUNDED:GC_STATE_SHIPPED)) . "',
  99. now(),
  100. '" . tep_db_input($cust_notify) . "',
  101. '" . tep_db_input($comments) . "')");
  102. }
  103. list($curl_status,) = $google_request->SendDeliverOrder($google_order, $carrier,
  104. $tracking_no, ($cust_notify==1)?"true":"false");
  105. if ($curl_status != 200) {
  106. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_DELIVER_ORDER, 'error');
  107. } else {
  108. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_DELIVER_ORDER, 'success');
  109. }
  110. list($curl_status,) = $google_request->SendArchiveOrder($google_order);
  111. if ($curl_status != 200) {
  112. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_ARCHIVE_ORDER, 'error');
  113. } else {
  114. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_ARCHIVE_ORDER, 'success');
  115. }
  116. }
  117. // If status update is to Google Canceled on the Admin UI
  118. // this invokes the cancel-order and archive-order commands
  119. else if ($check_status['orders_status'] != GC_STATE_CANCELED
  120. && $status == GC_STATE_CANCELED && $google_order != '') {
  121. if ($check_status['orders_status'] != GC_STATE_NEW){
  122. list($curl_status,) = $google_request->SendRefundOrder(
  123. $google_order, 0, GOOGLECHECKOUT_STATE_STRING_ORDER_CANCELED);
  124. if ($curl_status != 200) {
  125. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_REFUND_ORDER, 'error');
  126. } else {
  127. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_REFUND_ORDER, 'success');
  128. }
  129. } else {
  130. // Tell google witch is the OSC's internal order Number
  131. list($curl_status,) = $google_request->SendMerchantOrderNumber($google_order, $oID);
  132. if ($curl_status != 200) {
  133. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_MERCHANT_ORDER_NUMBER, 'error');
  134. } else {
  135. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_MERCHANT_ORDER_NUMBER, 'success');
  136. }
  137. }
  138. // Is the order is not archive, I do it
  139. if ($check_status['orders_status'] != GC_STATE_SHIPPED
  140. && $check_status['orders_status'] != GC_STATE_SHIPPED_REFUNDED){
  141. list($curl_status,) = $google_request->SendArchiveOrder($google_order);
  142. if ($curl_status != 200) {
  143. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_ARCHIVE_ORDER, 'error');
  144. } else {
  145. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_ARCHIVE_ORDER, 'success');
  146. }
  147. }
  148. // Cancel the order
  149. list($curl_status,) = $google_request->SendCancelOrder(
  150. $google_order, GOOGLECHECKOUT_STATE_STRING_ORDER_CANCELED, $notify_comments);
  151. if ($curl_status != 200) {
  152. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_CANCEL_ORDER, 'error');
  153. } else {
  154. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_CANCEL_ORDER, 'success');
  155. }
  156. } else if ($google_order != '' && $check_status['orders_status'] != $status) {
  157. $statuses = array();
  158. foreach ($orders_statuses as $status_array) {
  159. $statuses[$status_array['id']] = $status_array['text'];
  160. }
  161. $messageStack->add_session(sprintf(GOOGLECHECKOUT_ERR_INVALID_STATE_TRANSITION,
  162. $statuses[$check_status['orders_status']],
  163. $statuses[$status],
  164. $statuses[$check_status['orders_status']]),
  165. 'error');
  166. }
  167. // Send Buyer's message
  168. if ($cust_notify == 1 && isset($notify_comments) && !empty($notify_comments)) {
  169. $cust_notify_ok = '0';
  170. $use_cart_messaging = (gc_get_configuration_value($config->useCartMessaging()) == 'True');
  171. if (!((strlen(htmlentities(strip_tags($notify_comments))) > GOOGLE_MESSAGE_LENGTH)
  172. && $use_cart_messaging)) {
  173. list($curl_status,) = $google_request->sendBuyerMessage(
  174. $google_order, $notify_comments, "true");
  175. if ($curl_status != 200) {
  176. $messageStack->add_session(GOOGLECHECKOUT_ERR_SEND_MESSAGE_ORDER, 'error');
  177. $cust_notify_ok = '0';
  178. } else {
  179. $messageStack->add_session(GOOGLECHECKOUT_SUCCESS_SEND_MESSAGE_ORDER, 'success');
  180. $cust_notify_ok = '1';
  181. }
  182. if (strlen(htmlentities(strip_tags($notify_comments))) > GOOGLE_MESSAGE_LENGTH) {
  183. $messageStack->add_session(
  184. sprintf(GOOGLECHECKOUT_WARNING_CHUNK_MESSAGE, GOOGLE_MESSAGE_LENGTH), 'warning');
  185. }
  186. }
  187. // Cust notified
  188. return $cust_notify_ok;
  189. }
  190. // Cust notified
  191. return '0';
  192. }
  193. ?>