Iamport
Advanced-Date-Issue
사기꾼 setTimeout??==> EventLoop/TaskQueue
결제에는 여러가지가 있다
카드결제
계좌이체
무통장입금
정기결제
각각따로 다만들기에는 엄청난 노력이 필요하다...
결제대행 업체 PG사(페이먼트게이트웨이)(계약 최소 1주일)
NHN
나이스페이
KG 이니시스
와 가입/계약/ 후
pg사가 pdf파일(거의200페이지)를 보내줌
그안의 독스? 같은것도 보내주는데
php,jsp,asp 언어로 되어있는데 그걸.. 우리가 독해해서 해야함 ㅠㅠ
너무 어렵고 옛날언어인데???!
그래서 그걸 해주는 회사도 있음!! 결제 솔루션회사(아임포트,부트페이)
결제 솔루션회사에서 api를 사용해 결제요청을 대신해준다!!!!
결제솔루션회사를 사용한다해도 조금 어렵고 할것을 많지만
기존보다 훠어어얼씬 적어진다!!
우리가 결제를 진행하면 최종적으로 카드사 심사를 받게된다!(최소 2주)
결제가 이루어지기위한 ppt를 만들어야함
결제하기위한 테스트 계정도 만들고 해서 PG사에 전달하고, PG에서 담당자가 카드사로전달, 카드사의 담당자가 해당 피피티 보면서 사이트를 확인(베타테스트/미배포사이트는 불가)
그러고서 승인이 나면 가능(각 카드사별로 승인받아야함)
그렇다면 승인실패는???
승인거절 케이스:
도박성사이트/ 경매사이트/ 결제금액을 직접입력하도록 되어있을때
브라우저에서 결제요청을 결제솔루션쪽으로 보나면
res 로 imp_uid가 옴
그럼 Back에서 imp_uid와 결제금액받아서 BD에보냄
취소 결제 결제목록 관련된 에이피아이, db, 다 만들어야해서 시간이 오래걸림 ㅠㅠ
이번엔 무통장입금!!
이건 환불은 어찌할꼬.. ㅠㅠ
내 프로필에서 유저마다 환불계좌 등록하기 만들고해야함
우리는 아임포트 가지고 적용해 볼것!
휴대폰인증(실명인증)은 다날이라고하는 PG사가 있음
아임포트 독스의 일반결제연동하기
스크립트태그를 사용해야하면 안에서 제이쿼리를 사용해서 제이쿼리까지 작성해야함!
결제성공하면 rsp(매개변수라 변경가능)
내용중 imp_uid를 백엔드로 보내줘야함!
1)스크립트추가
스크립트는 헤드 안에 들어가야하니까
헤드를 만들어서 그 안에 넣어줘야함
넥스트는 헤드, 리액트는 헬멧
하고, SDK최신버전 입력해주기!!
2) 설정 임포트
3) 함수작성
4)결과 백으로보내기(또는 오류 알람)
5) 사용자에 알림보내기
포인트 충전하기 API
구매하기 API
백엔드와 DB가 imp_uid를 계속 주고받음
포트폴리오할때는 가맹점코드 imp49910675 로 맞추고
팀플할때는 서로 받춘 가맹점아이디 사용해야함!
만약 모바일에 들어가면 좀 달라짐
모바일 화면을 여는 방법은?
콘솔에서 버튼누르면 볼 수 있음
만약 모바일로 하게되면 웹사이트 페이지가 아예 바뀌게 됨 체이지 이동해버려서 뒤에함수가 실행이 아예안됨..
그랬을때 문제점
1) 어디로 돌아갈 것인가? 돌아갈 주소
옵션으로 제공이되어있음 ㅎ
m_redirect_url
2) 페이지가 전환이 되어버렸기 때문에 함수 뒷부분을 다 잃어버리게됨.. 뮤테이션 어떻게 날릴것인가?
아임포트에서 직접 백엔드로 리퀘스트 날릴 수 있음(웹훅 노티피케이션)
모바일 웹 : 핸드폰에서 크롬브라우저를 열고 접속한 사이트-> 결제사이트결제
모바일 앱 : 플레이스토어에서 다운받는것 앱은 주소가 없음!(만들 수는 있지만)->구글결제
결제시간!
newDate() 해서 보내면될까?
안된다.. 컴퓨터마다의 시간정보가 다 다름!! 그래서 newDate() 한것을 서버에는 보내면 안됨..!!!newDate를 사용하는것은 프론트엔드에서 함부로 하지않는다!
지금까지 우리가 했던것을 생각해도 뉴데이트를 보낸적은 없고 받아온 정보를 뉴데이트로 예쁘게 정리만 한것!!
시간을 동기화 시켜주는 동기화 컴퓨터가 있다!(NTL 서버)
만일 우리가 글로벌 서비스를 한다면?
미국, 한국, 일본, 중국의 모바일 에서 접속을 했을때 그아이들의 시간을 어떻게 맞출 것 인가??!!
백엔드에서 저장할때 세계포준시간으로 저장하게됨!(세계표준시간 : UTC시간)
한국은 UTC+9시간
브라우저에서 패치할때 백에서 UTC시간을 보내줌, 그러고 보여주는걸 클라이언트 화면에서 맞추어 보여주게 되는것!
시간관련 라이브러리 그중 유명한것이 moment.js
경매마감처리 하는법
경매 끝을 누르면 백엔드로 에이피아이 날리겠지!
특정 이벤트를 발생시키는 방법
우리가 알고있던 setTimeout,setInterval 은 올바르지 않다??
왜인감...??
먼가 로직이 순서대로 실행되질않는다.
0초뒤에 실행되도록 했는데도???
알려면 자바스크립스의 원리를 알아야한다.
스택구조(리포구조) 큐우구조(피포구조) 생각해보자.
스택 = 콜스택
큐 = TaskQueue
함수실행하면 할일이 콜스택에 쌓이는데 setTimeout 빼놓고 쌓고 setTimeout는 큐에 넣음
그럼 콜스택 다실행하고비면 테스크큐에있는애들을 실행하게됨
테스크 큐로 가게되는 애들은 webAPI Background setTimeout
요 동글동글한 로직을 루프 라고 함,
일꾼 = 쓰레드/이벤트루프 쓰레드/싱글이벤트루프스레드 라고 부름
테스크 큐는 메크로 테스크 큐와 마이크로 테스크 큐 로 나뉨
이건 내일 알아보고
프로세스와 쓰레드
쓰레드가 하나면 일이 다끝날때까지 다른일을 할수가 없어져버려서 문제
그래서 자바스크립트는 이벤트 루프라는것으로 이 상황을 해결한것
다른언어의 경우에는 스레드를 여러개 만듬!(동시에 하는것처럼보임)
하지만 엄밀히 이야기하면 동시에 처리하는것이 아님.
결국 일은 CPU가 하니까!
일꾼이 네개가 서로 비슷하게 처리되는것 으로 빠르니까 동시에 하는것 처럼 보이는것!
1번 일꾼 10%하면 그만해 하고 2번 일꾼한테일시키고를 반복하는것
근데 10%하고 저장을 해야할것이고 2번일꾼으로 옮겨가갸하잖아?(context-swiching)
(싱글스레드)이벤트 루프의 구조상 혼자만 돌아감
(멀티스레드)일꾼여럿을 번갈아가며 사용해서 비슷한 시기에 일을 끝내게 하는 방식
만약 완벽히 똑같이 동시에 일을 시키고있으면 CPU를 여러개 해서 하나에 하나의 일꾼을 넣어주면 되긴함(병렬 CPI)