Verifying Store Receipts, iOS In-App Purchase Programming Guide 번역
iOS Developer Library/Guides 2013. 9. 16. 15:08Introduction | 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:
영수증을 확인하려면 다음 단계를 수행하십시오 :
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 인코딩을 사용하여 수신 데이터를 인코딩합니다.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)"
}
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 개체를 게시 할 수 있습니다.저장소의 URL은 https://buy.itunes.apple.com/verifyReceipt입니다.The response received from the App Store is a JSON object with two keys,
status
andreceipt
. It should look something like this:
앱 스토어에서받은 응답은 두 개의 키, 상태 및 영수증 JSON 개체입니다. 그것은 다음과 같이 보일 것입니다 :{
"status" : 0,
"receipt" : { (receipt here) }
}
If the value of the
status
key is0
, this is a valid receipt. If the value is anything other than0
, 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 SKPaymentTransaction
class. All keys not specified in Table 5-1 are reserved for Apple.
표 5-1은 당신이 구입에 대한 정보를 검색하는 데 사용할 수있는 키의 목록을 제공합니다. 이러한 키의 대부분은 SKPaymentTransactionclass의 속성을 일치합니다. 표 5-1에 지정되지 않은 모든 키는 애플을 위해 예약되어 있습니다.
Key | Description |
---|---|
| The number of items purchased. This value corresponds to the 구입한 항목 수. 이 값은 트랜잭션의 지불 속성에 저장 SKPayment 개체의 수량 속성에 해당합니다. |
| The product identifier of the item that was purchased. This value corresponds to the 구입 한 아이템의 제품 식별자입니다. 이 값은 트랜잭션의 지불 속성에 저장 theSKPayment 객체의 productIdentifier 속성에 해당합니다. |
| The transaction identifier of the item that was purchased. This value corresponds to the transaction’s 구입 한 항목의 트랜잭션 식별자입니다. 이 값은 transaction'stransactionIdentifier 속성에 해당합니다. |
| The date and time this transaction occurred. This value corresponds to the transaction’s 날짜와 시간이 트랜잭션이 발생했습니다. 이 값은 트랜잭션의 transactionDate 속성에 해당합니다. |
| For a transaction that restores a previous transaction, this holds the original transaction identifier. 이전 트랜잭션을 복원하는 트랜잭션이 원래의 트랜잭션 식별자를 보유하고 있습니다. |
| For a transaction that restores a previous transaction, this holds the original purchase date. 이전 트랜잭션을 복원하는 거래의 경우, 이것은 원래 구입 날짜를 보유하고 있습니다. |
| 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 앱 스토어는 고유 지불 거래를 만든 응용 프로그램을 식별하는 데 사용하는 문자열입니다. 서버가 여러 응용 프로그램을 지원하는 경우, 당신은 그들을 구별하기 위해이 값을 사용할 수 있습니다.샌드 박스에서 실행되는 응용 프로그램이 아직 그들에게 할당 된 응용 프로그램 - 항목 - ID가없는,이 키는 샌드 박스에 의해 생성 영수증에서 누락되도록. |
| An arbitrary number that uniquely identifies a revision of your application. This key is missing in receipts created by the sandbox. 고유 응용 프로그램의 버전을 식별하는 임의의 번호입니다. 이 키는 샌드 박스에 의해 생성 영수증에 없습니다. |
| The bundle identifier for the application. 응용 프로그램의 번들 식별자입니다. |
| A version number for the application. 응용 프로그램의 버전 번호입니다. |