상세 컨텐츠

본문 제목

ios 개발 결제 영수증 영수 확인 관련

스마트기기개발관련/IOS 개발

by AlrepondTech 2014. 5. 22. 15:08

본문

반응형

 

 
 

 

=================================

=================================

=================================

 

 

 

 

 
 

 

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 코드는 다음과 같아야합니다 :
  3. {
    "receipt-data" : "(receipt bytes here)"
    }
  4. 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입니다.
  5. 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 이외의 경우,이 영수증은 무효입니다.
  6. {
    "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 = [NSDictionary dictionaryWithObjectsAndKeys@"앱 구입후 영수증 번호 " ,@"receipt-data",

                              @"자신의 비밀번호",@"password",nil];

        NSData* jsonData = [[CJSONSerializer serializerserializeObject:dict error:&error];

        

        NSMutableURLRequest* request = [[[NSMutableURLRequest allocinitWithURL:[NSURL URLWithString:[NSString stringWithFormat:

//                                                                                                       @"https://buy.itunes.apple.com/verifyReceipt"

                                                                                                       @"https://sandbox.itunes.apple.com/verifyReceipt"

                                                                                                       ]]] autorelease];

        [request setHTTPMethod:@"POST"];

        [request setHTTPBody:jsonData];

        NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

        

        NSDictionary* jsonDict = [[CJSONDeserializer deserializerdeserializeAsDictionary:responseData error:nil];

        //     return [[jsonDict objectForKey:@"status"] integerValue] == 0;

        

        NSLog(@"jsonDict %@",jsonDict);


 

 

 

 

//결과에 따른 내용 

 

http://blog.shoguniphicus.com/2012/03/05/storekit-in-app-purchase/

 
 

=================================

=================================

=================================

 

 

 

반응형


관련글 더보기

댓글 영역