티스토리 뷰

Laravel

결제 - 아임포트

rediate.will 2023. 1. 11. 13:49

1. 조건

  • 카드 등록시에는 결제창을 통해 빌링키를 생성할것. 
  • 카드 등록 후 해당 카드로 계속 결제 요청 보낼것.
  • 결제/취소 시, 우리쪽에 저장된 아임포트쪽 고유아이디로 결제/취소 요청할것.
  • 만약 아임포트 콘솔에서 결제 취소를 할 경우, 우리쪽에도 해당 데이터를 저장해서 맞춰줄것.
  • 카드 삭제시에 아임포트의 빌링키도 함께 삭제 할것.
  • 결제 수단은 카드외에는 없는 것으로 함.

2. 미리 알아야할 것.

  • 빌링키 생성시에 아임포트에서 원하는 customer_uid, merchant_id는 우리쪽에서 생성해서 주는 데이터임.
  • 우리는 customer_uid로 해당 유저의 아임포트쪽 빌링키를 관리할 수 있음.
    • 이말은 한 유저가 여러개의 결제 수단을 가지고 있으면 각각의 customer_uid가 필요하다는 이야기임.
  • 아임포트와 통신시에는 베어러 토큰으로 인증과정을 거쳐야함.

3. 시작해볼까.

  • https://api.iamport.kr/#/ 여기는 필수. 여기에 Response까지 다나와서 엄청 유용함!
  • 토큰 가져오기
    • 먼저 아임포트쪽 api에 접근하기 위해서는 먼저 token값을 가져와야함
    • 아임포트쪽 가입후 받은 키와 시크릿 값을 보냄. 헤더 Content-Type : application/json 추가
    • POST https://api.iamport.kr/users/getToken {'imp_key':env('IMP_KEY'), 'imp_secret':env('IMP_SECRET')}
    • response
      • { "code": 0, "message": "string", "response": { "access_token": "string", "expired_at": 0, "now": 0 } }
    • response의 access_token값을 이제부터 결제/취소시 헤더에 Authorization : Bearer access_token 으로 요청 하면 됨.
  • payment
    • POST /subscribe/payments/again
    • 헤더에 content-type, token값 잊지말고 챙겨주고
    • 미리 생성해둔 customer_uid, merchant_uid, amount(결제금액), name(상품명? 결제명?)은 필수값이므로 꼭 입력해주자. 
      • buyer_name 주문자명도 입력해줌. 우리쪽 결제테이블에 추가해둬서 추가함.
    • response
      • http status, response로 온 code값을 비교해서 해당 결제가 잘 이뤄졌는지 확인.
      • 우리쪽 payment쪽에 저장함. (우리는 결제 리스트가 필요해서 log식으로 쌓음)
        • 주요 저장데이터는 merchant_uid, amount
  • cancel
    • POST /payments/cancel
    • 헤더 챙기고
    • payment시에 저장해둔 merchant_uid, amount, reason을 전달해줌.

 

4. 빌링키 생성해보자.

  • 프론트쪽에서 결제창으로 카드를 등록하면, request_pay 메소드 쓰면 됨.
  • pc의 경우 response값을 그대로 백쪽에 저장. (작성하다보니 얘도 모바일처럼 확인해야하는거 아닌가...)
  • 모바일의 경우 response값이 성공/실패로만 나오므로(심지어 customer_uid도 없음)
    • 캐시에 customer_uid를 저장해두고 해당 요청이 들어왔을 경우에 캐시에서 해당 값을 가져온 다음
    • 아임포트쪽에 빌링키가 등록되었는지 확인해서 가져오는 response값으로 저장.
    • GET https://api.iamport.kr/subscribe/customers/{customer_uid}

5. 삭제

  • DELETE /subscribe/customers/{customer_uid}
  • 헤더 챙기고

 

6. 웹훅

  • 아임포트 콘솔에서 취소하면 이쪽
  • 아임포트에 받을 웹훅 도메인 주소 입력해주고
  • 요청온 클라이언트 아이피가 ['52.78.100.19', '52.78.48.223', '52.78.5.241'] 에 속해있는지 확인 (아임포트쪽 아이피)
  • 콘솔에서 결제 취소되었을때에만 데이터 새로 생성해서 저장. (나는 있던 데이터 replicate하고 데이터 변경함)
 
 
 
 
 
 
 
 
몰라서 공부하면서 할땐 개 거지같이 짜증나더니
지금보니 별거 없네......

트랜젝션 잘쓰고, 예외처리 잘 챙겨서 하면 된당.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함