You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
결제보안기능 구현
클라이언트에서 주문금액을 아임포트에 전송하고 결제한 후 결과값을 서버에 보낸 후 서버에서 아임포트와 통신후 결과값을 검증하여 유효여부를 클라> 이언트에 반환 후 결과값을 저장하는 로직에서, 클라이언트에서 주문금액을 1원으로 수정해도 결제가되는 보안문제가 있어 이를 보안하였다.
아임포트에 결제한 값을 보내주기전 클라이언트에서 총 주문금액을 주문하고, 서버에 총 주문금액을 요청한후 값을 비교하여 다를경우 에러페이지로
가고, 같을경우 아임포트 결제를 진행하도록 구현하였다.
if(success){// 주문에 성공했으니 서버에 주문 정보 전달if(priceState.totalPrice+priceState.shippingPrice===response.paid_amount){instance.patch(`/orders/pay`,{imp_uid: response.imp_uid,}).then((res)=>{console.log(res);constlocalInfo=localStorage.getItem('cartItems');constnewArr=JSON.parse(localInfo||'[]').filter((el: string)=>{return!orderProduct.includes(el);},);localStorage.setItem('cartItems',JSON.stringify(newArr));history('/paymentfinished');}).catch((err)=>{// 아임포트는 결제 완료되었지만 DB저장 혹시 서버에서 문제 발생할 경우// 이떄 아임포트 결제 환불 시켜줘야함window.location.assign('/error');console.log(err.response);});}else{alert('결제금액이 다릅니다.');window.location.assign('/error');}// 주문 실패한 경우}else{alert('주문을 취소 하셨습니다');}};
오늘의 회고
오늘도 에러를 정신없이 고쳤다. 해야할 것이 너무 많은데 시간은 없고.. 힘들다 ㅠㅠ 이제 내일부터 마이페이지를 구현하면 거의 끝나갈 것 같다.
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: