2017-12-13 9 views
0

인앱 구독 구매에 관해서 내가 이해할 수없는 한 가지 점이 있습니다.latest_receipt 객체가 Apple에서 요청할 때마다 변경되는 이유는 무엇입니까?

private func loadReceipt() -> Data? { 
     guard let url = Bundle.main.appStoreReceiptURL else { 
      return nil 
     } 

     do { 
      let receipt = try Data(contentsOf: url) 
      return receipt 
     } catch { 
      print("Error loading receipt data: \(error.localizedDescription)") 
      return nil 
     } 
    } 

을 그리고 내 (작성 N 파이썬) 서버에 검증을 보내 :

나는이 같은 아이폰 OS 클라이언트의 영수증을 구하십시오.

def verify_receipt(self, receipt): 
    r = requests.post(config.APPLE_STORE_URL, json=receipt) 
    request_date_ms = DateUtils.generate_ms_from_current_time() 
    for item in r.json()['latest_receipt_info']: 
     expires_date_ms = int(item['expires_date_ms']) 
     if expires_date_ms > request_date_ms: 
      return True 
    return False 

구독이 유효한지 확인하는 올바른 방법인지 확실하지 않습니다.

latest_receipt_info에서 expires_date_ms을 얻습니다. 현재 시간 (밀리 초)보다 큰 경우 구독은 여전히 ​​유효합니다.

그러나 내가 주목 한 것은 내가 방금 보낸 API와 동등한 것으로 생각되는 별도의 latest_receipt이 실제로 API를 호출 할 때마다 변경된다는 것입니다. 하지만 왜? 새로운 항목을 구독하지 않았는데 왜 최근 영수증이 변경 되었습니까? 워드 프로세서에 따르면

는 :

latest_receipt

만 자동 재생 구독을 포함하는 영수증에 대해 반환. iOS 6 스타일의 거래 영수증의 경우 가장 최근 갱신 영수증 인 영수증입니다. iOS 7 스타일 앱 영수증의 경우 이 최신 Base-64 인코딩 앱 영수증입니다.

답변

0
+0

실제로 이것은 샌드 박스에 대한 것입니다. 고맙습니다, 그걸 설명 할 수 있어요. 그 외, 영수증을 데이터베이스에 저장하고 영수증이 유효한지 주기적으로 확인하면 (또는 그 기간에 취소 되었습니까?) 내 접근 방식이 올바른 것입니까? 모든 성공적인 체크가 끝나면, 나는 기존의 영수증을 들어오는'latest_receipt'로 대체 할 것이고, 다음 수표에서 다시 체크 할 것입니다. – Houman