forked from jason-footing-cko/checkout-zencart-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
checkoutapipayment_webhook.php
118 lines (93 loc) · 4.1 KB
/
checkoutapipayment_webhook.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
require('includes/application_top.php');
if (defined('MODULE_PAYMENT_CHECKOUTAPIPAYMENT_STATUS') && MODULE_PAYMENT_CHECKOUTAPIPAYMENT_STATUS == 'True') {
function _process ()
{
$config['chargeId'] = $_GET['chargeId'];
$config['authorization'] = MODULE_PAYMENT_CHECKOUTAPIPAYMENT_SECRET_KEY;
$Api = CheckoutApi_Api::getApi(array('mode'=>MODULE_PAYMENT_CHECKOUTAPIPAYMENT_TRANSACTION_SERVER));
$respondBody = $Api->getCharge($config);
$json = $respondBody->getRawOutput();
return $json;
}
function order_statuses() {
global $db;
$statuses = $db->Execute("select orders_status_id, orders_status_name
from " . TABLE_ORDERS_STATUS . "
where language_id = '" . (int)$_SESSION['languages_id'] . "'
order by orders_status_id");
while (!$statuses->EOF) {
$statuses_array[$statuses->fields['orders_status_id']] = array('id' => $statuses->fields['orders_status_id'],
'text' => $statuses->fields['orders_status_name'] . ' [' . $statuses->fields['orders_status_id'] . ']');
$statuses->MoveNext();
}
return $statuses_array;
}
require(DIR_WS_CLASSES . 'payment.php');
$checkoutapipayment_module = 'checkoutapipayment';
$payment_modules = new payment( $checkoutapipayment_module );
if(isset($_GET['chargeId'])){
$stringCharge = _process();
}else {
$stringCharge = file_get_contents("php://input");
}
if($stringCharge) {
$Api = CheckoutApi_Api::getApi(array('mode'=>MODULE_PAYMENT_CHECKOUTAPIPAYMENT_TRANSACTION_SERVER));
$objectCharge = $Api->chargeToObj($stringCharge);
$orderId = $objectCharge->getTrackId();
if($orderId) {
require(DIR_WS_CLASSES . 'order.php');
$order = new order($orderId);
$orderStatuses = order_statuses();
if($order) {
if($objectCharge->getCaptured() ) {
if($order->info['orders_status'] !=2) {
echo "Order has #$orderId was set complete";
$sql = "UPDATE " . TABLE_ORDERS . "
SET orders_status = " . (int)2 . "
WHERE orders_id = '" . (int)$orderId . "'";
$db->Execute($sql);
$sql_data_array = array('orders_id' => (int)$orderId,
'orders_status_id' => 2,
'date_added' => 'now()',
'comments' => ' Update Checkout.com from Webhook. Status: '
. $orderStatuses[2] ,
'customer_notified' => 0
);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
}else {
echo "Order has #$orderId was already set complete";
}
} elseif($objectCharge->getRefunded()) {
$sql = "UPDATE " . TABLE_ORDERS . "
SET orders_status = " . (int)1 . "
WHERE orders_id = '" . (int)$orderId . "'";
$db->Execute($sql);
$sql_data_array = array('orders_id' => (int)$orderId,
'orders_status_id' => 1,
'date_added' => 'now()',
'comments' => ' Update Checkout.com from Webhook. Status: ('
. $orderStatuses[2] .')',
'customer_notified' => 0
);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
echo "Order has #$orderId was set cancel (pending)";
} elseif(!$objectCharge->getAuthorised()) {
$sql = "UPDATE " . TABLE_ORDERS . "
SET orders_status = " . (int)1 . "
WHERE orders_id = '" . (int)$orderId . "'";
$db->Execute($sql);
$sql_data_array = array('orders_id' => (int)$orderId,
'orders_status_id' => 1,
'date_added' => 'now()',
'comments' => ' Update Checkout.com from Webhook. Status: ('
. $orderStatuses[2] .')',
'customer_notified' => 0
);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
echo "Order has #$orderId was already set cancel (pending)";
}
}
}
}
}