· 7 years ago · Aug 21, 2018, 12:52 AM
1<?php
2add_action( 'wp_enqueue_scripts', 'ya_enqueue_styles' );
3function ya_enqueue_styles() {
4 wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
5}
6
7// add_action('woocommerce_payment_complete', 'send_ninjavan_api');
8// add_action('woocommerce_after_checkout_form', 'send_ninjavan_api');
9//add_action('woocommerce_thankyou', 'send_ninjavan_api'); // TODO: need to change this to the button click
10add_action( 'wp_ajax_send_ninjavan_api', 'send_ninjavan_api' );
11function send_ninjavan_api($id) {
12
13 if ($id == 5301) { // TODO: remove it
14 $strServer = 'sandbox'; // prod or sandbox
15
16 $arrAccessTokenURL = [
17 'sandbox' => 'https://api-sandbox.ninjavan.co/sg/2.0/oauth/access_token',
18 'prod' => 'https://api.ninjavan.co/MY/2.0/oauth/access_token'
19 ];
20
21 $arrOrderURL = [
22 'sandbox' => 'https://api-sandbox.ninjavan.co/sg/4.1/orders',
23 'prod' => 'https://api.ninjavan.co/MY/4.1/orders'
24 ];
25
26 $objOrder = WC()->order_factory->get_order($id);
27 $arrOrderItem = $objOrder->get_items('shipping');
28 $strProductDetail = '';
29 foreach ($arrOrderItem as $objOrderItem) {
30 $strProductDetail = $objOrderItem->get_meta_data()[0]->jsonSerialize()['value'];
31 $strSellerId = $objOrderItem->get_meta_data()[1]->jsonSerialize()['value'];
32 }
33
34 $objVendor = json_decode(file_get_contents('http://jenamalokal.com/wp-json/dokan/v1/stores/'.$strSellerId));
35 // echo print_r($objOrder, true);
36
37 $headers = array(
38 "Content-Type: application/json",
39 "Accept: application/json"
40 );
41
42 // sandbox
43 $client_info = '{
44 "client_id": "8d323246c89b49c79af0cc2f334c9fc9",
45 "client_secret": "5212c4527df449fcb6f7106ba930db61",
46 "grant_type": "client_credentials"
47 }';
48
49 // production
50 /*$client_info = '{
51 "client_id": "b6ab8d02e9734240a0cceb12d04c462f",
52 "client_secret": "9e372a09aa7c452f90d0d389bdb6f2f3",
53 "grant_type": "client_credentials"
54 }';*/
55
56
57 $curl = curl_init();
58
59 curl_setopt_array($curl, array(
60 CURLOPT_RETURNTRANSFER => true,
61 CURLOPT_URL => $arrAccessTokenURL[$strServer],
62 // CURLOPT_URL => 'https://api.ninjavan.co/MY/2.0/oauth/access_token',
63 CURLOPT_POST => true,
64 CURLOPT_POSTFIELDS => $client_info,
65 CURLOPT_HTTPHEADER => $headers
66 ));
67
68 $response = curl_exec($curl);
69 curl_close($curl);
70
71 $oauthToken = JSON_decode($response);
72 $headers[] = "Authorization: Bearer ".$oauthToken->access_token;
73
74 $todayDate = date("Y-m-d");
75
76 $strCustomerName = $objOrder->get_shipping_first_name().' '.$objOrder->get_shipping_last_name();
77 if (strlen($objOrder->get_shipping_company()) > 0)
78 $strCustomerName .= ' ('.$objOrder->get_shipping_company().')';
79
80 $order_data = '{
81 "service_type": "Marketplace",
82 "service_level": "Standard",
83 "requested_tracking_number": "LOKAL-'.$objOrder->get_id().'",
84 "reference": {
85 "merchant_order_number": "'.$objOrder->get_order_number().'"
86 },
87 "from": {
88 "name": "'.$objVendor->store_name.'",
89 "phone_number": "'.$objVendor->phone.'",
90 "email": "'.$objVendor->email.'",
91 "address": {
92 "address1": "'.$objVendor->address->street_1.'",
93 "address2": "'.$objVendor->address->street_2.'",
94 "city": "'.$objVendor->address->city.'",
95 "state": "'.$objVendor->address->state.'",
96 "country": "'.$objVendor->address->country.'",
97 "postcode": "'.$objVendor->address->zip.'"
98 }
99 },
100 "to": {
101 "name": "'.$strCustomerName.'",
102 "phone_number": "'.$objOrder->get_billing_phone().'",
103 "email": "'.$objOrder->get_billing_email().'",
104 "address": {
105 "address1": "'.$objOrder->get_shipping_address_1().'",
106 "address2": "'.$objOrder->get_shipping_address_2().'",
107 "city": "'.$objOrder->get_shipping_city().'",
108 "state": "'.$objOrder->get_shipping_state().'",
109 "country": "'.$objOrder->get_shipping_country().'",
110 "postcode": "'.$objOrder->get_shipping_postcode().'"
111 }
112 },
113 "parcel_job": {
114 "is_pickup_required": true,
115 "pickup_address": {
116 "name": "'.$objVendor->store_name.'",
117 "phone_number": "'.$objVendor->phone.'",
118 "email": "'.$objVendor->email.'",
119 "address": {
120 "address1": "'.$objVendor->address->street_1.'",
121 "address2": "'.$objVendor->address->street_2.'",
122 "city": "'.$objVendor->address->city.'",
123 "state": "'.$objVendor->address->state.'",
124 "country": "'.$objVendor->address->country.'",
125 "postcode": "'.$objVendor->address->zip.'"
126 }
127 },
128 "pickup_address_id": '.$strSellerId.',
129 "pickup_service_type": "Scheduled",
130 "pickup_service_level": "Standard",
131 "pickup_date": "'.$todayDate.'",
132 "pickup_timeslot": {
133 "start_time": "15:00",
134 "end_time": "18:00",
135 "timezone": "Asia/Kuala_Lumpur"
136 },
137 "pickup_instruction": "'.$strProductDetail.'",
138 "delivery_instruction": "'.$objOrder->customer_note.'",
139 "delivery_start_date": "'.$todayDate.'",
140 "delivery_timeslot": {
141 "start_time": "09:00",
142 "end_time": "18:00",
143 "timezone": "Asia/Kuala_Lumpur"
144 },
145 "dimensions": {
146 "weight": 1.0,
147 "size": "L"
148 }
149 },
150 "marketplace": {
151 "seller_id": "'.$strSellerId.'",
152 "seller_company_name":"'.$objVendor->store_name.'"
153 }
154 }';
155
156// echo print_r($order_data, true);
157// return;
158
159 $curl2 = curl_init();
160
161 curl_setopt_array($curl2, array(
162 CURLOPT_RETURNTRANSFER => true,
163 CURLOPT_URL => $arrOrderURL[$strServer],
164 CURLOPT_POST => true,
165 CURLOPT_POSTFIELDS => $order_data,
166 CURLOPT_HTTPHEADER => $headers
167 ));
168
169 $response2 = curl_exec($curl2);
170 curl_close($curl2);
171
172 echo print_r($response2, true);
173 }
174}
175
176add_filter( 'woocommerce_rest_check_permissions', 'my_woocommerce_rest_check_permissions', 90, 4 );
177function my_woocommerce_rest_check_permissions( $permission, $context, $object_id, $post_type ){
178 return true;
179}
180
181add_filter( 'woocommerce_admin_order_actions', 'add_custom_order_status_actions_button', 100, 2 );
182function add_custom_order_status_actions_button( $actions, $order ) {
183 // Display the button for all orders that have a 'processing' status
184 if ( $order->has_status( array( 'processing' ) ) ) {
185
186 $actions['ready'] = array(
187 'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=send_ninjavan_api&order_id=' . dokan_get_prop( $order, 'id' ) ), 'send_ninjavan_api' ),
188 'name' => __( 'Package Ready', 'dokan-lite' ),
189// 'action' => send_ninjavan_api(dokan_get_prop( $order, 'id' )),
190 'action' => 'ready',
191 'icon' => '<i class="fa fa-truck"> </i>'
192 );
193
194 $actions['print'] = array(
195 //'url' => '',
196 'name' => __( 'Print Note', 'dokan-lite' ),
197// 'action' => print_consignment_note(dokan_get_prop( $order, 'id' )),
198 'action' => 'print',
199 'icon' => '<i class="fa fa-print"> </i>'
200 );
201 }
202
203 return $actions;
204}
205
206function print_consignment_note($id) {
207// echo $id;
208}