iOS/스터디

[WWDC Video Study] What’s new with in-app purchase - Refund Notification

min_ee 2021. 2. 4. 19:30

Link

developer.apple.com/videos/play/wwdc2020/10661/?time=551

 

What’s new with in-app purchase - WWDC 2020 - Videos - Apple Developer

Create a great in-app purchase experience for your iPhone, iPad, Mac, and Apple Watch apps. Discover how to handle refunds, integrate new...

developer.apple.com

45분정도 되는 영상이다.

여기서는 In-app purchase 에서의 업데이트 사항들을 알려주는데

크게 Server의 업데이트와 StoreKit의 업데이트가 있다.

 

번역 & 이해 하려고 하다보니 10분짜리 파트인데 거의 2시간 걸림..ㅠ

Server 업데이트

환불, 환불되는 거래 처리방법

이전의 처리 방법

사용자가 포인트를 구입함

→ 실수로 구입한거라 애플에 지원 요청

→ 애플에서 환불 처리해줌

→ 환불되어야할 포인트가 남아있어서 사용자가 개발자에게 연락을 함

→ 애플이 포인트 환불 사실을 모르는경우 어떻게 대응해야할지 결정이 어려움

환불된 구매를 관리하는 것의 중요성

환불은 인정하지만 고객이 포인트를 계속 가지고 있거나 개발자가 다시 회수할 수 있다.

  → 애플이 콘텐츠에 대한 환불을 관리하는 새로운 방법을 제공하기 위해 노력하는 이유

환불된 구매를 관리할 수 있는 능력을 갖추는 것은 중요하다.

가장 중요한 것은 개발자가 적절하다고 생각하는 대로 행동을 취할 수 있도록 개발자에게 통제권을 준다.

  • 고객에게 메세지를 보내거나 필요한 경우 포인트를 다시 가져간다.
  • 애플로부터 환불 받은 고객이 포인트를 유지하려는 등 포인트의 남용 가능성을 처리할 수 있다.
  • 이전 같은 문제가 있던 고객의 문제를 신속하게 해결할 수 있다.
  • 게임의 경우 게임 내 경제도 관리할 수 있어 환불에 따른 파장이 있는만큼 모든 플레이어가 공정하게 게임 플레이를 할 수 있다.

애플에서는 위 이유와 앱에서 구입한 제품에 대한 환불을 관리할수 있길 원하기 때문에 앱스토어 서버 알림과 자동 재생 가능 구독 이외의 콘텐츠 유형에 대한 첫번째 알림을 제공한다.

환불 통지

  • 애플 측에 정보를 요구할 필요가 없다

  • 상태 변경의 경우 json포스트로 즉시 통보되고, http ok를 반환받지 못할 경우 3번까지 재시도 한다

  • 자동 갱신 구독에 대한 앱스토어 서버 알림이 이미 수신되고 있는 경우 추가 작업이 거의 없이 다른 콘텐츠 유형에 대한 새 환불 알림이 표시된다.

  • 취소된 거래가 포함된 업데이트된 통합 영수증을 개발자에게 보내주기 때문에 레코드를 업데이트 할 수 있다.

  • 이 솔루션은 플랫폼에서 비즈니스를 성장시킬 때 확장이 가능하다.

  • 따라서 모든 콘텐츠 유형에 대한 목표는 앱스토어 서버 알림을 통해 환불된 구매에 대한 정보를 얻을 수 있도록 하는것

  • 소모품, 비 소모품 및 비갱신 제품의 경우 새 환불 통지를 받게 된다.

구독의 경우 취소 알림을 계속 받는다. 이전에 구독해본 적이 없고 몇 단계로 할 수 있다면 앱스토어 서버 알림을 활성화 하는 것은 간단하다

  • 알림과 앱스토어 커넥트를 위해 원하는 엔드 포인트를 설정한다
  • 개발자 문서에 설명된 대로 엔드포인트가 앱 전송 보안 요구 사항을 충족하는지 확인을 한다.

앱스토어 커넥트서비스 하는 앱의 앱 정보 - 일반 정보를 보면 App Store 서버알림 URL이 있다.

-> 추가 정보: help.apple.com/app-store-connect/#/dev0067a330b

 

원하는 엔드포인트를 여기 입력하면 알림 보낼 곳을 알 수 있다.

엔드 포인트에서 보안 요구 사항을 충족하면 즉시 알림을 받기 시작할 수 있다.

 

환불 알림

소모적, 비 소모적, 필요하지 않은 구독이 앱에서 환불될 때, 그 구매에 대해 고객에게 환불을 발행한 후 개발자에게 알림을 보낼 것이다.

알림에서는 고객이 이미 구매에 대해 알고있는 고객 전용 정보를 제공하지 않기 때문에 개인정보 보호방식으로 구현되어있다 < 개인정보는 안준다는 이야기

환불 알림은 실시간으로 보내지기 때문에 앱스토어 알림을 받고있다면 염두하고, 페이로드에서 유의할 사항이 있다.

알림을 받았을때 사용자가 어떤 거래를 환불했는지 알기위해 original_transcaion_id를 찾아야 한다.

언제 환불했는지 알 수 있는 취소 날짜와 취소 사유. 취소 사유는 0 or 1의 값을 가질 수 있으며, 1의 값은 사용자가 조사가 가능한 앱 내 문제로 인해 고객이 환불을 요청했음을 표시할 수 있다.

또한 입찰을 확인하고 통지받은 앱과 제품을 확인할 수 있는 제품을 확인해라. < 뭔소린지

이 필드는 앱스토어 서버 알림 페이로드 안의 "unified_receipt"객체와 "latest_receipt_info" 섹션에서 확인할 수 있다. "bid"는 최상단에 위치하고 있다.

payload 구성

  • password
    • shared sceret for the app, use to verify it's from Apple
    • 페이로드가 애플의 것임을 확인하고 신뢰할 수 있음
  • bid
    • bundle identifier for your app
    • 어떤 앱에서 환불 받았는지 알기위함
  • unified_receipt
    • unified receipt object, like /verifyReceipt response
    • latest_receipt_info
      • array of 100 latest transactions

      • 환불 거래에 대한 정보

      • 앱에 대한 100가지 최신 거래와 취소 날짜, 취소이유, 거래 ID, 상품 ID가 포함되어 있다.

         

       

서버 통신 이후의 환불 처리 방식

이전까지 애플에서 환불 결정 후 개발자에게 환불 통지를 보낼 것이다.

고객이 게임 내 보상 등 추가 지원을 요청할 경우 구매가 환불된 사실을 알고 앱에서 인앱메세지를 제공하는 등 적극적인 조치를 취할 수 있다.

중간-심각에 이르기 까지 콘텐츠 유형에따라 취할 수 있는 여러 조치가 있다.

모든 콘텐츠 유형에 대해 환불 모니터링에 사용할 수 있다.

앱 내 메세징 및 환불된 구매에 대한 액세스 제한,

환불 알림을 서버로 보내므로 필요한 경우 플랫폼 간 액세스를 제한할 수 있다.

소모품의 경우 앱 내 통화 잔액을 차감하는 것과 같은 추가적인 조치가 있다.