브랜드페이 결제 이후 SuccessUrl 에서 confirm API로 결제승인 상황에서 질문
안녕하세요, 브랜드페이 도입 개발 중에 궁금한 점이 있어 문의드립니다.
[배경]
- 현재 브랜드페이 연동을 개발 중입니다.
- 기존에는 토스페이먼츠의 일반 결제(카드, 간편결제 등)를 사용하고 있었습니다.
[상황]
브랜드페이 개발 문서를 보니 결제 승인 API 경로가
/v1/brandpay/payments/confirm
으로 안내되어 있습니다.
그런데 기존에 사용하던 경로인
https://api.tosspayments.com/v1/payments/confirm
으로 브랜드페이 결제 건에 대해 결제 승인 요청을 보냈더니 200 OK 응답이 왔습니다.
[질문]
브랜드페이 결제에 대해서도 기존 경로(/v1/payments/confirm)를 계속 사용해도 괜찮은지,
아니면 브랜드페이 전용 경로(/v1/brandpay/payments/confirm)를 반드시 사용해야 하는지 궁금합니다.14 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
브랜드페이 전용경로를 사용해 주시기 바랍니다.
/v1/payments/confirm 는 결제위젯에서만 사용해주셔야 합니다.
지금 결제위젯사용에서 API 사용으로 전환하려고 하는데요,
그러면 api 전용 경로와 브랜드페이 전용 경로 2개를 사용해야 하는 것인가요?
+ api 사용시와 결제위젯 사용시의 confirm api 경로는 /v1/payments/confirm로 같죠?
API 사용이라는 것은 어떤 것인지 추가 설명 부탁드려요.
네~ 토스페이먼츠는 결제 연동 방식이 두 가지로 나뉘어요.
하나는 위젯 방식이고, 다른 하나는 API 방식이에요.
위젯 방식은 토스에서 제공하는 결제 UI를 그대로 사용하는 거라 구현이 간단하고 빠르게 적용할 수 있어요.
반면에 API 방식은 저희가 직접 UI를 구성하고, 토스의 결제 API를 호출해서 처리하는 방식이라 커스터마이징이 자유로운 게 장점이에요.
지금 저희는 위젯을 사용하고 있다가 브랜드페이 도입으로 API 호출 및 UI를 직접 그려주는 방식으로 전황하고 있답니다.
브랜드페이를 API로 호출하여 직접 구현하신 다는 것이죠?
브랜드페이는 브랜드페이용 confirm API를 호출하시면 됩니다. (/v1/brandpay/payments/confirm)
혹시 하나 여쭤봐도 될까요?
브랜드페이 결제 승인 시, 브랜드페이용 시크릿키가 아니라
기존에 사용하던 토스페이먼츠 시크릿키로 /v1/brandpay/payments/confirm 와 /v1/payments/confirm API를 호출했는데도 결제가 정상적으로 컨펌되는 것처럼 보이더라고요.
이게 정상적인 동작이 맞는 건지 조금 혼란스러운데요,
혹시 관련해서 설명해주실 수 있을까요?
200 OK 라고 하셨는데, 그건 API url 이 유효하면 http status 이니까
응답이 무엇이었나요?
json body 응답이 무엇이었나요?
주문번호 남겨주시겠어요?
응답이
{
"approvedAt": "2025-04-21T12:58:49+09:00",
"balanceAmount": 30000,
"cancels": null,
"card": {
"acquireStatus": "READY",
"acquirerCode": "61",
"amount": 30000,
"approveNo": "00000000",
"cardType": "\uc2e0\uc6a9",
"installmentPlanMonths": 0,
"interestPayer": null,
"isInterestFree": false,
"issuerCode": "61",
"number": "48902300**297*",
"ownerType": "\uac1c\uc778",
"useCardPoint": false
},
"cashReceipt": null,
"cashReceipts": null,
"checkout": {
"url": "https://api.tosspayments.com/v1/payments/tcp_c202504211258473xZ82/checkout"
},
"country": "KR",
"cultureExpense": false,
"currency": "KRW",
"discount": null,
"easyPay": null,
"failure": null,
"giftCertificate": null,
"isPartialCancelable": true,
"lastTransactionKey": "txrd_a01jsb7zajyccy00hhr64sar2nv",
"mId": "tcp_curiou99ca",
"metadata": null,
"method": "\uce74\ub4dc",
"mobilePhone": null,
"orderId": "fc24f997-d975-4d23-adf6-d950f5c93706",
"orderName": "Test Order",
"paymentKey": "tcp_c202504211258473xZ82",
"receipt": {
"url": "https://dashboard.tosspayments.com/receipt/redirection?transactionId=tcp_c202504211258473xZ82&ref=PX"
},
"requestedAt": "2025-04-21T12:58:47+09:00",
"secret": "ps_6BYq7GWPVvvdvJ1NeRGXVNE5vbo1",
"status": "DONE",
"suppliedAmount": 27273,
"taxExemptionAmount": 0,
"taxFreeAmount": 0,
"totalAmount": 30000,
"transfer": null,
"type": "BRANDPAY",
"useEscrow": false,
"vat": 2727,
"version": "2022-11-16",
"virtualAccount": null
}
라고 나옵니다.
[상황]
- 브랜드페이로 결제
- url = "https://api.tosspayments.com/v1/payments/confirm" 로 결제승인
기존에 사용하던 secretkey 가 위젯키면 가능합니다.
네 결제자체는 되실텐데 권장하지 않습니다.
/v1/brandpay/payments/confirm 이걸 써주세요.
아 그래요? 권장하지 않는 이유가 있나요?
브랜드페이 업데이트시 동일한 결과를 보장할 수 없어서라고 보면 될까요?
네 맞습니다. 추후에라도 브랜드페이용 특정 기능이 추가된다거나 할때 브랜드페이 전용 endpoint 에 추가 될겁니다.
그러면 backward compatibility 이슈가 발생할수 있습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.