서비스 소개
본 문서는 위루트에서 제공하는 API에 대하여 기술합니다.
노티 API
notification webhook API에 대하여 기술합니다.
해당 API를 이용하기 위해서 위루트내 가맹점 정보 및 노티를 받을 URL목록을 등록합니다.
방화벽 및 보안 설정 필요시 하단 아이피를 추가합니다.
Webhook server IP : 221.168.33.162
노티 전송 규격
필수 여부의 X 값들의 value는 빈 값으로 전달됩니다.
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 결제 MID |
단말기 ID | tid | X | 50 | 결제 TID |
거래번호 | trx_id | O | 100 | 취소시 사용됩니다. |
거래금액 | amount | O | 20 | |
주문번호 | ord_num | O | 50 | |
승인번호 | appr_num | O | 10 | |
상품명 | item_name | X | 100 | 온라인 결제건에 한해 전송됩니다. |
구매자명 | buyer_name | X | 100 | 온라인 결제건에 한해 전송됩니다. |
구매자번호 | buyer_phone | X | 100 | 온라인 결제건에 한해 전송됩니다. |
발급사명 | issuer | O | 20 | |
매입사명 | acquirer | O | 20 | |
카드번호 | card_num | O | 20 | |
할부기간 | installment | O | 2 | 00,02,03 ... |
결제방식 | method | O | 10 | |
거래시간 | trx_dttm | O | 20 | Y-m-d H:i:s |
취소시간 | cxl_dttm | X | 20 | Y-m-d H:i:s |
취소여부 | is_cancel | O | 1 | |
타임스탬프 | timestamp | O | 10 | 1722258514 |
무결성 보장 값 | signature | O | 64 |
key=value형태로 생성된 데이터를 SHA256으로 단방향 암호화한 값입니다.
sha256("sign_key=value×tamp=value&mid=value") |
API를 통해 승인 요청시 입력했던 임시 예약필드 | temp | O | 500 |
노티 응답 규격
노티를 성공적으로 받았을 시, body에 작성하셔야할 내용입니다.
상황별 응답 | http code | body | 비고 |
---|---|---|---|
성공시 응답 | 200 | {} | |
실패시 응답 | 200 외 http status code | {"message":"실패한 사유"} | 출력 body 내용은 weroute 내의 노티전송이력에 표시됩니다. (message 파라미터는 필수입니다.) |
키인 결제 API
키인 결제 API Interface의 구성과 사용방법에 대한 메뉴얼을 기술합니다.
해당 API는 위루트내 가맹점 정보 및 수기결제에 관련된 연동정보를 요구합니다.
키인결제는 카드단말기를 이용하지 않고, 카드 정보를 직접 입력하여 결제하는 방식입니다.
실물 카드 없이 카드번호, 유효기간 등의 정보를 수기로 입력하여 결제를 진행할 수 있습니다.
결제방식은 비인증, 구인증으로 나뉘며 결제방식별로 다음의 정보를 요구합니다.
비인증 : 카드번호, 만료일(유효기간)
구인증 : 카드번호, 유효기간, 비밀번호, 생년월일(사업자 번호)
키인 결제 흐름도
승인 요청 규격
URL: https://api.weroutefincorp.com/api/v2/pay/hand
예시 요청:
const params = {
'mid' : mid,
'tid' : '',
'amount' : amount,
'ord_num' : '12345H13241234',
'item_name' : '테스트',
'buyer_name': '구매자명',
'buyer_phone': '01000000000',
'buyer_email': '',
'is_send_email': 0,
'card_num' : '카드번호',
'yymm' : '2509',
'installment' : '00',
'auth_num' : '', //opt
'card_pw' : '', //opt
'temp' : btoa(JSON.stringify({'test':'노티로 전달받은 값'})),
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${pay_key}`,
};
const res = $.post('https://api.weroutefincorp.com/api/v2/pay/hand', params, headers);
use Illuminate\Support\Facades\Http;
$params = [
'mid' => mid,
'tid' => '',
'amount' => amount,
'ord_num' => '12345H13241234',
'item_name' => '테스트',
'buyer_name' => '구매자명',
'buyer_phone' => '01000000000',
'buyer_email' => '',
'is_send_email'=> 0,
'card_num' => '카드번호',
'yymm' => '2509',
'installment' => '00',
'auth_num' => '', //opt
'card_pw' => '', //opt
'temp' => base64_encode(json_encode(['test' => '노티로 전달받은 값'])),
];
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => $pay_key,
];
$response = Http::withHeaders($headers)->post('https://api.weroutefincorp.com/api/v2/pay/hand', $params);
import requests
import json
import base64
params = {
'mid': mid,
'tid': '',
'amount': amount,
'ord_num': '12345H13241234',
'item_name': '테스트',
'buyer_name': '구매자명',
'buyer_phone': '01000000000',
'buyer_email': '',
'is_send_email': 0,
'card_num': '카드번호',
'yymm': '2509',
'installment': '00',
'auth_num': '',
'card_pw': '',
'temp': base64.b64encode(json.dumps({'test': '노티로 전달받은 값'}).encode()).decode()
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': pay_key
}
response = requests.post('https://api.weroutefincorp.com/api/v2/pay/hand', json=params, headers=headers)
import org.springframework.web.reactive.function.client.WebClient;
Map<String, Object> params = new HashMap<>();
params.put("mid", mid);
params.put("amount", amount);
params.put("ord_num", "12345H13241234");
params.put("item_name", "테스트");
params.put("buyer_name", "구매자명");
params.put("buyer_phone", "01000000000");
params.put("buyer_email", "");
params.put("is_send_email", 0);
params.put("card_num", "카드번호");
params.put("yymm", "2509");
params.put("installment", "00");
params.put("auth_num", "");
params.put("card_pw", "");
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("test", "노티로 전달받은 값");
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
String base64Encoded = Base64.getEncoder().encodeToString(jsonString.getBytes());
params.put("temp", base64Encoded);
WebClient client = WebClient.builder()
.baseUrl("https://api.weroutefincorp.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("Authorization", payKey)
.build();
Mono<String> response = client.post()
.uri("/api/v2/pay/hand")
.bodyValue(params)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("API Error")))
.bodyToMono(String.class);
요구 헤더명 | 요구 내용 | 비고 |
---|---|---|
Accept | application/json | |
Content-Type | application/json | |
Authorization | ${pay_key} | 위루트내에서 등록한 온라인 결제 KEY |
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
승인금액 | amount | O | 30 | |
가맹점 주문번호 | ord_num | O | 50 | |
상품명 | item_name | O | 100 | |
구매자명 | buyer_name | O | 50 | |
구매자 전화번호 | buyer_phone | O | 20 | 요청포멧:01000000000 |
구매자 이메일 | buyer_email | X | 20 | |
이메일 발송여부 | is_send_email | O | 1 | 1=발송, 0=미발송 |
카드번호 | card_num | O | 16 | 5921123456781234 |
유효기간 | yymm | O | 4 | 2509 |
할부기간 | installment | O | 2 | 응답포멧: 00,02,03~11 (00=일시불, 02=2개월 할부, 11=11개월 할부) |
카드 소유자 번호 | auth_num | X | 12 | 카드 소유자 생년월일 6자리(YYMMDD), 또는 사업자 번호 |
카드비밀번호 | card_pw | X | 2 | 카드비밀번호 앞 2자리 |
임시 예약필드 | temp | X | 1000 |
승인 응답 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
단말기 ID | tid | X | 50 | 위루트내에서 등록한 TID |
거래금액 | amount | O | 11 | |
가맹점 주문번호 | ord_num | O | 50 | |
승인번호 | appr_num | O | 20 | |
상품명 | item_name | O | 100 | |
거래번호 | trx_id | O | 100 | 취소시 사용됩니다. |
매입사명 | acquirer | O | 20 | |
발급사명 | issuer | O | 20 | |
카드번호 | card_num | O | 20 | |
할부기간 | installment | O | 2 | |
결제방식 | method | O | 10 | 응답포멧:수기 |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
인증 결제 API
인증 결제 API Interface의 구성과 사용방법에 대한 메뉴얼을 기술합니다.
해당 API는 위루트내 가맹점 정보 및 인증결제에 관련된 연동정보를 요구합니다.
인증결제는 신용카드 결제시 PG사로 부터 결제에 대한 인증 결과 수신 이후 해당 인증키로 결제를 요청하는 결제 방식입니다.
결제 요청 시 PG사의 결제창이 활성화 되며 이후 각 카드사의 전용 결제모듈에서 인증이 진행됩니다.
인증 결제 흐름도
예시 요청:
<body>
<form method='post' accept-chartset='utf-8' action='https://api.weroutefincorp.com/v2/pay/auth'>
<input type='hidden' name='return_url' value='https://www.example.com/result'/>
<input type='hidden' name='user_agent' value='WP'/>
<input type='hidden' name='mid' value='{MID}'/>
<input type='hidden' name='tid' value='{TID}'/>
<input type='hidden' name='ord_num' value='5486A1697465312'/>
<input type='hidden' name='item_name' value='test'/>
<input type='hidden' name='amount' value='100'/>
<input type='hidden' name='buyer_name' value='test'/>
<input type='hidden' name='buyer_phone' value='100'/>
<input type='hidden' name='installment' value='0'/>
<input type='hidden' name='pay_key' value='{PAY_KEY}'/>
<input type='hidden' name='temp' value='{예약 값}'/>
</form>
</body>
승인 요청 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
돌아갈 URL | return_url | O | 255 | 승인 결과를 전달 받을 URL |
클라이언트 접속 환경 | user_agent | X | 1 | 클라이언트 측 접속 타입(WP=PC Web, WM=Mobile Web, WA=Mobile App(Android), WI=Mobile App(IOS), default=WP) |
성공시 돌아갈 URL | success_url | X | 255 | 상위 PG사별 사용/미사용 |
실패시 돌아갈 URL | fail_url | X | 255 | 상위 PG사별 사용/미사용 |
결제키 | pay_key | O | 100 | PG사로부터 발급받은 결제 KEY |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
승인금액 | amount | O | 11 | |
주문번호 | ord_num | O | 50 | |
상품명 | item_name | O | 100 | |
구매자명 | buyer_name | O | 50 | |
구매자 전화번호 | buyer_phone | O | 20 | 요청포멧:01000000000 |
구매자 이메일 | buyer_email | X | 20 | |
이메일 발송여부 | is_send_email | O | 1 | 1=발송, 0=미발송 |
할부기간 | installment | O | 2 | |
임시 예약필드 | temp | X | 180 |
승인 리턴 규격
필수 여부의 X 값들의 value는 빈 값으로 전달됩니다.
승인 실패시 result_cd, result_msg 두개의 파라미터만 전송됩니다.
return_url을 작성하지 않을 시 디폴트 결제 페이지에서 결제 결과가 표시됩니다.
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | 정상처리되었습니다 |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
단말기 ID | tid | X | 50 | 위루트내에서 등록한 TID |
거래번호 | trx_id | O | 100 | 취소시 사용됩니다. |
거래금액 | amount | O | 11 | |
승인번호 | appr_num | O | 20 | |
상품명 | item_name | X | 100 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다. |
매입사명 | acquirer | X | 20 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다. |
발급사명 | issuer | O | 20 | 비씨 |
카드번호 | card_num | N | 20 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다.(응답포멧: 1111******1111) |
할부기간 | installment | O | 2 | 응답포멧: 00,02,03~11 (00=일시불, 02=2개월 할부, 11=11개월 할부) |
구매자명 | buyer_name | O | 100 | |
구매자번호 | buyer_phone | O | 100 | |
구매자 이메일 | buyer_email | X | 20 | |
이메일 발송여부 | is_send_email | O | 1 | 1=발송, 0=미발송 |
결제방식 | method | O | 10 | 인증 |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
취소여부 | is_cancel | O | 1 | |
임시 예약필드 | temp | X | 180 |
간편 결제 API
간편 결제 API Interface의 구성과 사용방법에 대한 메뉴얼을 기술합니다.
해당 API는 위루트내 가맹점 정보 및 간편결제에 관련된 연동정보를 요구합니다.
예시 요청:
<body>
<form method='post' accept-chartset='utf-8' action='https://api.weroutefincorp.com/v2/pay/simple'>
<input type='hidden' name='return_url' value='https://www.example.com/result'/>
<input type='hidden' name='mid' value='{MID}'/>
<input type='hidden' name='tid' value='{TID}'/>
<input type='hidden' name='ord_num' value='5486A1697465312'/>
<input type='hidden' name='item_name' value='test'/>
<input type='hidden' name='amount' value='100'/>
<input type='hidden' name='buyer_name' value='test'/>
<input type='hidden' name='buyer_phone' value='100'/>
<input type='hidden' name='installment' value='0'/>
<input type='hidden' name='pay_key' value='{PAY_KEY}'/>
<input type='hidden' name='temp' value='{예약 값}'/>
</form>
</body>
승인 요청 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
돌아갈 URL | return_url | O | 255 | 승인 결과를 전달 받을 URL |
성공시 돌아갈 URL | success_url | X | 255 | 상위 PG사별 사용/미사용 |
실패시 돌아갈 URL | fail_url | X | 255 | 상위 PG사별 사용/미사용 |
결제키 | pay_key | O | 100 | PG사로부터 발급받은 결제 KEY |
사용할 간편결제 타입 | route | O | 100 | KAKAO, NAVER |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
승인금액 | amount | O | 11 | |
주문번호 | ord_num | O | 50 | |
상품명 | item_name | O | 100 | |
구매자명 | buyer_name | O | 50 | |
구매자 전화번호 | buyer_phone | O | 20 | 요청포멧:01000000000 |
할부기간 | installment | O | 2 | |
임시 예약필드 | temp | X | 180 |
승인 리턴 규격
필수 여부의 X 값들의 value는 빈 값으로 전달됩니다.
승인 실패시 result_cd, result_msg 두개의 파라미터만 전송됩니다.
return_url을 작성하지 않을 시 디폴트 결제 페이지에서 결제 결과가 표시됩니다.
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | 정상처리되었습니다 |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
단말기 ID | tid | X | 50 | 위루트내에서 등록한 TID |
거래번호 | trx_id | O | 100 | 취소시 사용됩니다. |
거래금액 | amount | O | 11 | |
승인번호 | appr_num | O | 20 | |
상품명 | item_name | X | 100 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다. |
매입사명 | acquirer | X | 20 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다. |
발급사명 | issuer | O | 20 | 비씨 |
카드번호 | card_num | N | 20 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다.(응답포멧: 1111******1111) |
할부기간 | installment | O | 2 | 응답포멧: 00,02,03~11 (00=일시불, 02=2개월 할부, 11=11개월 할부) |
구매자명 | buyer_name | O | 100 | |
구매자번호 | buyer_phone | O | 100 | |
결제방식 | method | O | 10 | 인증 |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
취소여부 | is_cancel | O | 1 | |
임시 예약필드 | temp | X | 180 |
취소 API
위루트 취소 API Interface의 구성과 사용방법에 대한 메뉴얼을 기술합니다.
해당 API는 위루트내 가맹점 정보 및 취소에 관련된 연동정보를 요구합니다.
키인, 인증, 간편, 빌링결제를 통해 발생한 결제 건을 취소합니다.
결제 취소 흐름도
취소 요청 규격
URL: https://api.weroutefincorp.com/api/v2/pay/cancel
예시 요청:
const params = {
'mid' : mid,
'tid' : tid,
'amount' : amount,
'trx_id' : trx_id,
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${pay_key}`,
};
const res = $.post('/api/v2/pay/cancel', params, headers);
use Illuminate\Support\Facades\Http;
$params = [
'mid' => mid,
'tid' => '',
'amount' => amount,
'trx_id' => trx_id,
];
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => $pay_key,
];
$response = Http::withHeaders($headers)->post('https://api.weroutefincorp.com/api/v2/pay/cancel', $params);
import base64
params = {
'mid': mid,
'tid': '',
'amount': amount,
'trx_id': trx_id,
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': pay_key
}
response = requests.post('https://api.weroutefincorp.com/api/v2/pay/cancel', json=params, headers=headers)
import org.springframework.web.reactive.function.client.WebClient;
Map<String, Object> params = new HashMap<>();
params.put("mid", mid);
params.put("amount", amount);
params.put("trx_id", trx_id);
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("test", "노티로 전달받은 값");
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
String base64Encoded = Base64.getEncoder().encodeToString(jsonString.getBytes());
params.put("temp", base64Encoded);
WebClient client = WebClient.builder()
.baseUrl("https://api.weroutefincorp.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("Authorization", payKey)
.build();
Mono<String> response = client.post()
.uri("/api/v2/pay/cancel")
.bodyValue(params)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("API Error")))
.bodyToMono(String.class);
요구 헤더명 | 요구 내용 | 비고 |
---|---|---|
Accept | application/json | |
Content-Type | application/json | |
Authorization | ${pay_key} | 위루트내에서 등록한 온라인 결제 KEY |
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
취소금액 | amount | O | 11 | |
거래번호 | trx_id | O | 100 | 수기, 인증, 간편결제의 응답으로온 trx_id를 입력합니다. |
취소 응답 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
단말기 ID | tid | X | 50 | 위루트내에서 등록한 TID |
취소금액 | amount | O | 11 | |
거래번호 | trx_id | O | 100 | |
원거래번호 | ori_trx_id | O | 100 | |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
취소시간 | cxl_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
임시 예약필드 | temp | X | 180 |
빌링 결제 API
위루트 빌링 결제 API Interface의 구성과 사용방법에 대한 메뉴얼을 기술합니다.
해당 API는 위루트내 빌링 결제 정보에 관련된 연동정보를 요구합니다.
빌링 결제는 고객이 결제할 카드에 대한 정보를 입력한 후 발급된 키 값으로 자동결제하는 방법입니다.
빌키 생성(키 값 생성) -> 키 값을 통한 빌링 결제를 함으로 자동결제가 이루어집니다.
빌키 생성
URL: https://api.weroutefincorp.com/api/v2/pay/bill-key
빌키 생성 흐름도
예시 요청:
const params = {
'mid' : mid,
'tid' : tid,
'ord_num' : ord_num,
'buyer_name' : buyer_name,
'buyer_phone' : buyer_phone,
'buyer_email' : buyer_email,
'is_send_email' : is_send_email,
'card_num' : card_num,
'yymm' : yymm,
'auth_num' : auth_num,
'card_pw' : card_pw,
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${pay_key}`,
};
const res = $.post('/api/v2/pay/bill-key', params, headers);
use Illuminate\Support\Facades\Http;
$params = [
'mid' => mid,
'tid' => '',
'ord_num' => ord_num,
'buyer_name'=> buyer_name,
'buyer_phone'=> buyer_phone,
'buyer_email'=> buyer_email,
'is_send_email'=> is_send_email,
'card_num'=> card_num,
'yymm'=> yymm,
'auth_num'=> auth_num,
'card_pw'=> card_pw,
];
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => $pay_key,
];
$response = Http::withHeaders($headers)->post('https://api.weroutefincorp.com/api/v2/pay/bill-key', $params);
import base64
params = {
'mid' : mid,
'tid' : tid,
'ord_num' : ord_num,
'buyer_name' : buyer_name,
'buyer_phone' : buyer_phone,
'buyer_email' : buyer_email,
'is_send_email' : is_send_email,
'card_num' : card_num,
'yymm' : yymm,
'auth_num' : auth_num,
'card_pw' : card_pw,
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': pay_key
}
response = requests.post('https://api.weroutefincorp.com/api/v2/pay/bill-key', json=params, headers=headers)
import org.springframework.web.reactive.function.client.WebClient;
Map<String, Object> params = new HashMap<>();
params.put("mid", mid);
params.put("ord_num", ord_num);
params.put("buyer_name", buyer_name);
params.put("buyer_phone", buyer_phone);
params.put("buyer_email", buyer_email);
params.put("is_send_email", is_send_email);
params.put("card_num", card_num);
params.put("yymm", yymm);
params.put("auth_num", auth_num);
params.put("card_pw", card_pw);
Map<String, Object> jsonMap = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
String base64Encoded = Base64.getEncoder().encodeToString(jsonString.getBytes());
WebClient client = WebClient.builder()
.baseUrl("https://api.weroutefincorp.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("Authorization", payKey)
.build();
Mono<String> response = client.post()
.uri("/api/v2/pay/bill-key")
.bodyValue(params)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("API Error")))
.bodyToMono(String.class);
빌키 생성 요청 규격
요구 헤더명 | 요구 내용 | 비고 |
---|---|---|
Accept | application/json | |
Content-Type | application/json | |
Authorization | ${pay_key} | 위루트내에서 등록한 온라인 결제 KEY |
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
주문번호 | ord_num | O | 50 | |
구매자명 | buyer_name | O | 50 | |
구매자 전화번호 | buyer_phone | O | 20 | 요청포멧:01000000000 |
구매자 이메일 | buyer_email | X | 20 | |
이메일 발송여부 | is_send_email | O | 1 | |
카드번호 | card_num | O | 20 | |
유효기간 | yymm | O | 4 | 2509 |
카드 소유자 번호 | auth_num | O | 12 | 카드 소유자 생년월일 6자리(YYMMDD), 또는 사업자 번호 |
카드비밀번호 | card_pw | O | 2 | 카드비밀번호 앞 2자리 |
빌키 생성 응답 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | |
가맹점 ID | bill_key | O | 50 | 위루트내에서 사용 가능한 빌키 |
발급사명 | issuer | O | 50 | 발급사명 |
거래번호 | trx_id | O | 100 | |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
주문번호 | ord_num | O | 50 |
빌키 삭제
URL: https://api.weroutefincorp.com/api/v2/pay/bill-key
빌키 삭제 흐름도
예시 요청:
const params = {
'mid' : mid,
'ord_num' : ord_num,
'bill_key' : bill_key,
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${pay_key}`,
};
const res = $.delete('/api/v2/pay/bill-key', params, headers);
use Illuminate\Support\Facades\Http;
$params = [
'mid' => mid,
'ord_num' => ord_num,
'bill_key' => 'bill_key',
];
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => $pay_key,
];
$response = Http::withHeaders($headers)->delete('https://api.weroutefincorp.com/api/v2/pay/bill-key', $params);
import base64
params = {
'mid' : mid,
'ord_num' : ord_num,
'bill_key' : bill_key,
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': pay_key
}
response = requests.delete('https://api.weroutefincorp.com/api/v2/pay/bill-key', json=params, headers=headers)
import org.springframework.web.reactive.function.client.WebClient;
Map<String, Object> params = new HashMap<>();
params.put("mid", mid);
params.put("ord_num", ord_num);
Map<String, Object> jsonMap = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
String base64Encoded = Base64.getEncoder().encodeToString(jsonString.getBytes());
WebClient client = WebClient.builder()
.baseUrl("https://api.weroutefincorp.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("Authorization", payKey)
.build();
Mono<String> response = client.delete()
.uri("/api/v2/pay/bill-key")
.bodyValue(params)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("API Error")))
.bodyToMono(String.class);
빌키 삭제 요청 규격
요구 헤더명 | 요구 내용 | 비고 |
---|---|---|
Accept | application/json | |
Content-Type | application/json | |
Authorization | ${pay_key} | 위루트내에서 등록한 온라인 결제 KEY |
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
주문번호 | ord_num | O | 50 | |
빌키 | bill_key | O | 100 |
빌키 삭제 응답 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |
주문번호 | ord_num | O | 50 |
빌링 결제
URL: https://api.weroutefincorp.com/api/v2/pay/bill-key/hand
빌키 삭제 흐름도
예시 요청:
const params = {
'mid' : mid,
'tid' : tid,
'ord_num' : ord_num,
'buyer_name' : buyer_name,
'buyer_phone' : buyer_phone,
'installment' : installment,
'item_name' : item_name,
'bill_key' : bill_key,
'amount' : amount,
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `${pay_key}`,
};
const res = $.post('/api/v2/pay/bill-key/hand', params, headers);
use Illuminate\Support\Facades\Http;
$params = [
'mid' => mid,
'tid' => '',
'ord_num' => ord_num,
'buyer_name'=> buyer_name,
'buyer_phone'=> buyer_phone,
'installment'=> installment,
'item_name'=> item_name,
'bill_key'=> bill_key,
'amount'=> amount,
];
$headers = [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => $pay_key,
];
$response = Http::withHeaders($headers)->post('https://api.weroutefincorp.com/api/v2/pay/bill-key/hand', $params);
import base64
params = {
'mid' : mid,
'tid' : tid,
'ord_num' : ord_num,
'buyer_name' : buyer_name,
'buyer_phone' : buyer_phone,
'installment' : installment,
'item_name' : item_name,
'bill_key' : bill_key,
'amount' : amount,
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': pay_key
}
response = requests.post('https://api.weroutefincorp.com/api/v2/pay/bill-key/hand', json=params, headers=headers)
import org.springframework.web.reactive.function.client.WebClient;
Map<String, Object> params = new HashMap<>();
params.put("mid", mid);
params.put("ord_num", ord_num);
params.put("buyer_name", buyer_name);
params.put("buyer_phone", buyer_phone);
params.put("installment", installment);
params.put("item_name", item_name);
params.put("bill_key", bill_key);
params.put("amount", amount);
Map<String, Object> jsonMap = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonMap);
String base64Encoded = Base64.getEncoder().encodeToString(jsonString.getBytes());
WebClient client = WebClient.builder()
.baseUrl("https://api.weroutefincorp.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("Authorization", payKey)
.build();
Mono<String> response = client.post()
.uri("/api/v2/pay/bill-key/hand")
.bodyValue(params)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("API Error")))
.bodyToMono(String.class);
요구 헤더명 | 요구 내용 | 비고 |
---|---|---|
Accept | application/json | |
Content-Type | application/json | |
Authorization | ${pay_key} | 위루트내에서 등록한 온라인 결제 KEY |
빌링 결제 요청 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
주문번호 | ord_num | O | 50 | |
구매자명 | buyer_name | O | 50 | |
구매자 전화번호 | buyer_phone | O | 20 | 요청포멧:01000000000 |
할부개월 | installment | O | 2 | 요청포멧:00 |
상품명 | item_name | O | 100 | |
빌키 | bill_key | O | 100 | 빌키 생성 API를 통해 발급받은 빌키 |
결제금액 | amount | O | 11 |
빌링 결제 응답 규격
필드명 | 필드 ID | 필수여부 | 최대길이(byte) | 비고 |
---|---|---|---|---|
결과 코드 | result_cd | O | 4 | 성공시: 0000, 이외 에러코드 |
결과 메세지 | result_msg | O | 50 | |
가맹점 ID | mid | O | 50 | 위루트내에서 등록한 MID |
단말기 ID | tid | X | 50 | 위루트내에서 등록한 TID |
거래금액 | amount | O | 11 | |
가맹점 주문번호 | ord_num | O | 50 | |
승인번호 | appr_num | O | 20 | |
상품명 | item_name | O | 100 | |
거래번호 | trx_id | O | 100 | 취소시 사용됩니다. |
매입사명 | acquirer | O | 20 | |
발급사명 | issuer | O | 20 | |
카드번호 | card_num | O | 20 | PG사에 따라서 빈 값으로 값이 들어올 수 있습니다.(응답포멧: 1111******1111) |
할부기간 | installment | O | 2 | |
결제방식 | method | O | 10 | 응답포멧:수기 |
거래시간 | trx_dttm | O | 20 | 응답 포멧: 2023-04-30 11:11:11 |