토스를 통한 결제 서비스를 사용하기 위한 API입니다.
토스페이를 활용한 개발을 처음 시작하신다면, 좀 더 친절한 안내를 먼저 확인해보세요!
토스페이 개발 가이드는 수시로 업데이트 됩니다. 사전 예고없이 업데이트 될 수 있으니 지속적으로 확인해 주시길 부탁드립니다.
>> '토스페이 시작하기' 문서로 바로가기
토스페이 서비스를 지원하는 브라우저는 다음과 같습니다.
PC 브라우저, Android, iOS 모두 TLS 1.2 이상의 환경에서 동작이 가능하며, 디바이스 같은 경우 토스 앱의 최소 지원 버전 기준입니다.
토스 앱 최신버전이 아닌 경우, 결제 진행이 원활하지 않을 수 있으니 가급적 최신 버전의 토스앱을 이용해 주시길 부탁드립니다.
토스페이는 iframe 방식을 공식적으로 지원하지 않습니다.
iframe 방식을 이용하는 경우 결제가 원활하지 않을 수 있으므로 페이지 전환방식의 연동을 권장드립니다.
또한, 토스페이는 기본적으로 Server to Server 호출 방식을 지향합니다.
웹 브라우저를 통하여 클라이언트 단에서 토스 도메인으로 직접 결제 API를 호출하는 방식을 사용할 경우,
결제와 관련된 데이터가 외부에 노출되어 보안사고가 발생할 수 있으니 유의해 주시길 부탁드립니다.
결제 건이 생성된 후, 결제가 진행됨에 따라 결제 상태가 변경되며, 각 결제 상태마다 판매자 또는 구매자가 요청할 수 있는 행동도 변합니다. 아래는 결제 상태 목록과 각 상태에 대한 설명입니다.
결제 건을 생성합니다.
결제 생성 완료 후, 구매자의 결제 인증을 얻어 완료처리하는 방법은 아래 문서를 참고하세요.
토스페이 시작하기 > 3. 구매자 인증 받기
TOSS_MONEY | 결제수단 중 토스머니만 노출 |
CARD | 결제수단 중 카드만 노출 |
null 혹은 그 외의 값 | 상점에 설정된 기본 결제수단으로 노출 |
CULTURE | 문화비 |
GENERAL | 일반(default) |
PUBLIC_TP | 교통비 |
USE | 할부 사용(default) |
NOT_USE | 할부 미사용 |
0 | 성공 |
-1 | 실패 (실패사유는 msg와 errorCode 제공) |
POST https://pay.toss.im/api/v2/payments
curl https://pay.toss.im/api/v2/payments \ -H "Content-Type: application/json" \ -d '{ "orderNo":"1", "amount":10000, "amountTaxFree":0, "productDesc":"테스트결제", "apiKey":"sk_test_w5lNQylNqa5lNQe013Nq", "autoExecute":true, "resultCallback":"https://YOUR-SITE.COM/callback", "callbackVersion":"V2", "retUrl": "http://YOUR-SITE.COM/ORDER-CHECK?orderno=1", "retCancelUrl": "http://YOUR-SITE.COM/close" }'
import java.nio.charset.StandardCharsets; URL url = null; URLConnection connection = null; StringBuilder responseBody = new StringBuilder(); try { url = new URL("https://pay.toss.im/api/v2/payments"); connection = url.openConnection(); connection.addRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); org.json.simple.JSONObject jsonBody = new JSONObject(); jsonBody.put("orderNo", "1"); jsonBody.put("amount", 10000); jsonBody.put("amountTaxFree", 0); jsonBody.put("productDesc", "테스트 결제"); jsonBody.put("apiKey", "sk_test_w5lNQylNqa5lNQe013Nq"); jsonBody.put("autoExecute", true); jsonBody.put("resultCallback", "http://"http://YOUR-SITE.COM/callback"); jsonBody.put("callbackVersion", "V2"); jsonBody.put("retUrl", "http://YOUR-SITE.COM/ORDER-CHECK?orderno=1"); jsonBody.put("retCancelUrl", "http://YOUR-SITE.COM/close"); BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream()); bos.write(jsonBody.toJSONString().getBytes(StandardCharsets.UTF_8)); bos.flush(); bos.close(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); String line = null; while ((line = br.readLine()) != null) { responseBody.append(line); } br.close(); } catch (Exception e) { responseBody.append(e); } System.out.println(responseBody.toString());
$arrayBody = array(); $arrayBody["orderNo"] = "1"; $arrayBody["amount"] = 10000; $arrayBody["amountTaxFree"] = 0; $arrayBody["productDesc"] = "테스트 결제"; $arrayBody["apiKey"] = "sk_test_w5lNQylNqa5lNQe013Nq"; $arrayBody["autoExecute"] = true; $arrayBody["resultCallback"] = "http://YOUR-SITE.COM/callback"; $arrayBody["callbackVersion"] = "V2"; $arrayBody["retUrl"] = "http://YOUR-SITE.COM/ORDER-CHECK?orderno=1"; $arrayBody["retCancelUrl"] = "http://YOUR-SITE.COM/close"; $jsonBody = json_encode($arrayBody); $ch = curl_init('https://pay.toss.im/api/v2/payments'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($jsonBody)) ); $result = curl_exec($ch); curl_close($ch); echo "Response: ".$result;
Dim data, httpRequest, postResponse data = "apiKey=sk_test_w5lNQylNqa5lNQe013Nq" data = data & "&orderNo=1" data = data & "&amount=10000" data = data & "&amountTaxFree=0" data = data & "&productDesc=ASPtestProduct" data = data & "&autoExecute=true" data = data & "&resultCallback=http://YOUR-SITE.COM/callback" data = data & "&callbackVersion=V2" data = data & "&retUrl=http://YOUR-SITE.COM/ORDER-CHECK?orderno=1" data = data & "&retCancelUrl=http://YOUR-SITE.COM/close" Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") httpRequest.Open "POST", "https://pay.toss.im/api/v2/payments", False httpRequest.SetRequestHeader "Content-Type", "application/json" httpRequest.Send data postResponse = httpRequest.ResponseText Response.Write postResponse
import urllib, urllib2 url = "https://pay.toss.im/api/v2/payments" params = { "orderNo": "1", "amount": 10000, "amountTaxFree": 0, "productDesc":"테스트 결제", "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq", "autoExecute": true, "resultCallback": "http://YOUR-SITE.COM/callback", "callbackVersion": "V2", "retUrl": "http://YOUR-SITE.COM/ORDER-CHECK?orderno=1", "retCancelUrl": "http://YOUR-SITE.COM/close" } response = urllib.urlopen(url, urllib.urlencode(params)) print(response.read())
require 'net/http' require 'json' uri = URI.parse("https://pay.toss.im/api/v2/payments") params = { "orderNo" => "1", "amount"=> 10000, "amountTaxFree"=> 0, "productDesc" => "테스트 결제", "apiKey" => "sk_test_w5lNQylNqa5lNQe013Nq", "autoExecute" => true, "resultCallback" => "http://YOUR-SITE.COM/callback", "callbackVersion" => "V2", "retUrl": "http://YOUR-SITE.COM/ORDER-CHECK?orderno=1", "retCancelUrl": "http://YOUR-SITE.COM/close" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.path) request.set_form_data(params) response = http.request(request) p JSON.parse(response.body)
{"code":0,"checkoutPage":"https://pay.toss.im/payfront/auth?payToken=example-payToken","payToken":"example-payToken"}
결제 처리가 완료되면 결제 상태가 변경되고, 토스는 가맹점 서버로 변경 사항을 알려드립니다.
결제완료 callback을 받았을 때, 결제완료 상태를 변경하시고 재고차감 등의 로직을 처리해 주세요.
자동 승인 설정 시 (autoExecute가 true) 필수적으로 활용해야 합니다.
* callback 연동 전, 방화벽 정보를 반드시 확인해 주세요!
* 생성된 결제 건에 resultCallback 파라미터 값이 있을 경우에만 동작합니다.
* 아래는 callback V2버전이며, 가맹점 측에서는 최신버전의 callback 을 이용해 주시길 부탁드립니다. (callbackVersion 설명참고)
* 사전 예고 없이 field 가 추가될 수 있습니다. 추가되더라도 오류가 발생하지 않도록 연동 부탁드립니다.
TOSS_MONEY | 토스머니 |
CARD | 카드 |
true | 무이자 |
false | 일반 |
CREDIT | 신용카드 |
CHECK | 체크카드 |
PREPAYMENT | 선불카드 |
PERSONAL | 본인 카드 |
PERSONAL_FAMILY | 가족 카드 |
CORP_PERSONAL | 법인지정 결제계좌 임직원 |
CORP_PRIVATE | 법인 공용 |
CORP_COMPANY | 법인지정 결제계좌 회사(하나카드만) |
POST https://YOUR-SITE.COM/callback (결제 생성 시 가맹점에서 설정한 callback URL)
Content-Type application/json;charset=UTF-8
{
"status": "PAY_COMPLETE",
"payToken": "example-payToken",
"orderNo": "1",
"payMethod": "CARD",
"amount": 3000,
"discountedAmount": 600,
"paidAmount": 2300,
"paidTs": "2020-04-03 14:22:37",
"transactionId" : "dc3b951a-9781-462e-ab5a-b8a0bea0222a",
"cardCompanyCode": 3,
"cardAuthorizationNo": "87654321",
"spreadOut": 0,
"noInterest": false,
"cardMethodType": "CREDIT",
"cardUserType": "PERSONAL",
"cardNumber": "654321******1234",
"cardBinNumber": "654321",
"cardNum4Print": "1234",
"salesCheckLinkUrl": "https://pay.toss.im/payfront/web/external/sales-check?payToken=example-payToken&transactionId=2da1ca05-d91d-410f-976d-7a610242da8a",
//"paidPoint": 0, // 2020.08.06 이후 fadeout 된 레거시 포인트 금액으로 0원으로 나감
}
자동 승인 설정을 false로 사용하는 가맹점에서만 처리하는 로직입니다.
구매자 인증 완료 상태(PAY_APPROVED)의 결제 건을 가맹점이 주체가 되어 최종 승인하고 결제를 완료 처리합니다.
결제 승인에 관한 자세한 내용은 아래 문서를 참고하세요.
토스페이 시작하기 > 결제 승인하기
필수 파라미터는 딱 2가지 입니다. '어느 가맹점'에서 '어떤 결제건'을 최종 승인할지 알려주세요.
필요에 따라 결제건의 유효성 검증을 할 수 있습니다.
* 사전 예고 없이 Response field 가 추가될 수 있습니다. 추가되더라도 오류가 발생하지 않도록 연동 부탁드립니다.
0 | 성공 |
-1 | 실패 (실패사유는 msg와 errorCode로 제공) |
LIVE | 실거래용 |
TEST | 테스트용 |
TOSS_MONEY | 토스머니 |
CARD | 카드 |
cardCompanyName | cardCompanyCode |
신한 | 1 |
현대 | 2 |
삼성 | 3 |
국민 | 4 |
롯데 | 5 |
하나 | 6 |
우리 | 7 |
농협 | 8 |
씨티 (현재 미지원) | 9 |
비씨(BC) | 10 |
true | 무이자 |
false | 일반 |
CREDIT | 신용카드 |
CHECK | 체크카드 |
PREPAYMENT | 선불카드 |
PERSONAL | 본인 카드 |
PERSONAL_FAMILY | 가족 카드 |
CORP_PERSONAL | 법인지정 결제계좌 임직원 |
CORP_PRIVATE | 법인 공용 |
CORP_COMPANY | 법인지정 결제계좌 회사(하나카드만) |
PAYMENT_EXISTING_PAYMENT | 이미 존재하는 결제입니다. |
COMMON_INVALID_API_KEY | 바르지 않은 API key 입니다. |
COMMON_BREAK_TIME_OF_BANK | 지금은 은행 점검 시간입니다. 점검이 끝난 후 사용해주세요. |
그 외의 에러 코드 |
POST https://pay.toss.im/api/v2/execute
curl "https://pay.toss.im/api/v2/execute" \ -H "Content-Type: application/json" \ -d '{ "payToken":"example-payToken", "apiKey":"sk_test_w5lNQylNqa5lNQe013Nq" }'
import java.nio.charset.StandardCharsets; URL url = null; URLConnection connection = null; StringBuilder responseBody = new StringBuilder(); try { url = new URL("https://pay.toss.im/api/v2/execute"); connection = url.openConnection(); connection.addRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); org.json.simple.JSONObject jsonBody = new JSONObject(); jsonBody.put("payToken", "example-payToken"); jsonBody.put("apiKey", "sk_test_w5lNQylNqa5lNQe013Nq"); BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream()); bos.write(jsonBody.toJSONString().getBytes(StandardCharsets.UTF_8)); bos.flush(); bos.close(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); String line = null; while ((line = br.readLine()) != null) { responseBody.append(line); } br.close(); } catch (Exception e) { responseBody.append(e); } System.out.println(responseBody.toString());
$arrayBody = array(); $arrayBody["payToken"] = "example-payToken"; $arrayBody["apiKey"] = "sk_test_w5lNQylNqa5lNQe013Nq"; $jsonBody = json_encode($arrayBody); $ch = curl_init('https://pay.toss.im/api/v2/execute'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($jsonBody)) ); $result = curl_exec($ch); curl_close($ch); echo "Response: ".$result;
Dim data, httpRequest, postResponse data = "apiKey=sk_test_w5lNQylNqa5lNQe013Nq" data = data & "&payToken=example-payToken" Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") httpRequest.Open "POST", "https://pay.toss.im/api/v2/execute", False httpRequest.SetRequestHeader "Content-Type", "application/json" httpRequest.Send data postResponse = httpRequest.ResponseText Response.Write postResponse
import urllib, urllib2 url = "https://pay.toss.im/api/v2/execute" params = { "payToken": "example-payToken", "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq" } response = urllib.urlopen(url, urllib.urlencode(params)) print(response.read())
require 'net/http' require 'json' uri = URI.parse("https://pay.toss.im/api/v2/execute") params = { "payToken" => "example-payToken", "apiKey" => "sk_test_w5lNQylNqa5lNQe013Nq" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.path) request.set_form_data(params) response = http.request(request) p JSON.parse(response.body)
{
"code": 0,
"mode": "LIVE",
"orderNo": "TossTest20190718",
"amount": 2000,
"approvalTime": "2019-07-18 11:28:02",
"stateMsg": "결제 완료",
"discountedAmount": 0,
"paidAmount": 2000,
"payMethod": "CARD", //"TOSS_MONEY"
"payToken": "example-payToken",
"transactionId": "2da1ca05-d91d-410f-976d-7a610242da8a",
//payMethod 가 CARD 일때
"cardCompanyCode": 3,
"cardCompanyName": "삼성",
"cardAuthorizationNo": "87654321",
"spreadOut": 0,
"noInterest": false,
"salesCheckLinkUrl": "https://pay.toss.im/payfront/web/external/sales-check?payToken=example-payToken&transactionId=2da1ca05-d91d-410f-976d-7a610242da8a",
"cardMethodType": "CREDIT",
"cardNumber": "654321******1234"
"cardUserType": "PERSONAL",
"cardNum4Print": "1234",
"cardBinNumber": "654321"
//payMethod 가 TOSS_MONEY 일때
//"cashReceiptMgtKey": "0123456-abcd-9abcd0Df",
//"accountBankCode" : "88",
//"accountBankName" : "신한은행",
//"accountNumber" : "110******676"
}
결제 완료 건의 결제 금액 중 일부 또는 전부를 구매자에게 돌려줍니다.
기 환불처리된 거래는 원복이 불가하오니 환불전 반드시 가맹점 측의 체크가 필요합니다.
* 사전 예고 없이 Response field 가 추가될 수 있습니다. 추가되더라도 오류가 발생하지 않도록 연동 부탁드립니다.
0 | 성공 |
-1 | 실패 (실패사유는 msg와 errorCode로 제공) |
CREDIT | 신용카드 |
CHECK | 체크카드 |
PREPAYMENT | 선불카드 |
PERSONAL | 본인 카드 |
PERSONAL_FAMILY | 가족 카드 |
CORP_PERSONAL | 법인지정 결제계좌 임직원 |
CORP_PRIVATE | 법인 공용 |
CORP_COMPANY | 법인지정 결제계좌 회사(하나카드만) |
INACTIVE_USER | 탈퇴한 사용자입니다. 환불이 불가능합니다. |
COMMON_REFUND_ERROR | 환불이 불가능한 상태입니다. |
REFUND_EXCEED_DAILY | 환불 금액이 상점의 일일 환불 한도보다 클 수 없습니다. |
그 외의 에러 코드 |
POST https://pay.toss.im/api/v2/refunds
curl "https://pay.toss.im/api/v2/refunds" \ -H "Content-Type: application/json" \ -d '{ "payToken":"example-payToken", "apiKey":"sk_test_w5lNQylNqa5lNQe013Nq" }'
import java.nio.charset.StandardCharsets; URL url = null; URLConnection connection = null; StringBuilder responseBody = new StringBuilder(); try { url = new URL("https://pay.toss.im/api/v2/refunds"); connection = url.openConnection(); connection.addRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); org.json.simple.JSONObject jsonBody = new JSONObject(); jsonBody.put("payToken", "example-payToken"); jsonBody.put("amount", "5000"); jsonBody.put("apiKey", "sk_test_w5lNQylNqa5lNQe013Nq"); BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream()); bos.write(jsonBody.toJSONString().getBytes(StandardCharsets.UTF_8)); bos.flush(); bos.close(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); String line = null; while ((line = br.readLine()) != null) { responseBody.append(line); } br.close(); } catch (Exception e) { responseBody.append(e); } System.out.println(responseBody.toString());
$arrayBody = array(); $arrayBody["payToken"] = "example-payToken"; $arrayBody["amount"] = 5000; $arrayBody["apiKey"] = "sk_test_w5lNQylNqa5lNQe013Nq"; $jsonBody = json_encode($arrayBody); $ch = curl_init('https://pay.toss.im/api/v2/refunds'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($jsonBody)) ); $result = curl_exec($ch); curl_close($ch); echo "Response: ".$result;
Dim data, httpRequest, postResponse data = "apiKey=sk_test_w5lNQylNqa5lNQe013Nq" data = data & "&payToken=example-payToken" data = data & "&amount=1000" Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") httpRequest.Open "POST", "https://pay.toss.im/api/v2/refunds", False httpRequest.SetRequestHeader "Content-Type", "application/json" httpRequest.Send data postResponse = httpRequest.ResponseText Response.Write postResponse
import urllib, urllib2 url = "https://pay.toss.im/api/v2/refunds" params = { "payToken": "example-payToken", "amount": 5000, "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq" } response = urllib.urlopen(url, urllib.urlencode(params)) print(response.read())
require 'net/http' require 'json' uri = URI.parse("https://pay.toss.im/api/v2/refunds") params = { "payToken" => "example-payToken", "amount"=> 5000, "apiKey" => "sk_test_w5lNQylNqa5lNQe013Nq" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.path) request.set_form_data(params) response = http.request(request) p JSON.parse(response.body)
{
"code": 0,
"refundNo": "3243c76e-e9cf-4669-881b-33a3b82ddf49",
"approvalTime": "2020-04-29 11:32:52",
"cashReceiptMgtKey": "0123456-abcd-9abcd0Df",
"refundableAmount": 2000,
"discountedAmount": 0,
"paidAmount": 1000,
"refundedAmount": -2000,
"refundedDiscountAmount": 0,
"refundedPaidAmount": -2000,
"payToken": "example-payToken",
"transactionId": "3243c76e-e9cf-4669-881b-33a3b82ddf49"
"cardMethodType": "CREDIT",
"cardNumber": "654321******1234"
"cardUserType": "PERSONAL",
"cardNum4Print": "1234",
"cardBinNumber": "654321"
//payMethod 가 TOSS_MONEY 일때
//"cashReceiptMgtKey": "0123456-abcd-9abcd0Df",
//"accountBankCode" : "88",
//"accountBankName" : "신한은행",
//"accountNumber" : "110******676"
}
생성된 결제건의 거래 상태와 거래 트랜잭션을 조회할 수 있습니다.
상황에 따라, 승인 혹은 환불 응답을 수신하지 못한 경우에도 활용 가능합니다.
* 사전 예고 없이 Response field 가 추가될 수 있습니다. 추가되더라도 오류가 발생하지 않도록 연동 부탁드립니다.
0 | 성공 |
-1 | 실패 (실패사유는 msg와 errorCode로 제공) |
LIVE | 실거래용 |
TEST | 테스트용 |
PAY_STANDBY | 결제 대기 중 |
PAY_APPROVED | 구매자 인증 완료 |
PAY_CANCEL | 결제 취소 |
PAY_PROGRESS | 결제 진행 중 |
PAY_COMPLETE | 결제 완료 |
REFUND_PROGRESS | 환불 진행 중 |
REFUND_SUCCESS | 환불 성공 |
SETTLEMENT_COMPLETE | 정산 완료 |
SETTLEMENT_REFUND_COMPLETE | 환불 정산 완료 |
TOSS_MONEY | 토스머니 |
CARD | 카드 |
true | 무이자 |
false | 일반 |
CREDIT | 신용카드 |
CHECK | 체크카드 |
PREPAYMENT | 선불카드 |
PERSONAL | 본인 카드 |
PERSONAL_FAMILY | 가족 카드 |
CORP_PERSONAL | 법인지정 결제계좌 임직원 |
CORP_PRIVATE | 법인 공용 |
CORP_COMPANY | 법인지정 결제계좌 회사(하나카드만) |
PAY | 결제 |
REFUND | 환불 |
POST https://pay.toss.im/api/v2/status
curl "https://pay.toss.im/api/v2/status" \ -H "Content-Type: application/json" \ -d '{ "payToken":"example-payToken", "apiKey":"sk_test_w5lNQylNqa5lNQe013Nq" }'
import java.nio.charset.StandardCharsets; URL url = null; URLConnection connection = null; StringBuilder responseBody = new StringBuilder(); try { url = new URL("https://pay.toss.im/api/v2/status"); connection = url.openConnection(); connection.addRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); org.json.simple.JSONObject jsonBody = new JSONObject(); jsonBody.put("orderNo", "1"); jsonBody.put("apiKey", "sk_test_w5lNQylNqa5lNQe013Nq"); BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream()); bos.write(jsonBody.toJSONString().getBytes(StandardCharsets.UTF_8)); bos.flush(); bos.close(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); String line = null; while ((line = br.readLine()) != null) { responseBody.append(line); } br.close(); } catch (Exception e) { responseBody.append(e); } System.out.println(responseBody.toString());
$arrayBody = array(); $arrayBody["orderNo"] = "1"; $arrayBody["apiKey"] = "sk_test_w5lNQylNqa5lNQe013Nq"; $jsonBody = json_encode($arrayBody); // echo "Request: ".$request."
"; $ch = curl_init('https://pay.toss.im/api/v2/status'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($jsonBody)) ); $result = curl_exec($ch); curl_close($ch); echo "Response: ".$result;Dim data, httpRequest, postResponse data = "apiKey=sk_test_w5lNQylNqa5lNQe013Nq" data = data & "&orderNo=1" Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") httpRequest.Open "POST", "https://pay.toss.im/api/v2/status", False httpRequest.SetRequestHeader "Content-Type", "application/json" httpRequest.Send data postResponse = httpRequest.ResponseText Response.Write postResponse
import urllib, urllib2 url = "https://pay.toss.im/api/v2/status" params = { "orderNo": "1", "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq" } response = urllib.urlopen(url, urllib.urlencode(params)) print(response.read())
require 'net/http' require 'json' uri = URI.parse("https://pay.toss.im/api/v2/status") params = { "orderNo" => "1", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.path) request.set_form_data(params) response = http.request(request) p JSON.parse(response.body)
{
"code": 0,
"mode": "LIVE",
"payToken": "rDgrfe4YRBnTNLo5lwpqb9",
"orderNo": "TEST-2023-02-09T06:44:04.217Z",
"payStatus": "PAY_COMPLETE",
"payMethod": "CARD",
"amount": 1000,
"discountedAmount": 0,
"discountAmountV2": 0,
"paidPointV2": 0,
//"paidPoint": 0, // 2020.08.06 이후 fadeout 된 레거시 포인트 금액으로 0원으로 응답
"paidAmount": 1000,
"refundableAmount": 1000,
"amountTaxable": 909,
"amountTaxFree": 0,
"amountVat": 91,
"amountServiceFee": 0,
"disposableCupDeposit": 0,
//payMethod 가 TOSS_MONEY 일때
//"accountBankCode" : "88",
//"accountBankName" : "신한은행"
//"accountNumber" : "110******676"
"card": {
"noInterest": false,
"spreadOut": 0,
"cardAuthorizationNo": "30019610",
"cardMethodType": "CREDIT",
"cardUserType": "PERSONAL",
"cardNumber": "557042******700*",
"cardBinNumber": "557042",
"cardNum4Print": "700*",
"salesCheckLinkUrl": "https://staging.toss.im/payfront/web/external/sales-check?payToken=rDgrfe4YRBnTNLo5lwpqb9&transactionId=81a6bafc-b7b6-4959-82ba-e74034f379ea",
"cardCompanyName": "국민",
"cardCompanyCode": 4
},
"transactions": [
{
"stepType": "PAY",
"transactionId": "81a6bafc-b7b6-4959-82ba-e74034f379ea",
"paidAmount": 1000,
"transactionAmount": 1000,
"discountedAmount": 0,
"pointAmount": 0,
"regTs": "2023-02-09 15:44:25"
}
],
"createdTs": "2023-02-09 15:44:04",
"paidTs": "2023-02-09 15:44:24"
}