8. Payment – openNate.dotoriPayment
* Return 객체
paymentKey
passthrough
status
message
status message 설명
true Success 결제 성공
3rd party 서버와의 통신상의 오류
ERR001 Communication error
1단계 통신중 오류 및 3rd party 프로세스 실행중 오류
ERR002 Dotori error 네이트 도토리 결제 처리중 오류
네이트 도토리 결제 처리 이후 3rd party 서버 프로세스 실행중
ERR003 Payment error
오류 또는 2단계 통신중 오류
ERR004 Expired page 동일한 결제에 대한 재요청 발생
9. payment 데이터 흐름
3rd party 앱스 결제 버튼 클릭
-계약정보 확인 4
6 11 파라미터
status – ready, accepted, failed
openNate.dotoriPayment 실행 payment_key
19 passthrough
callbackFN user_id
-payment_key 생성 5 apps_no
-결제 요청정보 저장 item_id
item_type
item_name
Popup UI item_dotori
mac
-request parameter 및
shared key를 이용하여 hmac 6
1 3 키 생성
도토리 부족
결제 팝업
알림 팝업
18 3rd party 서버 프로세스
7
-passthrough 확인
2 -Mac key 생성 후 비교
네이트 도토리 HTTP RC 확인 9 8 -아이템 정보 임시 저장 등
충전 팝업 ERR001
response HTTP RC
16
결제 진행 결과 팝업
- 에러 메시지 ERR002 네이트 도토리 차감 10
도토리 차감 결과 전송 11
12
3rd party 서버 프로세스
-Passthrough, mac key 등 확인
17 결제 진행 결과 팝업
- 결제 성공
ERR003 HTTP RC 확인 15 14 -사용자 아이템 구매 정보 저장
(고객센터)
response HTTP RC 13
13. Payment – hmac key 생성
RFC 2104 HMAC_MD5
C = callbackURL [eg " http://www.thirdparty.com/callback"]
P = 파라미터 [eg "param1=value1¶m2=value2&...¶mN=valueN"]
K = the shared secret key
H = md5
M = hash (K,P) = H ((K XOR opad) + H ((K XOR ipad) + P))
opad : outer padding (0x5c5c…5c5c, one-block-long hexadecimal constant)
ipad : inner padding (0x3636…3636, one-block-long hexadecimal constant)
request (C,P,K) =
"
http://www.thirdparty.com/callback?param1=value1¶m2=value2&...&pa
ramN=valueN&mac="+ M
14. Payment – 3rd party 서버 프로세스
이것만은 지키자.
1. Payment API 실행시 passthrough 값 생성
2. 전송된 passthrough 값이 서버에서 생성된 값인지 확인
3. Hmac key 생성 후 request parameter 중 mac 값과 비교
4. 아이템 구매 내역 로그 기록
5. Shared key 는 소중하게 관리