New Function #144
closed[ADMIN] Scheduler/Callback - delivery tracking (스마트 택배 배송추적)
Description
[Scheduler] delivery tracking
1.cron tab
- 12:00 every day
2.process
1) select target list
DB: st_order
condition:
st_mall.mall_type='online' AND
(
(order_status='OS02' (배송중) AND delivery_invoice_no is NOT empty(NULL))
OR
(order_status='OS30' (교환재배송중) AND redelivery_invoice_no is NOT empty(NULL))
)
2) call tracking request API (each selected target)
a) config properties
a-1) dev
delivery.api.tracking.domain=http://trace-api-dev.sweettracker.net:8102
delivery.api.tracking.tier=testuser
delivery.api.tracking.key=testuser
a-2) prod
delivery.api.tracking.domain=http://trace-api.sweettracker.net/
delivery.api.tracking.tier=
delivery.api.tracking.key=
b) API (refer to attach pdf > 3.3 운송장 추적 요청 API)
b-1) URL: POST {delivery.tracking.domain}/add_invoice
b-2) parameter
- num:
if order_status='OS02', {delivery_invoice_no} (after remove space or "-")
if order_status='OS30', {redelivery_invoice_no} (after remove space or "-")
- code:
if order_status='OS02', {delivery_company_code}
if order_status='OS30', {redelivery_company_code}
- fid :
if order_status='OS02', "OS02:" + {order_no}
if order_status='OS30', "OS30:" + {order_no}
- callback_url: {site.domain}/delivery/tracking_receive
- callback_type: "json"
- tier: {delivery.api.tracking.tier}
- key: {delivery.api.key}
- type: "json"
3) log
a) if API call success
- leave log: level(DEBUG), message: "[Scheduler] DeliveryTracking Request Success: num={num},fid={fid}"
b) if API call fails
- leave log: level(ERROR), message: "[Scheduler] DeliveryTracking Request Fail: num={num},fid={fid},e_code={e_code},e_message={e_message}"
[Callback] delivery tracking
1.API (refer to attach pdf > 3.5 운송장 추적정보 수신API(Callback_URL))
1) URL: POST {site.domain}/delivery/tracking_receive
- permit all
2.process
1) get fid / invoice_no / level parameter
- parse fid and get order_status and order_no (ex: OS02:231108180642UHFS)
- leave log: level(DEBUG), message: "[Scheduler] DeliveryTracking Callback Receive: fid={fid},invoice_no={invoice_no},level={level}"
2) select order
DB: st_order
conditions: order_no={order_no param} AND order_status={order_status param}
3) if no select data, break
4) update order status
4-1) if {order_status param} = 'OS02'
a) if st_oder.delivery_invoice_no = {invoice_no param} and {level param} = 6
- UPDATE st_order
SET order_status='OS03' (배송완료), mod_date={current datetime}
condition: order_no={order_no param}
4-2) if {order_status param} = 'OS30'
a) if st_oder.redelivery_invoice_no = {invoice_no param} and {level param} = 6
- UPDATE st_order
SET order_status='OS31' (교환완료), mod_date={current datetime}
condition: order_no={order_no param}
4-3) leave log
level(DEBUG), message: "[Scheduler] DeliveryTracking Callback Process: order_no={order_no},order_status={updated order_status}"
Files