PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.8
ووسلام – همگام سازی ووکامرس و باسلام v1.10.8
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / includes / Services / Orders / TrackingCodeOrderService.php

TrackingCodeOrderService.php in ووسلام – همگام سازی ووکامرس و باسلام 1.10.8, at includes/Services/Orders/TrackingCodeOrderService.php

122 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SyncBasalam\Services\Orders;
4
5 use SyncBasalam\Config\Endpoints;
6 use SyncBasalam\Services\ApiServiceManager;
7 use SyncBasalam\Utilities\OrderManagerUtilities;
8
9 class TrackingCodeOrderService
10 {
11 public function trackingCodeOnBasalam(int $orderId, string $trackingCode, string $phoneNumber, int $shippingMethod)
12 {
13 if (empty($orderId)) {
14 return [
15 'success' => false,
16 'message' => 'شناسه سفارش نا�
17 عتبر است.',
18 'status_code' => 400,
19 ];
20 }
21
22 if (empty($trackingCode)) {
23 return [
24 'success' => false,
25 'message' => 'لطفاً کد رهگیری را وارد کنید.',
26 'status_code' => 400,
27 ];
28 }
29
30 if (empty($phoneNumber)) {
31 return [
32 'success' => false,
33 'message' => 'لطفاً ش�
34 اره تلفن را وارد کنید.',
35 'status_code' => 400,
36 ];
37 }
38
39 if (empty($shippingMethod)) {
40 return [
41 'success' => false,
42 'message' => 'لطفاً روش ارسال را انتخاب کنید.',
43 'status_code' => 400,
44 ];
45 }
46
47 update_post_meta($orderId, '_basalam_order_tracking_code', $trackingCode);
48
49 $response = $this->sendTrackingCodeToBasalam($orderId, $trackingCode, $phoneNumber, $shippingMethod);
50
51 $statusCode = $response['status_code'];
52 if ($statusCode !== 200 && $statusCode !== 201) {
53
54 $body = $response['body'];
55 $errorMessage = '';
56
57 if (is_array($body)) {
58 if (!empty($body['errors']) && is_array($body['errors'])) {
59 $errorMessage = $body['errors'][0]['message'] ?? '';
60 }
61 } else {
62 $errorMessage = $body;
63 }
64
65 return [
66 'success' => false,
67 'message' => $errorMessage,
68 'status_code' => $statusCode,
69 ];
70 }
71
72 $order = wc_get_order($orderId);
73 if (!$order) {
74 return [
75 'success' => false,
76 'message' => 'سفارش یافت نشد.',
77 'status_code' => 400,
78 ];
79 }
80
81 $order->update_status('bslm-shipping', 'سفارش توسط اد�
82 ین ارسال شد.');
83
84 return [
85 'success' => true,
86 'message' => 'کد رهگیری و ش�
87 اره تلفن با �
88 وفقیت ثبت و ارسال شد.',
89 'status_code' => 200,
90 ];
91 }
92
93 private function sendTrackingCodeToBasalam($orderId, $trackingCode, $phoneNumber, $shippingMethod)
94 {
95 global $wpdb;
96
97 $syncBasalamOrderId = OrderManagerUtilities::getInvoiceId($wpdb, $orderId);
98 if (!$syncBasalamOrderId) {
99 return new \WP_Error('no_invoice_id', 'شناسه فاکتور سفارش یافت نشد.');
100 }
101
102 $apiUrl = Endpoints::ORDER_TRACKING;
103 $body = [
104 'order_id' => $syncBasalamOrderId,
105 'shipping_method' => $shippingMethod,
106 'tracking_code' => $trackingCode,
107 'phone_number' => $phoneNumber,
108 ];
109
110 $apiService = syncBasalamContainer()->get(ApiServiceManager::class);
111
112 try {
113 return $apiService->post($apiUrl, $body);
114 } catch (\Exception $e) {
115 return [
116 'status_code' => 500,
117 'body' => 'خطا در ارسال کد رهگیری: ' . $e->getMessage(),
118 ];
119 }
120 }
121 }
122