(iphone) inAppPurchase verifyReceipt с помощью MKStoreKit

Я тестирую покупку приложения с помощью MKStoreKit.

Я получаю ответ со статусом 21002 и задаюсь вопросом, почему.
Мне нужно настроить сертификат или что-то еще, чтобы разговаривать с сервером Apple?

Ниже приведен код PHP, который использует 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;
}

?>

person eugene    schedule 23.05.2011    source источник


Ответы (2)


Пожалуйста, проверьте Подтвердить покупку

person Mitesh Khatri    schedule 23.05.2011
comment
Важно: ненулевые коды состояния здесь применяются только при восстановлении информации об автоматически возобновляемой подписке. Не используйте эти коды состояния при тестировании ответов на другие виды продуктов. Я не тестирую автоматически возобновляемую подписку. В документе ничего не говорится об ошибке при тестировании с расходными объектами. - person eugene; 23.05.2011
comment
Ссылка на эту документацию изменилась. Вот обновленный: developer.apple.com/library / mac / releasenotes / General / - person Chris Prince; 09.12.2013

В MKStore Kit есть ошибка с отправкой данных квитанции на сервер

Вы должны base64 кодировать данные получения, а не asciiStringEncoding.

Использовал следующий код ссылки на base64, и я получаю статус 0. Проверить квитанцию ​​для покупки в приложении < / а>

person eugene    schedule 23.05.2011