토스페이먼츠 api 결제창 호출 문의(테스트)
안녕하세요 스프링부트로 토스페이먼츠 결제 연동 기능 테스트 구현중에 질문드립니다.
사용자로 부터 결제관련 정보들을 입력받아 결제창 api를 호출하려 하는데
무조건 첨부한 사진과 같이 sdk를 추가하면 결제창이 자동으로 호출되는 건가요?
첨부한 방법말고 다른 방식으로 결제창을 호출하는 방식은 없나요?

17 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
"결제 관련 정보"가 무엇을 의미하는 걸까요?
카드번호 같은 정보를 의미하시는 거라면: 추가 계약 후 "키인 결제" 프로세스로 결제를 진행하시면 되겠습니다.
(https://docs.tosspayments.com/guides/payment-widget/integration-key-in)
키인 결제 추가하기 | 토스페이먼츠 개발자센터
결제위젯에 키인 결제를 추가하는 방법입니다. 키인 결제는 카드 번호를 입력해서 결제하는 방식입니다.
카드 번호가 아닌 일반적인 고객정보를 가지고 연동하시는 거라면 보내주신 해당 코드로 연동을 하시면 되겠습니다.
button이 클릭 되었을 떄 SDK가 호출되게 되는 방식입니다.
이해하기 | 토스페이먼츠 개발자센터
결제위젯은 토스페이먼츠에서 수많은 상점을 분석하여 만든 최적의 주문서 UI입니다. 개발자가 최초 1회만 연동하면 결제수단 추가, 디자인 수정은 코드 없이 상점관리자만으로 가능해요.
네 다름이 아니라 해당 view페이지에서 저런식의 함수 호출만 해주면 자동으로 요청이되어 url 매핑된 컨트롤러로 요청객체가 넘어가는 건가요?
어떤 컨트롤러 말씀이실까요.
결제창이 popup으로 발생합니다.
스프링부트로 구현 시에 사용자가 결제를 하고 난 이후엔 요청에 대한 응답객체를 백엔드 즉, controller에서 받아야 하지 않나요? 그래야 최종 승인요청을 보낼 수 있는 걸로 알고있는데 제가 잘못 알고 있는건가요?
결제 후에는 보내주신 successUrl로 요청을 합니다.
successUrl과 매칭되는 컨트롤러를 만드시면 됩니다.
@허밍버드
e.g.)
예 혹시 깃허브에 자바 샘플 코드는 없나요?
스프링부트 샘플은 아래 링크 참고하세요.
GitHub
payment-samples/payment-window/springboot at main · tosspayments/pa...
Contribute to tosspayments/payment-samples development by creating an account on GitHub.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
답변 감사합니다. 그런데 제가 스프링부트로 구현 중인데 결제 취소 요청시 응답으로 오는 데이터가 {
"mId": "tosspayments",
"version": "2022-11-16",
"lastTransactionKey": "nYMs_ILQiz2sfkHpQbvxT",
"paymentKey": "mh55FLTEORzZWN3kgMACq",
"orderId": "qmADK9INhpKqAB0AAH_ZX",
"orderName": "토스 티셔츠 외 2건",
"currency": "KRW",
"method": "카드",
"status": "CANCELED",
"requestedAt": "2022-01-01T11:31:29+09:00",
"approvedAt": "2022-01-01T11:31:51+09:00",
"useEscrow": false,
"cultureExpense": false,
"checkout": {
"url": "https://api.tosspayments.com/v1/payments/mh55FLTEORzZWN3kgMACq/checkout"
},
"card": {
"issuerCode": "33",
"acquirerCode": "31",
"number": "12341234**123*",
"installmentPlanMonths": 0,
"isInterestFree": false,
"interestPayer": null,
"approveNo": "00000000",
"useCardPoint": false,
"cardType": "신용",
"ownerType": "개인",
"acquireStatus": "READY"
},
"virtualAccount": null,
"transfer": null,
"mobilePhone": null,
"giftCertificate": null,
"foreignEasyPay": null,
"cashReceipt": null,
"cashReceipts": null,
"discount": null,
"cancels": [
{
"cancelReason": "고객이 취소를 원함",
"canceledAt": "2022-01-01T11:32:04+09:00",
"cancelAmount": 10000,
"taxFreeAmount": 0,
"taxExemptionAmount": 0,
"refundableAmount": 0,
"easyPayDiscountAmount": 0,
"transactionKey": "8B4F646A829571D870A3011A4E13D640",
"receiptKey": "V4AJ6AhSWsGN0RocizZQlagPLN8s2IahJLXpfSHzQBTKoDG7"
}
],
"secret": null,
"type": "NORMAL",
"easyPay": "토스페이",
"country": "KR",
"failure": null,
"totalAmount": 10000,
"balanceAmount": 0,
"suppliedAmount": 0,
"vat": 0,
"taxFreeAmount": 0,
"taxExemptionAmount": 0
}
이렇게 길다고 하는데 DTO로 받으려 하는데 저 중에서 선택적으로 필드로 받을 수 있나요 ?
우선 받아두고, 여기에서 필요하신 필드를 추출해서 사용하시면 됩니다.
모든 값들을 다 받아야 하는건 아니죠? 몇가 지 값들만 받게끔 필드를 구성해도 되나요?
네 필요하신것만 받으셔도 됩니다.