CJ대한통운 배송정보 PHP 파싱 프로그램 > 그누보드5 팁자료실

그누보드5 팁자료실

CJ대한통운 배송정보 PHP 파싱 프로그램 정보

CJ대한통운 배송정보 PHP 파싱 프로그램

첨부파일

delivery_parser_cj.zip (4.1K) 75회 다운로드 2018-01-12 21:07:54

본문

먼저 이글을 한번 읽어주시구요.  https://sir.kr/cm_free/1441713?page=2


CJ대한통운  배송정보를 파싱하는 php 모듈입니다.  

php 5.5 이상 버전에서 composer 로 필요한 모듈을 미리 설치하셔야 합니다. composer 사용법에 대해서는 인터넷에 많은 문서들이 있으니 해당 문서들을 참고하시길 바랍니다. guzzle, dom-crawler, css-selector 라이브러리가 필요합니다.

composer.json 참조


{
  "require": {
    "php": ">=5.6.0",
    "guzzlehttp/guzzle": "~6.0",
    "symfony/dom-crawler": "3.4.*",
    "symfony/css-selector": "3.4.*",
    "fabpot/goutte" : "^3.1"
  },
  "autoload" : {
    "psr-4" : {
        "Delivery\\" : "delivery"
    }
  }
}

 

 

업로드한 class 파일은 파싱만 수행함으로, 영카트에서 사용하기 위해선 테이블 생성과, db입력 부분은 별도의 코드 작업이 필요합니다. 

 

배송 업체별 코드는 팁자료실에는 그만 업로드 하도록 하고,  영카트에서 바로 사용할수 있도록 플러그인 작업을 할려고 합니다.

 

수정된 코드에 대해서 재배포는 금지입니다.

 

파싱결과 예제


Array
(
    [delivery_info] => Array
        (
            [complete_yn] => Y
            [invoice_no] => 123456789012
            [sender] => 플*
            [send_datetime] => 
            [receiver] => 이*
            [receive_datetime] => 
            [gubun] => 
            [status] => 배달완료
            [step] => 6
        )
    [delivery_product_info] => Array
        (
            [item_name] => xxx
            [item_qty] => 1
        )
    [delivery_history] => Array
        (
            [0] => Array
                (
                    [d_status] => 상품인수
                    [d_datetime] => 2018-01-11 17:46
                    [d_location] => 경기하남창우
                    [d_etc] => 보내시는 고객님으로부터 상품을 인수받았습니다
                )
            [1] => Array
                (
                    [d_status] => 상품이동중
                    [d_datetime] => 2018-01-12 02:22
                    [d_location] => 청원HUB
                    [d_etc] => 배달지역으로 상품이 이동중입니다.
                )
            [2] => Array
                (
                    [d_status] => 배달지도착
                    [d_datetime] => 2018-01-12 08:46
                    [d_location] => 기흥
                    [d_etc] => 고객님의 상품이 배달지에 도착하였습니다.
                    [d_person] => 신상훈
                    [d_person_telno] => *** 개인정보보호를 위한 휴대폰번호 노출방지 ***
                )
            [3] => Array
                (
                    [d_status] => 배달출발
                    [d_datetime] => 2018-01-12 12:39
                    [d_location] => 경기용인하갈
                    [d_etc] => 고객님의 상품을 배달할 예정입니다.(14∼16시)
                    [d_person] => 신상훈
                    [d_person_telno] => *** 개인정보보호를 위한 휴대폰번호 노출방지 ***
                )
            [4] => Array
                (
                    [d_status] => 배달완료
                    [d_datetime] => 2018-01-12 16:38
                    [d_location] => 경기용인하갈
                    [d_etc] => 고객님의 상품이 배달완료 되었습니다.
                    [d_person] => 신상훈
                    [d_person_telno] => *** 개인정보보호를 위한 휴대폰번호 노출방지 ***
                )
        )
)

<?php

require_once '../vendor/autoload.php';

use Delivery\CJParser;


set_time_limit(120); //최대 실행시간은 2분으로
ini_set('display_errors', 'On');
error_reporting(E_ALL & ~E_NOTICE);


//파싱된 데이타 구조
/**
 * 배송 관련
 * part1 배송 기본정보 delivery_info
 * 택배사     company_name
 * 택배사 코드 comapny_id
 * 운송장번호  invoice_no
 * 주문번호    order_no
 * 발송인      sender
 * 발송전화번호 sender_telno
 * 주소        receiver_addr
 * 수취인      receiver
 * 수취전화번호   receiver_telno
 * 상태      status
 * 배송 진행상태   step 1: 배송준비중, 2:집하완료, 3:배송중, 4: 지점도착, 5: 배송출발, 6:배송완료
 *  STEP1 접수 STEP2 상품이동중 STEP3 배달지도착 STEP4 배달준비 STEP5 배달완료
 * 배송 완료여부  complete_yn
 * 배송예정 시간 estimate_time
 *
 * part2 delivery_product 배송 품목정보
 * 품명   item_name
 * 수량   item_qty
 * 브랜드  item_brand
 *
 * part3 배송 상세 delivery_history (array)
 * 날짜/시간    d_datetime
 * 현재위치     d_location
 * 처리현황     d_status
 * 담당자명     d_person
 * 담당자 연락처 d_person_telno
 * 수령인      d_recipient
 * 비고        d_etc
 */

//todo 주문서에 해당하는 배송정보를 가져와 배송상태를 확인한다.
//배송이 완료된건이면, 배송정보를 파싱하지 않는다.


$delivery = new CJParser();
$invoice_no = "123456789012"; //cj대한통운 운송장번호


$result = $delivery->getDeliveryInfo($invoice_no);

if($result['delivery_info']['step'] == "-1") { //배송정보 오류
    echo "운송장이 등록되지 않았거나 업체에서 상품을 준비중입니다.";
}

//todo 파싱된 배송정보를 db에 insert/update 처리한다.
//마지막 파싱 시간을 기록하여, 파싱이 너무 자주 실행되지 않도록 한다.
//너무 자주 실행하면 IP 차단 당할수 있음으로 realtime 파싱보다는 배치 처리하도록 한다.

echo "<xmp>";
print_r($result);
echo "</xmp>";

?>


 
추천
6

댓글 9개

영카트에 등록된 업체는 다 작업할 생각입니다. 시간을 쪼개서 작업중이라서 언제 다 끝날지는 모르겠네요. 1-2개 업체는 플러그인게시판에 업로드하고, 나머지 전체 버전은  컨텐츠몰에 올리지 않을까 합니다.
전체 30 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT