У меня есть код рельсов, который получает от 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
Ага Я этого не знал! Большое спасибо за обмен. Я знаю, что покупки проходят, так что это звучит точно так, как вы описываете. Благодаря! –
Как вы можете узнать, является ли квитанция фактической попыткой взлома или 21002 «Ошибка данных в свойствах квитанции была искажена или отсутствует», потому что существует настоящая проблема с данными? Может ли это быть какой-то кодировкой? какой-то странный характер? Или нам приходится полагаться на не очень описательные коды ошибок Apple? – tothemario
Чтобы выполнить проверку, вам необходимо отправить данные квитанции в AppStore. Эта квитанция закодирована в base64 и поступает из собственного приложения непосредственно при совершении покупки. Вам не нужно делать другие процессы на квитанции, и поэтому такой «конверсионной» проблемы тоже нет. Единственное, что нужно сделать, это убедиться, что квитанция отправлена правильно. –