결제금액 조작 시, confirm 만 호출 안 하면 되나요?
누군가 결제금액을 조작해서, toss/success 콜백으로 조작된 금액이 들어왔을 때,
toss/success 로직에서 "금액이 조작되었다" 를 검사하고 /v1/payments/confirm 을 호출하지 않은 채 그대로 리턴시키면 되는 것인지
아니면 해당 결제 트랜잭션을 즉시 취소시킬 수 있는 다른 방법이 있는지 궁금합니다.
/v1/payments/{paymentKey}/cancel 결제 취소 API를 날리는 것이 바람직한지, 아니면 confirm 하지 않은 채 10분이 흘러가게 둬서 expired시키는 게 맞는지 궁금하네요.
4 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
누군가 결제창 호출시 금액을 조작했다면,
successUrl에서 confirm api호출하기전 db에 저장된 금액과 비교하여 confirm api를 호출하지 않는게 올바른 방법입니다.
말씀하신대로 이대로 두면 해당 주문건은 expired 됩니다.
보안적인 방법으로 웹훅을 통해 최종 결제 금액을 확인하여 이때 다르다면 주문및 결제기록 취소 시켜주시는 것 좋구요.
실물 상품 판매하는 커머스 사이트였으면 웹훅까지 구현할까 했는데 딱히 그런 건 아니라서, expired되도록 냅두는 게 낫겠네요. 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.