2011-05-23 61 views
0

我正在測試與MKStoreKit的應用程序購買。(iphone)inAppPurchase verifyReceipt使用MKStoreKit

我收到回覆的狀態21002,並想知道爲什麼。
我是否需要設置證書或與Apple服務器交談的內容?

下面是MKStoreKit使用

<?php 

$devmode = TRUE; // change this to FALSE after testing in sandbox                                                    

$receiptdata = $_POST['receiptdata']; 
$udid = $_POST['udid']; 

if($devmode) 
{ 
    $appleURL = "https://sandbox.itunes.apple.com/verifyReceipt"; 
} 
else 
{ 
    $appleURL = "https://buy.itunes.apple.com/verifyReceipt"; 
} 

$receipt = json_encode(array("receipt-data" => $receiptdata)); 
$response_json = do_post_request($appleURL, $receipt); 
$response = json_decode($response_json); 

file_put_contents('php://stderr', print_r($response->{'status'}, true)); 
file_put_contents('php://stderr', print_r($udid, true)); 

if($response->{'status'} == 0) 
{ 
    file_put_contents('php://stderr', print_r("yes", true)); 
    error_log('udid: %s', $udid); 
    error_log('quantity: %d', $response->{'receipt'}->quantity); 
    echo ('YES'); 
} 
else 
{ 
    echo ('NO'); 
} 

function do_post_request($url, $data, $optional_headers = null) 
{ 
    $params = array('http' => array(
      'method' => 'POST', 
      'content' => $data 
            )); 
    if ($optional_headers !== null) { 
     $params['http']['header'] = $optional_headers; 
    } 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) { 
     throw new Exception("Problem with $url, $php_errormsg"); 
    } 
    $response = @stream_get_contents($fp); 
    if ($response === false) { 
     throw new Exception("Problem reading data from $url, $php_errormsg"); 
    } 
    return $response; 
} 

?> 

回答

0

MKStore套件與發送receiptdata服務器

的錯誤,您應該Base64編碼receiptData不asciiStringEncoding PHP代碼。

用下面的鏈接代碼爲base64,我得到0狀態 Verify receipt for in App purchase

1

請檢查Verify Purchase

+0

重要:非零狀態這裏只代碼回收有關自動再生訂閱信息時適用。測試其他類型產品的響應時不要使用這些狀態碼。 我沒有測試自動更新訂閱。該文檔在對易耗品進行測試時沒有提供有關錯誤代碼的信息。 – eugene 2011-05-23 07:45:33

+0

此文檔的鏈接已更改。這是更新的:https://developer.apple.com/library/mac/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html – 2013-12-09 00:10:51