결제취소
WeChat Pay는 결제취소(부분취소 포함) 접수 API 입니다.
주의사항
- 본 API는 결제 취소가 아닌 취소 접수 상태로 실제 결제 취소가 아닙니다.
- 결제 취소 완료는 노티(웹훅) 서비스를 통해 전송됩니다.
요청
요청 URL
POST https://{API 도메인}/api/trades/wechatpay/revise
Content-type: application/json; charset=utf-8
참고
API 멱등성 지원 대상 (API 멱등성 참조)
주의사항
최종 결제 취소가 완료되기까지 시간이 걸리므로 timeout을 30초로 설정해야 합니다.
파라미터
| 필드명 | 타입 | 길이 | 필수여부 | 설명 |
|---|---|---|---|---|
| mallId | String | 8Byte | ✅ | KICC에서 부여한 상점ID |
| shopTransactionId | String | 60Byte | ✅ | 상점 거래고유번호 (API 멱등성 키) |
| pgCno | String | 60Byte | ✅ | 결제승인 거래고유번호 |
| reviseTypeCode | String | 2Byte | ✅ | 취소 거래구분 전체취소: “40”, 부분취소: “32” |
| cancelReqDate | String | 8Byte | ✅ | 취소요청 일자(yyyyMMdd) 재취소 요청 시 최초 취소요청일자 |
| msgAuthValue | String | 200Byte | ✅ | 요청값의 무결성을 검증 (메시지 인증값 바로가기) |
| notifyUrl | String | 1000Byte | ✅ | 취소완료 후 결과 전송 URL |
| memo | String | 400Byte | 취소사유 | |
| regId | String | 40Byte | 취소 요청자 | |
| amountInfo | Object | 취소금액 정보(부분취소 시 사용) 아래 amountInfo 참조 |
amountInfo(취소금액 정보)
| 필드명 | 타입 | 길이 | 필수여부 | 설명 |
|---|---|---|---|---|
| currency | String | 2Byte | ✅ | 통화코드 원화: "KRW", 달러: "USD" |
| totAmount | Number | ✅ | 취소금액(부분취소 시 ✅) USD일 경우 * 100으로 요청, $12.03 이면 1203으로 요청 |
요청 예시
{
"mallId": "{상점ID}",
"shopTransactionId": "{API 멱등성 키}",
"pgCno": "{KICC 결제 거래고유번호}",
"reviseTypeCode": "40",
"cancelReqDate": "{요청 일자}",
"msgAuthValue": "{메시지 인증값}",
"notifyUrl": "{결제취소 완료 후 결과 전송 URL}",
"memo": "취소사유"
}
응답
파라미터
| 필드명 | 타입 | 길이 | 설명 |
|---|---|---|---|
| resCd | String | 4Byte | 응답코드 |
| resMsg | String | 1000Byte | 응답메시지 |
| shopTransactionId | String | 60Byte | 취소요청 시 전송한 값 그대로 사용 |
| mallId | String | 8Byte | KICC에서 부여한 상점ID |
| resDetailMsg | String | 1024Byte | 오류 시 위쳇에서 내려주는 상세 메시지(URL encoding) |
| pgCno | String | 60Byte | 원 결제승인 거래고유번호 |
| cancelPgCno | String | 60Byte | 결제취소 거래고유번호 |
| transactionDate | String | 14Byte | 거래일시(yyyyMMddHHmmss) |
| amountInfo | Object | 취소금액 정보(부분취소 시 사용) 아래 amountInfo 참조 |
amountInfo(취소금액 정보)
| 필드명 | 타입 | 길이 | 설명 |
|---|---|---|---|
| currency | String | 2Byte | 통화코드 원화: "KRW", 달러: "USD" |
| totAmount | Number | 취소금액(부분취소 시 필수) USD일 경우 * 100으로 요청, $12.03 이면 1203으로 요청 |
응답 예시
{
"resCd": "0000",
"resMsg": "정상처리",
"mallId": "{상점ID}",
"shopTransactionId": "{API 멱등성 키}",
"pgCno": "{KICC 결제 거래고유번호}",
"cancelPgCno": "{결제취소 거래고유번호}",
"transactionDate": "20230312000512",
"amountInfo": {
"currency": "USD",
"totAmount": 5022 // $50.22일 경우 5022로 응답
}
}
메시지 인증값
메시지 인증값 구성은 아래와 같이 조합하고 해당값을 HmacSHA256으로 해시한다. 메시지 인증 참조
pgCno(결제승인 거래고유번호) + “|” + shopTransactionId (상점 거래고유번호)