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속성은트랜잭션에 대한모든중요한 정보를기록하는서명영수증을포함하고 있습니다.서버는 영수증유효하며손상되지않았는지 확인하기 위해 앱 스토어에이 영수증을게시 할 수 있습니다.RFC4627에 정의 된대로 앱 스토어에 직접 전달쿼리, 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속성의값입니다.OSX에서이 응용 프로그램번들내부의영수증파일의 전체내용입니다. 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. HTTPPOST 요청을 사용하여앱 스토어에 JSON개체를게시 할 수 있습니다.저장소의 URL은https://buy.itunes.apple.com/verifyReceipt입니다.
The response received from the App Store is a JSON object with two keys, status and receipt. It should look something like this: 앱 스토어에서받은 응답은두 개의 키, 상태 및영수증JSON개체입니다.그것은다음과 같이보일 것입니다: 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이외의경우,이영수증은 무효입니다.
{
"status" : 0,
"receipt" : { (receipt here) }
}
반응형
728x90
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. 응용 프로그램의버전 번호입니다.
=================================
=================================
=================================
NSError* error = nil;
NSDictionary* dict = [NSDictionarydictionaryWithObjectsAndKeys: @"앱 구입후 영수증 번호 " ,@"receipt-data",
댓글 영역