2016-08-21 33 views
0

我試圖檢查應用程序回執時發現21002錯誤(格式錯誤)。但使用相同的PHP代碼檢查交易收據工作正常。遠程驗證ios 7.0+應用程序回執返回21002,但與交易回執一起使用

在RestoreTransaction回調Xamarin C#(相同的代碼在Objective-C)

我得到沙盒應用的收據:

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風格的交易收據:

public async void CompleteTransaction(SKPaymentTransaction transaction) 
    { 
     var receipt = transaction.TransactionReceipt.GetBase64EncodedString(NSDataBase64EncodingOptions.None); 
     sendToBackend(receiptData); 
    } 

使用相同的PHP代碼蘋果返回成功。 我已經花了整整一天的時間在SO和Apple文檔中閱讀,但一切看起來不錯,但新的應用收據始終返回21002.

回答

0

在Visual Studio輸出中存在問題。應用收據真的很畸形。

相關問題