xamarin.ios - purchase - ios 인앱결제



iOS Xamarin을 사용하여 인앱 구매 영수증을 파싱하는 예 (1)

내 앱의 구매 유효성 검사를 구현하려고합니다. 구매 영수증을 Apple에 확인하기 위해 서버에 보낼 수 있음을 알았습니다. 그러나, 유효성 검사를 위해 내 URL에 NSData를 POST하는 정확한 방법을 알아낼 수 없습니다. 이 같은:

public void CompleteTransaction (SKPaymentTransaction transaction) {
    var productId = transaction.Payment.ProductIdentifier;
    NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
    NSData theData = NSData.FromUrl (receiptURL);

    RestRequest request = new RestRequest(validationURL, Method.POST);
    request.AddBody(theData); // ??  
    restClient.ExecuteAsync<bool>((response) =>
        {
            FinishTransaction(transaction, response.Data);
        });
}

누구든지 예제가 있습니까? RestSharp를 사용하고 있습니다.

감사!

  • 데이브 버

OK, 그것을하는 방법을 발견했다. 트릭은 영수증을 사전으로 구문 분석 한 다음 그로부터 키를 가져 오는 것입니다. 샘플 코드 :

public void CompleteTransaction (SKPaymentTransaction transaction) {
    var productId = transaction.Payment.ProductIdentifier;
    NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl;
    NSData receipt = NSData.FromUrl (receiptURL);

    // here is the code I was missing
    NSDictionary requestContents = NSDictionary.FromObjectAndKey((NSString)receipt.GetBase64EncodedString(
                NSDataBase64EncodingOptions.None), 
                (NSString)"receipt-data");

    string receiptData = (requestContents["receipt-data"] as NSString).ToString();

    RestRequest request = new RestRequest(<url to your server>, Method.POST);

    request.AddParameter ("receipt-data", receiptData );

    apiClient.ExecuteAsync<bool>(request, (response) => 
        {
            FinishTransaction (transaction, response.Data);
        });

완료되면 Apple 서버에서 유효성 검사를 수행 할 수 있습니다. 해당 부분에는 그물에 많은 샘플 코드가 있습니다.