james
james3w ago

가상계좌 입금알림 콜백처리하는 예제 소스를 알수 있을까요?

json 데이터를 어떻게 넘겨 주시는 지 궁금하고, 이것을 어떻게 파싱해서 사용해야 하는 지 알려주세요.
22 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee3w ago
어떤 언어 사용하시나요 ?
james
jamesOP3w ago
java 사용합니다
이실장
이실장3w ago
{
"createdAt": "2022-01-01T00:00:00.000000",
"secret": "feuRcZGKlQkWV-m6py_Jg",
"status": "DONE",
"transactionKey": "9FF15E1A29D0E77C218F57262BFA4986",
"orderId": "a1GHoX_X1Y_u0NYamEHRT"
}
{
"createdAt": "2022-01-01T00:00:00.000000",
"secret": "feuRcZGKlQkWV-m6py_Jg",
"status": "DONE",
"transactionKey": "9FF15E1A29D0E77C218F57262BFA4986",
"orderId": "a1GHoX_X1Y_u0NYamEHRT"
}
데이터는 이렇게 전달드려요.. orderId기준으로 매핑해서 사용하시면됩니다.
james
jamesOP3w ago
네, 감사합니다. 그러면 @RequestBody String jsonBody 이렇게 받아서 파싱하면 될까요?
김차장
김차장3w ago
dto 를 사용해주세요. String 으로만 받으면 json 객체의 type 을 수용할 수가 없습니다
james
jamesOP3w ago
앗, 메소드 파라미터에서 @RequestBody String jsonBody 로 받아 JSONParser 로 파싱려고 했는데, 그러면 안되는 건가요? @RequestBody CallbackPayload payload 이렣게 받아야 하나요? 예제 코드가 없어서 json 데이터를 어떻게 처리해야 할지 고민입니다.
김차장
김차장3w ago
어떻게 하셔도 서비스만 되면 상관없습니다. 저는 common 한 케이스를 말씀드렸어요. 사실 문의주시는 내용이 결제나 결제관련 개발과는 관련도가 적어서 확정적인 답변을 드리기가 어렵습니다.
james
jamesOP3w ago
위와 같은 데이터를 메소드 파라미터에서 어떻게 받고 파싱하면 좋을까요?
이실장
이실장3w ago
개발자신가요?
james
jamesOP3w ago
이실장
이실장3w ago
지금 질문하시는게 어떤건가요? JAVA를 이용해서 json데이터를 어떻게 받는지를 문의하시는건가요?
james
jamesOP3w ago
사용자가 가상계좌 결제를 하고 입금했을 때 토스에서 보내주는 콜백 json 데이터를 받아서 입금완료 처리를 해야 하는데요. json 데이터를 보내준다고만 했지 이것을 어떻게 받아서 파싱하여야 할지 이부분에 경험이 없어서 고민입니다
김차장
김차장3w ago
웹훅 경험이 없으신거같군요
james
jamesOP3w ago
네, 맞아요 현재 구현해본 소스의 앞부분만 보여드리면 @RequestMapping(value="/virtualAccountCallback.do") public ResponseEntity<String> virtualAccountCallback(@RequestBody String jsonBody) throws IOException { this.init();//클래스 초가화 int httpStatus = 200; JSONParser parser = new JSONParser(); try { JSONObject requestData = (JSONObject) parser.parse(jsonBody);// 클라이언트에서 받은 JSON 요청 바디 String status = (String) requestData.get("status"); String orderId = (String) requestData.get("orderId"); String secret = (String) requestData.get("secret"); System.out.println("가상계좌 콜백처리(status) : "+ status);
김차장
김차장3w ago
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
public class WebhookController {

@PostMapping("/webhook")
public ResponseEntity<String> handleWebhook(@RequestBody Map<String, Object> payload) {
// Log or process the received payload
System.out.println("Received payload: " + payload);

// Example: Extract specific fields from the payload
String createdAt = (String) payload.get("createdAt");
String secret = (String) payload.get("secret");
String status = (String) payload.get("status");
String transactionKey = (String) payload.get("transactionKey");
String orderId = (String) payload.get("orderId");

// Add any specific logic here (e.g., saving to a database, triggering another service, etc.)
System.out.println("Order ID: " + orderId + ", Status: " + status);

// Respond with a success message
return new ResponseEntity<>("Webhook processed successfully", HttpStatus.OK);
}
}
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
public class WebhookController {

@PostMapping("/webhook")
public ResponseEntity<String> handleWebhook(@RequestBody Map<String, Object> payload) {
// Log or process the received payload
System.out.println("Received payload: " + payload);

// Example: Extract specific fields from the payload
String createdAt = (String) payload.get("createdAt");
String secret = (String) payload.get("secret");
String status = (String) payload.get("status");
String transactionKey = (String) payload.get("transactionKey");
String orderId = (String) payload.get("orderId");

// Add any specific logic here (e.g., saving to a database, triggering another service, etc.)
System.out.println("Order ID: " + orderId + ", Status: " + status);

// Respond with a success message
return new ResponseEntity<>("Webhook processed successfully", HttpStatus.OK);
}
}
이걸로 써보세요, 제가 만든코드는 아니고 GPT 시켰어요
james
jamesOP3w ago
아, 맵으로 받으면 json 데이터가 자동을 파싱되어 맵에 매핑이 되나요?
김차장
김차장3w ago
프로젝트에 넣으신다음 가상계좌 결제부터 테스트를 하지마시구 postman 같은 툴로 데이터를 쏴보세요
james
jamesOP3w ago
일단은 너무 감사합니다
김차장
김차장3w ago
좋은 서비스 만드시길 바랍니다. 감사는 GPT 에게 돌리겠습니다 🙏
james
jamesOP3w ago
감사합니다. ^^
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?