Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

항목

내용

1

요청 방향

버즈빌 → 매체사

2

HTTP Request method

POST - application/x-www-form-urlencoded

3

HTTP Request URL

매체사 서버의 endpoint (i.e postback_url )

4

HTTP Request Parameters

아래 Http Request Parameters 테이블을 참고합니다.

5

HTTP Response Code

버즈빌 서버는 매체사 서버로 부터 전달받은 응답 코드(Response Code)를 바탕으로 성공 여부를 판단합니다.

  • 200 (ok): 성공 처리

    • 매체 서버에서 요청을 제대로 처리한 경우의 응답 코드

  • 200 이외의 응답 코드: 최대 5회까지 해당 Postback 요청을 재시도

    • Exponential하게 1분, 10분, 1시간, 3시간, 24시간의 간격을 두고 수행

Note

body에 오류 내용을 담더라도 응답 코드가 200인 경우 재시도하지 않으므로 주의해 주세요.

...

Expand
title진행 과정

준비물

  • 버즈빌 매니저 통해 AES-256 암호화에 필요한 아래 값들 발급:

    • AES Key (길이 32)

    • AES IV (길이 16)

진행 절차

  1. 버즈빌 서버에서 HTTP Request parameter를 암호화

    1. JSON serialized parameters(string)에 해당 string을 UTF-8 인코딩 적용

    2. 해당 string에 PKCS7 패딩 적용 및 AES 암호화 진행

    3. 암호화된 값을 base64 encoding을 진행

  2. 암호화 된 데이터를 HTTP POST request에 파라미터 data라는 이름으로 추가하여 전송

    1. e.g

      Code Block
      languagejson
      {
        "data": "sgfHOC5Z66tLmlokmQEaXY39u+64gMWhLnxQAZ9ivYsTvF1isjVfaRx2BNhOADwPR6KB55/7F7iXBm5FKU8mHmHnlR3wSomVAlcjtx77KluoYoXi/jRCvaFLGIo7vcK1GVHxS557u/XTo53/AzdPZpk/aXkvFZvWPgS+GWj1TWle0mBJ0xOgfmb8LwMfi4rvfayTph3bZeryLuphorBzMoIhf+kQLyjfIyouWVoCh6UICeRBgzTS9SlgdUA6M1PVlCsQch0zKVeTJZEFEn8478QbpEEhgHDhXkzdo8tXgkwcg087LiIp30jCWpc3MVLfxPL4F05OFGGCkQwwpS6pRVMZhkumzfTFxc8iBoZ8unI15uk0cmY+CbSeOaLHsd7PaxsbyKISiJ31WJJ1OwfaYttoMwFysKNfL7pSz2HB9ULWZicG8MSPxCPKr9RDqgOXpuEoVm9YR3I4yNE5M0LNltpCTdXRBjTrOcjp+RtEZ1VENtHqTICK18nDqO+91BUt3AJsf4VmzogJ8UpA0izEbY="
      }
  3. 수신 측 (매체사) 에서는 HTTP POST request에서 data 파라미터를 가져와 아래와 같은 순서로 복호화

    1. 암호화된 값을 base64 decoding 진행

    2. 해당 decoding된 string을 복호화 진행 이후 PKCS7 패딩 제거

    3. 해당 string을 UTF-8 디코딩

 

예제

  • 예제에서는 AES key, IV 값으로 모두 12341234asdfasdf buzzvil123456789를 사용

Code Block
languagejson
{
    "eventunit_atid": 1442984268"12345",
  "transaction_id":"10000000_1",
  "user_id": "testuserid76301buzzvil",
  "point": 1,
  "action_type": "uwon",
     "extra": "{}", 
    "is_media"event_at": 01599622182,
     "base_point": 2, 
    "point": 2"title":"title",
     "campaign_name"extra": "test campaign{}", 
    "campaign_id": 3467, 
    "transaction_id": 429482977
}

암호화 결과

JSON (UTF

}
  • 암호화 결과

    • JSON (UTF-8encoding) → AES encryption → base64 encoding 순서로 진행

      Code Block
      sgfHOC5Z66tLmlokmQEaXY39u+64gMWhLnxQAZ9ivYsTvF1isjVfaRx2BNhOADwPR6KB55/7F7iXBm5FKU8mHmHnlR3wSomVAlcjtx77KluoYoXi/jRCvaFLGIo7vcK1GVHxS557u/XTo53/AzdPZpk/aXkvFZvWPgS+GWj1TWle0mBJ0xOgfmb8LwMfi4rvfayTph3bZeryLuphorBzMoIhf+kQLyjfIyouWVoCh6UICeRBgzTS9SlgdUA6M1PVlCsQch0zKVeTJZEFEn8478QbpEEhgHDhXkzdo8tXgkwcg087LiIp30jCWpc3MVLfxPL4F05OFGGCkQwwpS6pRVMZhkumzfTFxc8iBoZ8unI15uk0cmY+CbSeOaLHsd7PaxsbyKISiJ31WJJ1OwfaYttoMwFysKNfL7pSz2HB9ULWZicG8MSPxCPKr9RDqgOXpuEoVm9YR3I4yNE5M0LNltpCTdXRBjTrOcjp+RtEZ1VENtHqTICK18nDqO+91BUt3AJsf4VmzogJ8UpA0izEbY=

 

  • 위의 암호화된 문장을 복호화시, 다음과 같습니다.

    • base64 decoding

      Code Block
      r\xb2r<\x07xec\xc78.Yxb8\xebx88\xabKxa7}#\x9aZ$tj\x99\x01\x1a]xdc\x8dxc5K\xfdx7f\xbbx13\xee\xb8\x80\xc5\xa1.|P\x01\x9fb\xbd\x8b\x13\xbc]b\xb25_i\x1cv\x04\xd8N\x00<\x0fG\xa2\x81\xe7\x9f\xfb\x17\xb8\x97\x06nE)O&\x1ea\xe7\x95\x1d\xf0J\x89\x95\x02W#\xb7\x1e\xfb*[\xa8b\x85\xe2\xfe4B\xbd\xa1K\x18\x8a;\xbd\xc2\xb5\x19Q\xf1K\x9e{\xbb\xf5\xd3\xa3\x9d\xff\x037Of\x99?iy/\x15\x9b\xd6>\x04\xbe\x19h\xf5Mi^\xd2`I\xd3\x13\xa0~f\xfc/\x03\x1f\x8b\x8a\xef}\xac\x93\xa6\x1d\xdbe\xea\xf2.\xeaa\xa2\xb0s2\x82!\x7f\xe9\x10/(\xdf#*.YZ\x02\x87\xa5\x08\t\xe4A\x834\xd2\xf5)`u@:3S\xd5\x94+\x10r\x1d3)W\x93%\x91\x05\x12\x7f8\xef\xc4\x1b\xa4A!\x80p\xe1^L\xdd\xa3\xcbW\x82Lxcb\xe0]98Q\x86\nD0\xc2\x94\xba\xa5\x15Lf\x19.\x9b7\xd3\x17\x17<\x88\x1a\x19\xf2\xe9\xc8\xd7\x9b\xa4\xd1\xc9\x98\xf8&\xd2x\xe6\x8b\x1e\xc7{=\xaclo"\x88J"w\xd5bI\xd4\xec\x1fi\x8bm\xa0\xcc\x05\xca\xc2\x8d|\xbe\xe9K=\x87\x07\xd5\x0bY\x98\x9c\x1b\xc3\x12?\x10\x8f*\xbfQ\x0e\xa8\x0e^\x9b\x84\xa1Y\xbda\x1d\xc8\xe3#D\xe4\xcd\x0b6[i\t7WD\x18\xd3\xac\xe7#\xa7\xe4m\x11\x9dU\x10\xdbG\xa92\x02+_\'\x0e\xa3\xbe\xf7PT\xb7p\t\xb1\xfe\x15\x9b: \'\xc5)\x03H\xb3\x11\xb6

       

    • AES decryption) Key, IV: 12341234asdfasdf buzzvil123456789

      Code Block
      {"eventunit_atid": 1442984268"12345", "usertransaction_id": "testuserid7630110000000_1", "actionuser_typeid": "ubuzzvil", "extrapoint": "{}"1, "isaction_mediatype": 0, "base_point": 2"won", "pointevent_at": 21599622182, "campaign_nametitle": "test campaigntitle", "campaign_id": 3467, "transaction_idextra": 429482977"{}"}

       

    • UTF-8 decoding

      Code Block
      {"eventunit_atid": 1442984268"12345", "usertransaction_id": "testuserid7630110000000_1", "actionuser_typeid": "ubuzzvil", "extrapoint": "{}"1, "isaction_mediatype": 0, "base_point": 2"won", "pointevent_at": 21599622182, "campaign_nametitle": "test campaigntitle", "campaign_idextra": 3467, "transaction_id": 429482977{}"}

      (memo) 위의 예제에 한글이 없기 때문에 UTF-8 decoding 을 거치지 않아도 같은 결과가 나옵니다.

...