Introduction | Overview of In-App Purchase | Retrieving Product Information | Making a Purchase
Adding a Store to Your Application | Verifying Store Receipts | Testing a Store | Auto-Renewable Subscriptions


본 페이지는 iOS In-App Purchase Programming Guide 문서의 Verifying Store Receipts 부분을 번역해 놓은 페이지 입니다. 발 번역이라 이상한 부분이 있을 수 있습니다. 발견즉시 댓글을 달아 주세요.



Verifying Store Receipts

Your application should perform the additional step of verifying that the receipt you received from Store Kit came from Apple. This is particularly important when your application relies on a separate server to provide subscriptions, services, or downloadable content. Verifying receipts on your server ensures that requests from your application are valid.

귀하의 응용 프로그램은 스토어 키트에서받은 영수증이 애플에서 나온 것을 확인하는 추가 단계를 수행해야합니다. 응용 프로그램 가입, 서비스 또는 다운로드 콘텐츠를 제공하기 위해 별도의 서버에 의존 할 때 특히 중요합니다. 서버에 영수증을 확인하면 응용 프로그램의 요청이 유효한지 확인합니다.

Verifying a Receipt with the App Store

When Store Kit returns a completed purchase to your payment queue observer, the transaction’s transactionReceipt property contains a signed receipt that records all the critical information for the transaction. Your server can post this receipt to the App Store to verify that the receipt is valid and has not been tampered with. Queries transmitted directly to the App Store are sent and received as JSON dictionaries, as defined in RFC 4627.

스토어 키트가 당신의 지불 관찰자완성 된 구매를 반환 할 때, 트랜잭션transactionReceipt 속성은 트랜잭션에 대한 모든 중요한 정보를 기록하는 서명 영수증을 포함하고 있습니다. 서버영수증 유효하며 손상되지 않았는지 확인하기 위해 앱 스토어에이 영수증을 게시 할 수 있습니다. RFC 4627에 정의 된대로 앱 스토어에 직접 전달 쿼리, JSON 사전으로 전송 수신됩니다.


To verify the receipt, perform the following steps:
영수증을 확인하려면 다음 단계를 수행하십시오 :

  1. Retrieve the receipt data. On iOS, this is the value of the transaction's transactionReceipt property. On OS X, this is the entire contents of the receipt file inside the application bundle. Encode the receipt data using base64 encoding.
    수신 데이터를 검색합니다. 이오스에서트랜잭션transactionReceipt 속성의 값입니다. OS X에서이 응용 프로그램 번들 내부의 영수증 파일의 전체 내용입니다. Base64 인코딩을 사용하여 수신 데이터를 인코딩합니다.

  2. Create a JSON object with a single key named receipt-data and the string you created in step 1. Your JSON code should look like this:
    수신 데이터 1 단계에서 만든 캐릭터라는 하나의 키JSON 개체를 만듭니다. 귀하의 JSON 코드는 다음과 같아야합니다 :

    {
        "receipt-data" : "(receipt bytes here)"
    }
  3. Post the JSON object to the App Store using an HTTP POST request. The URL for the store is https://buy.itunes.apple.com/verifyReceipt.
    HTTP POST 요청을 사용하여 앱 스토어JSON 개체를 게시 할 수 있습니다.저장소의 URLhttps://buy.itunes.apple.com/verifyReceipt입니다.

  4. The response received from the App Store is a JSON object with two keys, status and receipt. It should look something like this:
    앱 스토어에서받은 응답은 두 개의 키, 상태 및 영수증 JSON 개체입니다. 그것은 다음과 같이 보일 것입니다 :

    {
        "status" : 0,
        "receipt" : { (receipt here) }
    }

    If the value of the status key is 0, this is a valid receipt. If the value is anything other than 0, this receipt is invalid.
    상태 키의 값이 0 인 경우,이 유효한 영수증입니다. 값이 0 이외의 경우,이 영수증무효입니다.

The Store Receipt
구입 영수증

The receipt data you send to the App Store encodes information about the transaction. When the App Store validates a receipt, the data stored in the receipt data are decoded and returned in the receipt key of the response. The receipt response is a JSON dictionary that includes all of the information returned to your application in the SKPaymentTransaction object. Your server can query these fields to retrieve the details of the purchase. Apple recommends that you send only the receipt data to your server and use receipt validation to retrieve the purchase details. Because the App Store verifies that the receipt data has not been tampered with, retrieving this information from the response is more secure than transmitting both receipt data and the transaction data to your server.

당신은 앱 스토어로 전송 수신 데이터는 트랜잭션에 대한 정보를 인코딩합니다.앱 스토어 영수증의 유효성을 검사 할 때, 수신 데이터에 저장된 데이터를 디코딩하고 응답을받는 키에 반환됩니다.영수증 응답 SKPaymentTransaction 개체에 응용 프로그램에 반환되는 모든 정보를 포함하는 JSON 사전입니다. 서버구입의 세부 정보를 검색하려면이 필드를 쿼리 할 수 ​​있습니다. 애플은 서버에만 수신 데이터를 전송하고 구매 세부 정보를 검색하는 영수증 유효성 검사를 사용하는 것이 좋습니다.앱 스토어수신 데이터가 변경되지 않았 음을 확인하므로, 응답에서이 정보를 검색하면 서버에 수신 데이터와 트랜잭션 데이터를 모두 전송하는 것보다 더 안전합니다.


Table 5-1 provides a list of keys that you may use to retrieve information about the purchase. Many of these keys match properties on the SKPaymentTransactionclass. All keys not specified in Table 5-1 are reserved for Apple.

표 5-1당신이 구입에 대한 정보를 검색하는 데 사용할 수있는 의 목록을 제공합니다. 이러한 키대부분은 SKPaymentTransactionclass의 속성일치합니다. 표 5-1에 지정되지 않은 모든 키는 애플을 위해 예약되어 있습니다.

Table 5-1  Purchase info keys

Key

Description

quantity

The number of items purchased. This value corresponds to the quantity property of the SKPayment object stored in the transaction’s payment property.

구입한 항목 수. 이 값은 트랜잭션의 지불 속성에 저장 SKPayment 개체의 수량 속성에 해당합니다.

product_id

The product identifier of the item that was purchased. This value corresponds to the productIdentifier property of theSKPayment object stored in the transaction’s payment property.

구입 한 아이템의 제품 식별자입니다. 이 값은 트랜잭션의 지불 속성에 저장 theSKPayment 객체의 productIdentifier 속성에 해당합니다.

transaction_id

The transaction identifier of the item that was purchased. This value corresponds to the transaction’stransactionIdentifier property.

구입 한 항목의 트랜잭션 식별자입니다. 이 값은 transaction'stransactionIdentifier 속성에 해당합니다.

purchase_date

The date and time this transaction occurred. This value corresponds to the transaction’s transactionDate property.

날짜와 시간트랜잭션이 발생했습니다. 이 값은 트랜잭션transactionDate 속성에 해당합니다.

original_transaction_id

For a transaction that restores a previous transaction, this holds the original transaction identifier.

이전 트랜잭션을 복원하는 트랜잭션원래의 트랜잭션 식별자를 보유하고 있습니다.

original_purchase_date

For a transaction that restores a previous transaction, this holds the original purchase date.

이전 트랜잭션을 복원하는 거래의 경우, 이것은 원래 구입 날짜를 보유하고 있습니다.

app_item_id

A string that the App Store uses to uniquely identify the application that created the payment transaction. If your server supports multiple applications, you can use this value to differentiate between them. Applications that are executing in the sandbox do not yet have an app-item-id assigned to them, so this key is missing from receipts created by the sandbox.

앱 스토어고유 지불 거래를 만든 응용 프로그램을 식별하는 데 사용하는 문자열입니다. 서버가 여러 응용 프로그램을 지원하는 경우, 당신은 그들을 구별하기 위해이 값을 사용할 수 있습니다.샌드 박스에서 실행되는 응용 프로그램아직 그들에게 할당 된 응용 프로그램 - 항목 - ID가없는,이 키 샌드 박스에 의해 생성 영수증에서 누락되도록.

version_external_identifier

An arbitrary number that uniquely identifies a revision of your application. This key is missing in receipts created by the sandbox.

고유 응용 프로그램의 버전을 식별하는 임의의 번호입니다. 이 키는 샌드 박스에 의해 생성 영수증에 없습니다.

bid

The bundle identifier for the application.

응용 프로그램의 번들 식별자입니다.

bvrs

A version number for the application.

응용 프로그램의 버전 번호입니다.

Posted by 창업자닉군
,