codestates / codestates/Lumiere
[Dev-Log] 박진현 2021-12-14
- Dominant language
- TypeScript
- Stars
- 7
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
> ### 오늘은 어떻게 프로젝트에 기여했나요?
> + [Feat] 결제보안기능 구현
> + [Fix]소셜로그인 로그인시 이전페이지로
> + [Fix] kakao oauth 안되는 에러 해결
> + [Fix] 필터링시 페이지오류 수정
> + [Feat]카카오 상담기능 추가
> + [Fix] 어드민유저 페이지 수정
> + [Fix] 어드민작품등록 수정
> + [Fix] 로그인시 이전페이지로 가기, 로그아웃시 새로고침
> + [Feat]작품상세 품절버튼 추가 및 몇가지 수정
> + [Feat]헤더에 마이페이지 추가
> + [Feat] 결제완료 페이지 구현
> ### 오늘의 프로젝트에서 힘든 점은 무엇인가요?
>
> - 결제보안기능 구현
> 클라이언트에서 주문금액을 아임포트에 전송하고 결제한 후 결과값을 서버에 보낸 후 서버에서 아임포트와 통신후 결과값을 검증하여 유효여부를 클라> 이언트에 반환 후 결과값을 저장하는 로직에서, 클라이언트에서 주문금액을 1원으로 수정해도 결제가되는 보안문제가 있어 이를 보안하였다.
> 아임포트에 결제한 값을 보내주기전 클라이언트에서 총 주문금액을 주문하고, 서버에 총 주문금액을 요청한후 값을 비교하여 다를경우 에러페이지로
> 가고, 같을경우 아임포트 결제를 진행하도록 구현하였다.
> ```tsx
> if (success) {
> // 주문에 성공했으니 서버에 주문 정보 전달
> if (
> priceState.totalPrice + priceState.shippingPrice ===
> response.paid_amount
> ) {
> instance
> .patch(`/orders/pay`, {
> imp_uid: response.imp_uid,
> })
> .then((res) => {
> console.log(res);
> const localInfo = localStorage.getItem('cartItems');
> const newArr = 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('주문을 취소 하셨습니다');
> }
> };
> ```
>
> ### 오늘의 회고
> 오늘도 에러를 정신없이 고쳤다. 해야할 것이 너무 많은데 시간은 없고.. 힘들다 ㅠㅠ 이제 내일부터 마이페이지를 구현하면 거의 끝나갈 것 같다.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.