successUrl 이동 시 결제수단에 따라 쿼리스트링 인코딩 방식이 다른이유
결제위젯을 사용할 때 successUrl 에 쿼리스트링으로 url 을 인코딩해서 사용중입니다.
예: https://payment-api.devinflearn.com/client/api/v1/payments/processing/toss?entryUrl=https%3A%2F%2Fwww.devinflearn.com%2Fcarts&successUrl=https%3A%2F%2Fcourse-api.devinflearn.com%2Fclient%2Fapi%2Fv2%2Fpayments%2Fcomplete%3FserviceId%3DCOURSE&failUrl=https%3A%2F%2Fwww.devinflearn.com%2Forders%2Fpay%2Fdomestic-fail%3FserviceId%3DCOURSE
참고로 쿼리스트링으로 제공하는 successUrl, failUrl, entryUrl 은 토스와 관계없고 저희 백엔드 서버에서 처리하는 데이터입니다.
APM 으로 확인해보니 paymentType 이
BRANDPAY 인 경우
http://payment-api.inflearn.com/client/api/v1/payments/processing/toss?amount=66820&entryUrl=https%3A%2F%2Fwww.inflearn.com%2Fcarts%3FtargetCourseId%3D337692&failUrl=https%3A%2F%2Fwww.inflearn.com%2Forders%2Fpay%2Fdomestic-fail%3FserviceId%3DCOURSE&methodId=c_0Arne5leDdNoBVvm&orderId=0929-1654-3626018-0&paymentKey=xxx&paymentType=BRANDPAY&successUrl=https%3A%2F%2Fcourse-api.inflearn.com%2Fclient%2Fapi%2Fv2%2Fpayments%2Fcomplete%3FserviceId%3DCOURSE
NORMAL 인 경우
http://payment-api.devinflearn.com/client/api/v1/payments/processing/toss?entryUrl=https://www.devinflearn.com/carts&successUrl=https://course-api.devinflearn.com/client/api/v2/payments/complete?serviceId%3DCOURSE&failUrl=https://www.devinflearn.com/orders/pay/domestic-fail?serviceId%3DCOURSE&paymentType=NORMAL&orderId=0929-1658-348790-0&paymentKey=xxx&amount=202400
NORMAL 인 경우만 다르게 동작하는 이유가 따로 있는건지 궁금합니다!
예: https://payment-api.devinflearn.com/client/api/v1/payments/processing/toss?entryUrl=https%3A%2F%2Fwww.devinflearn.com%2Fcarts&successUrl=https%3A%2F%2Fcourse-api.devinflearn.com%2Fclient%2Fapi%2Fv2%2Fpayments%2Fcomplete%3FserviceId%3DCOURSE&failUrl=https%3A%2F%2Fwww.devinflearn.com%2Forders%2Fpay%2Fdomestic-fail%3FserviceId%3DCOURSE
참고로 쿼리스트링으로 제공하는 successUrl, failUrl, entryUrl 은 토스와 관계없고 저희 백엔드 서버에서 처리하는 데이터입니다.
APM 으로 확인해보니 paymentType 이
BRANDPAY 일 때는 괜찮은데 NORMAL 인 경우가 일부 특수문자들이 디코딩이 된 채로 이동하는거 같습니다.BRANDPAY 인 경우
http://payment-api.inflearn.com/client/api/v1/payments/processing/toss?amount=66820&entryUrl=https%3A%2F%2Fwww.inflearn.com%2Fcarts%3FtargetCourseId%3D337692&failUrl=https%3A%2F%2Fwww.inflearn.com%2Forders%2Fpay%2Fdomestic-fail%3FserviceId%3DCOURSE&methodId=c_0Arne5leDdNoBVvm&orderId=0929-1654-3626018-0&paymentKey=xxx&paymentType=BRANDPAY&successUrl=https%3A%2F%2Fcourse-api.inflearn.com%2Fclient%2Fapi%2Fv2%2Fpayments%2Fcomplete%3FserviceId%3DCOURSE
NORMAL 인 경우
http://payment-api.devinflearn.com/client/api/v1/payments/processing/toss?entryUrl=https://www.devinflearn.com/carts&successUrl=https://course-api.devinflearn.com/client/api/v2/payments/complete?serviceId%3DCOURSE&failUrl=https://www.devinflearn.com/orders/pay/domestic-fail?serviceId%3DCOURSE&paymentType=NORMAL&orderId=0929-1658-348790-0&paymentKey=xxx&amount=202400
= 문자는 정상적으로 인코딩이 유지된채로 오는데 :/? 와 같은 문자만 디코딩이 된 상태로 이동하는거 같습니다.NORMAL 인 경우만 다르게 동작하는 이유가 따로 있는건지 궁금합니다!
