2014-02-04 2 views
0

У меня есть код рельсов, который получает от Apple покупку в приложении и проверяет его как на песочнице, так и на производстве. Это сработало хорошо, но в последнее время я вижу около 21002 (данные в свойствах данных квитанции были искажены) в моих журналах. Я вижу, что это из приложений в производстве.Проверка подлинности Apple 21002 От Ruby on Rails с Typhoeus Gem

Ниже мой код RoR, который проверяет квитанцию, вы видите что-нибудь, что может вызвать 21002?

Большое спасибо!

def verifyReceipt (receipt_data) 

# Checking the magazine status to get the proper verification url 
if Publication.find_by_app_id(params[:app_id]).development_mode 
    logger.info "Sandbox mode detected" 
    url = "https://sandbox.itunes.apple.com/verifyReceipt" 
else 
    logger.info "Production mode detected" 
    url = "https://buy.itunes.apple.com/verifyReceipt" 
end 

# Get the magazines shared secret 
shared_secret = Publication.where("app_id = ?", params[:app_id]).first.itunes_shared_secret 

if shared_secret.nil? or shared_secret.blank? 
    # Invalid magazine 
    logger.info "Shared secret does not exist or does not match iTunes shared secret!" 
    result = false 
else 
    logger.info "Verifying receipt from Apple now!" 
    # Verify receipt with apple based on magazine status, and save results 
    data = { "receipt-data" => receipt_data, "password" => shared_secret } 
    request = Typhoeus::Request.new(url, method: :post, body: data.to_json) 
    request.run 
    result = JSON.parse(request.response.body).with_indifferent_access 
    logger.info "Result from verification: #{result[:status]}" 
end 
return result 
end 

ответ

2

Если он находится в производстве, это нормальное поведение, чтобы получить ошибки 21002 несколько раз.

Основная причина, по которой кто-то использует устройство JB или взломщик IAP в своем родном приложении и пытается сделать поддельную покупку. Подтвержденная квитанция не подтверждена при проверке AppStore и возвращается ошибка 21002.

Вы можете сделать официальную покупку, чтобы убедиться, что все хорошо работает на случай.

+0

Ага Я этого не знал! Большое спасибо за обмен. Я знаю, что покупки проходят, так что это звучит точно так, как вы описываете. Благодаря! –

+0

Как вы можете узнать, является ли квитанция фактической попыткой взлома или 21002 «Ошибка данных в свойствах квитанции была искажена или отсутствует», потому что существует настоящая проблема с данными? Может ли это быть какой-то кодировкой? какой-то странный характер? Или нам приходится полагаться на не очень описательные коды ошибок Apple? – tothemario

+0

Чтобы выполнить проверку, вам необходимо отправить данные квитанции в AppStore. Эта квитанция закодирована в base64 и поступает из собственного приложения непосредственно при совершении покупки. Вам не нужно делать другие процессы на квитанции, и поэтому такой «конверсионной» проблемы тоже нет. Единственное, что нужно сделать, это убедиться, что квитанция отправлена ​​правильно. –

Смежные вопросы