2016-08-21 6 views
0

앱 영수증을 확인하는 동안 계속 21002 오류 (잘못된 형식)가 표시됩니다. 그러나 동일한 PHP 코드를 사용하여 트랜잭션 영수증을 확인하는 것이 좋습니다.원격 확인 ios 7.0+ 앱 영수증은 21002를 반환하지만 거래 영수증과 함께 작동합니다.

NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl; 
    NSData receipt = NSData.FromUrl(receiptURL); 
    String receiptData = receipt.GetBase64EncodedString(NSDataBase64EncodingOptions.None); 
    sendToBackend(receiptData); 

PHP :

$endpoint = 'https://sandbox.itunes.apple.com/verifyReceipt'; 
    //$app_rec_data is receiptData from C#, it is base64 encoded 
    $receipt = json_encode(["receipt-data" => $app_rec_data]); 
    $ch = curl_init($endpoint); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $receipt); 
    $response = curl_exec($ch); 
    curl_close($ch); 
    echo $response; 

이전 7.0 스타일의 거래 영수증 :

RestoreTransaction 콜백에서 자 마린 C 번호 (목적-C에서와 동일한 코드)에

나는 샌드 박스 응용 프로그램 영수증을받을
public async void CompleteTransaction(SKPaymentTransaction transaction) 
    { 
     var receipt = transaction.TransactionReceipt.GetBase64EncodedString(NSDataBase64EncodingOptions.None); 
     sendToBackend(receiptData); 
    } 

동일한 PHP 코드로 Apple은 성공을 돌려줍니다. 저는 SO와 Apple docs에서 하루 종일 읽었습니다. 그러나 모든 내용은 괜찮아 보이지만 새로운 앱 영수증은 항상 21002를 반환합니다.

답변

0

Visual Studio 출력에 문제가있었습니다. 앱 영수증이 실제로 형식이 잘못되었습니다.