티스토리 뷰

반응형

Ecount ERP를 이용해서 판매API를 제작해서 사용하고 있습니다.

판매입력의 개요
외부 서비스와 연계를 통해서 ERP의 판매를 입력할 수 있습니다.
양식필수 값은 회사코드별로 상이합니다. 기본입력양식설정의 필수값을 확인바랍니다.
 
Ecount ERP의 승인코드를 받아서

 

JSON 형식으로 자료를 전송하고 결과를 받는 형식입니다.
요청 데이터 형식항목설명
호출방식 POST
Content-Type application/json
Test URL
https://sboapi{ZONE}.ecount.com/OAPI/V2/Sale/SaveSale?SESSION_ID={SESSION_ID}
Request URL
https://oapi{ZONE}.ecount.com/OAPI/V2/Sale/SaveSale?SESSION_ID={SESSION_ID}
자료포맷 종류 JSON(Paramenter, Result)

처음엔 Test URL로 성공하면 정신 API 코드를 발급해 주는데요, 나중에 이렇게 리스트가 나옵니다.

위의 표에서 우측에 '검증여부'를 보시면 실제 사용하는 메뉴들에 대한 코드 검증여부를 EcountERP에서 보여줍니다.

물론, 검증된 메뉴만 일단 전송이 가능한 것이구요~

자료입력 포멧도 실제 사용하시면 화면에서 그 자세한 내용을 볼 수 있습니다.

아래는 판매입력에 대한 자료설명 부분의 일부를 발췌했습니다.

 

그럼, 자료를 보낼 수 있는 JSON형식이 필요한데, 예시가 있으니 해당 예시 내용을 바탕으로 만들면 될 것입니다.

{
    "SaleList": [{
        "Line": "0",
        "BulkDatas": {
            "IO_DATE": "20180612",
            "UPLOAD_SER_NO": "",
            "CUST": "",
            "CUST_DES": "",
            "EMP_CD": "",
            "WH_CD": "00009",
            "IO_TYPE": "",
            "EXCHANGE_TYPE": "",
            "EXCHANGE_RATE": "",
            "SITE": "",
            "PJT_CD": "",
            "DOC_NO": "",
            "U_MEMO1": "",
            "U_MEMO2": "",
            "U_MEMO3": "",
            "U_MEMO4": "",
            "U_MEMO5": "",
            "ADD_TXT_01_T": "",
            "ADD_TXT_02_T": "",
            "ADD_TXT_03_T": "",
            "ADD_TXT_04_T": "",
            "ADD_TXT_05_T": "",
            "ADD_TXT_06_T": "",
            "ADD_TXT_07_T": "",
            "ADD_TXT_08_T": "",
            "ADD_TXT_09_T": "",
            "ADD_TXT_10_T": "",
            "ADD_NUM_01_T": "",
            "ADD_NUM_02_T": "",
            "ADD_NUM_03_T": "",
            "ADD_NUM_04_T": "",
            "ADD_NUM_05_T": "",
            "ADD_NUM_06_T": "",
            "ADD_NUM_07_T": "",
            "ADD_NUM_08_T": "",
            "ADD_NUM_09_T": "",
            "ADD_NUM_10_T": "",
            "ADD_CD_01_T": "",
            "ADD_CD_02_T": "",
            "ADD_CD_03_T": "",
            "ADD_CD_04_T": "",
            "ADD_CD_05_T": "",
            "ADD_CD_06_T": "",
            "ADD_CD_07_T": "",
            "ADD_CD_08_T": "",
            "ADD_CD_09_T": "",
            "ADD_CD_10_T": "",
            "ADD_DATE_01_T": "",
            "ADD_DATE_02_T": "",
            "ADD_DATE_03_T": "",
            "ADD_DATE_04_T": "",
            "ADD_DATE_05_T": "",
            "ADD_DATE_06_T": "",
            "ADD_DATE_07_T": "",
            "ADD_DATE_08_T": "",
            "ADD_DATE_09_T": "",
            "ADD_DATE_10_T": "",
            "U_TXT1": "",
            "ADD_LTXT_01_T": "",
            "ADD_LTXT_02_T": "",
            "ADD_LTXT_03_T": "",
            "ADD_LTXT_04_T": "",
            "ADD_LTXT_05_T": "",
            "ADD_LTXT_06_T": "",
            "ADD_LTXT_07_T": "",
            "ADD_LTXT_08_T": "",
            "ADD_LTXT_09_T": "",
            "ADD_LTXT_10_T": "",
            "PROD_CD": "00001",
            "PROD_DES": "test",
            "SIZE_DES": "",
            "UQTY": "",
            "QTY": "1",
            "PRICE": "",
            "USER_PRICE_VAT": "",
            "SUPPLY_AMT": "",
            "SUPPLY_AMT_F": "",
            "VAT_AMT": "",
            "REMARKS": "",
            "ITEM_CD": "",
            "P_REMARKS1": "",
            "P_REMARKS2": "",
            "P_REMARKS3": "",
            "ADD_TXT_01": "",
            "ADD_TXT_02": "",
            "ADD_TXT_03": "",
            "ADD_TXT_04": "",
            "ADD_TXT_05": "",
            "ADD_TXT_06": "",
            "ADD_TXT_07": "",
            "ADD_TXT_08": "",
            "ADD_TXT_09": "",
            "REL_DATE": "",
            "REL_NO": "",
            "MAKE_FLAG": "",
            "CUST_AMT": "",
            "P_AMT1": "",
            "P_AMT2": "",
            "ADD_NUM_01": "",
            "ADD_NUM_02": "",
            "ADD_NUM_03": "",
            "ADD_NUM_04": "",
            "ADD_NUM_05": "",
            "ADD_NUM_06": "",
            "ADD_NUM_07": "",
            "ADD_NUM_08": "",
            "ADD_NUM_09": "",
            "ADD_CD_01": "",
            "ADD_CD_02": "",
            "ADD_CD_03": "",
            "ADD_CD_04": "",
            "ADD_CD_05": "",
            "ADD_CD_06": "",
            "ADD_CD_07": "",
            "ADD_CD_08": "",
            "ADD_CD_09": "",
            "ADD_CD_10": "",
            "ADD_CD_NM_01": "",
            "ADD_CD_NM_02": "",
            "ADD_CD_NM_03": "",
            "ADD_CD_NM_04": "",
            "ADD_CD_NM_05": "",
            "ADD_CD_NM_06": "",
            "ADD_CD_NM_07": "",
            "ADD_CD_NM_08": "",
            "ADD_CD_NM_09": "",
            "ADD_CD_NM_10": "",
            "ADD_CDNM_01": "",
            "ADD_CDNM_02": "",
            "ADD_CDNM_03": "",
            "ADD_CDNM_04": "",
            "ADD_CDNM_05": "",
            "ADD_CDNM_06": "",
            "ADD_CDNM_07": "",
            "ADD_CDNM_08": "",
            "ADD_CDNM_09": "",
            "ADD_CDNM_10": "",
            "ADD_DATE_01": "",
            "ADD_DATE_02": "",
            "ADD_DATE_03": "",
            "ADD_DATE_04": "",
            "ADD_DATE_05": "",
            "ADD_DATE_06": "",
            "ADD_DATE_07": "",
            "ADD_DATE_08": "",
            "ADD_DATE_09": "",
            "ADD_DATE_10": ""
      }
   }]
}

 

위의 입력형식에 맞게 데이터를 만들어서 EcountERP 서버에 전송하면 그 결과를 리턴해줍니다.

[SUCCESS]
{
     "Data": {
      "EXPIRE_DATE":"",
      "QUANTITY_INFO": 시간당 연속 오류 제한 건수" : 0/30," 1시간 허용량" : 9/6000," 1일 허용량" :9/10000",
      "TRACE_ID":"db6138411aad40e42dc5e209f65f6f3c",
      "SuccessCnt": 2,
      "FailCnt": 0,
      "ResultDetails": [{"Line": 0,"IsSuccess": true,"TotalError": "[전표묶음0] OK","Errors": [],"Code": null}
                        {"Line": 0,"IsSuccess": true,"TotalError": "[전표묶음0] OK","Errors": [],"Code": null}],
      "SlipNos": ["20180612-2"]
     },
     "Status": "200",
     "Error": null,
     "Timestamp": "2018-06-12 13:23:11.262",
     "RequestKey": "",
     "IsEnableNoL4": false
}

[FAIL - Validation]
{
     "Data": {
      "EXPIRE_DATE":"",
      "QUANTITY_INFO": 시간당 연속 오류 제한 건수" : 1/30," 1시간 허용량" : 9/6000," 1일 허용량" : 9/10000",
      "SuccessCnt": 0,
      "FailCnt": 2,
      "ResultDetails": [{"Line": 0,"IsSuccess": false,"TotalError": "[전표묶음0] 품목코드 (필수), 품목명 (필수), 수량 (필수)",
                         "Errors": [{"ColCd": "PROD_CD","Message": "품목코드 (필수)"}, {"ColCd": "PROD_DES","Message": "품목명 (필수)"}, "Code": null},
                        {"Line": 0,"IsSuccess": false,"TotalError": "[전표묶음1] 품목코드 (필수), 품목명 (필수), 수량 (필수)",
                         "Errors": [{"ColCd": "PROD_CD","Message": "품목코드 (필수)"}, {"ColCd": "PROD_DES","Message": "품목명 (필수)"}, "Code": null}],
      "SlipNos": null
     },
     "Status": "200",
     "Error": null,
     "Timestamp": "2018-06-12 13:21:37.186",
     "RequestKey": "",
     "IsEnableNoL4": false
}

 

전체적인 이용 프로세스 설명 (출처 : EcountERP 사용자는 항상 사이트에서 볼 수 있습니다.)

 

테스트 인증키발급부터 구체적인 세부 설명이 이어집니다.

이걸 이용해서 개발하는 분들이 꼭 봐야할 사항은 오류코드 부분인데요, 나름 자세히 설명되어 있습니다.

 

 

기타 주의사항도 꼼꼼히 읽어보신 후 개발에 활용하시면 좋겠습니다.

처음 개발할때는 무척 많은 시행착오를 거쳤습니다.

특히 callback의 개념이 정립되지 않은상태에서 세션의 결과값을 다시 보내는 부분이 정말 많이 고생한 기억이 있습니다.

 

지금은 잘 활용해서 작은 프로젝트에 실제 사용하고 있어서 뿌듯함도 있지만요^^

처음 하는 경우는 많이 힘들 수 있으니 API 개발서를 차근차근 따라해 보는 것도 좋은 방법으로 사료됩니다.

감사합니다.

반응형
댓글