인앱 결제 환불 정리

#인앱결제
Written by Dylan2023년 9월 23일 · 1 min read

시리즈의 글 (19개)

  1. AWS - EBS 용량 관리
  2. OpenTelemetry - 메트릭
  3. OpenTelemetry 시그널 - 분산 추적
  4. OpenTelemetry - 컨텍스트 전파
  5. OpenTelemetry - 파이프라인, 리소스
  6. OpenTelemetry
  7. 관찰 가능성 엔지니어링 & 제 3자 결제 - 애플
  8. 제 3자 결제 - 구글
  9. PortOne - 웹훅
  10. PortOne - 인증결제
  11. PortOne - 비인증결제 정리
  12. 인앱 결제 환불 정리
  13. 인앱 결제 정리
  14. SRE (Site Reliability Engineering) 개념
  15. SQL - INTERSECT
  16. SQL - UNION / UNION ALL
  17. MongoDB.local Seoul 짧은 참가 후기
  18. OLTP vs OLAP
  19. TypeORM orIgnore 메소드 Upsert시 중복 데이터 INSERT 검증 방식 변경

인앱 결제 - 환불 플로우

기존 ios 14 버전 이전 - 앱 UI에서 환불 요청 불가

  1. 사용자가 애플측에 직접 CS로 환불 문의한다.
  2. 애플에서 자체적으로 체크하여 사용자에게 환불
  3. 애플 서버에서 애플리케이션 서버로 notifcation 발송 (웹 훅 방식)
    • 애플리케이션 서버에서 notification 수신 용도의 api 엔드포인트가 필요하다
    • 애플 개발자에서 noti 수신용 엔드포인트 등록이 필요하다.

ios 15 버전 이후 - 앱 UI 상에서 환불 요청 가능

  1. 앱에서 환불 요청 메소드를 호출해서 환불 요청
    • 환불 요청 UI를 ios 단에서 보여준다.
    • 환불 버튼 관련 로직은 ios에서 처리 - 최대 48시간 소요
  2. 애플 서버에서 애플리케이션 서버로 notification을 총 2번 발송
    • 환불 요청이 성공적으로 접수되었을 때
      • notification_type: CONSUMPTION_REQUEST
    • 환불이 완전히 처리완료 상태일때
      • notification_type: REFUND

애플 notification 웹훅 세팅시 유의점

  1. notification을 받는 api 서버는 HTTPS 설정이 필수적이다.
  2. noti 수신시 notificationType과 subtype 정보를 활용해서 애플리케이션 서버에서 핸들링이 필요하다.