rails Railsでapple storeのレシート検証

本稿について

本稿はサイト運営者が学んだことなどを記したメモの内容です。
全てが正確な情報とは限りません。ご注意ください。また修正するべき点は適時修正していきます
VeniceというGemをインストールする
gem 'venice' # apple storeレシート検証

下記はiosアプリから `receipt` というパラメータでappleから送られてくるエンコードされたレシート情報を受け取っている
receipt = Venice::Receipt.verify(params[:receipt])
if receipt.blank?
  return render json: { result: false, message: 'レシートデータが正しくありません', code: 'error' }, status: :bad_request 
end

product_id = receipt.in_app.first.product_id


Venice::Receiptのレスポンスオブジェクト
=> #<Venice::Receipt:0x00007f8516588520
@adam_id=0,
@application_version="17",
@bundle_id=“hogehoge",
@download_id=0,
@in_app=
  [#<Venice::InAppReceipt:0x00007f8518f92ca8
    @app_item_id=nil,
    @is_trial_period=false,
    @original=
     #<Venice::InAppReceipt:0x00007f8518f924b0
      @app_item_id=nil,
      @original_json_data={"transaction_id"=>"1000000697453326", "purchase_date"=>"2020-07-24 11:48:11 Etc/GMT"},
      @product_id=nil,
      @purchased_at=Fri, 24 Jul 2020 11:48:11 +0000,
      @transaction_id="1000000697453326",
      @version_external_identifier=nil,
      @web_order_line_item_id=nil>,
    @original_json_data=
     {"quantity"=>"1",
      "product_id"=>”Hogehoge",
      "transaction_id"=>"1000000697453326",
      "original_transaction_id"=>"1000000697453326",
      "purchase_date"=>"2020-07-24 11:48:11 Etc/GMT",
      "purchase_date_ms"=>"1595591291000",
      "purchase_date_pst"=>"2020-07-24 04:48:11 America/Los_Angeles",
      "original_purchase_date"=>"2020-07-24 11:48:11 Etc/GMT",
      "original_purchase_date_ms"=>"1595591291000",
      "original_purchase_date_pst"=>"2020-07-24 04:48:11 America/Los_Angeles",
      "is_trial_period"=>"false"},
    @product_id=“Hogehoge",
    @purchased_at=Fri, 24 Jul 2020 11:48:11 +0000,
    @quantity=1,
    @transaction_id="1000000697453326",
    @version_external_identifier=nil,
    @web_order_line_item_id=nil>],
@original_application_version="1.0",
@original_json_response=
  {"receipt"=>
    {"receipt_type"=>"ProductionSandbox",
     "adam_id"=>0,
     "app_item_id"=>0,
     "bundle_id"=>”hogehoge",
     "application_version"=>"17",
     "download_id"=>0,
     "version_external_identifier"=>0,
     "receipt_creation_date"=>"2020-07-24 11:48:11 Etc/GMT",
     "receipt_creation_date_ms"=>"1595591291000",
     "receipt_creation_date_pst"=>"2020-07-24 04:48:11 America/Los_Angeles",
     "request_date"=>"2020-07-24 11:54:04 Etc/GMT",
     "request_date_ms"=>"1595591644532",
     "request_date_pst"=>"2020-07-24 04:54:04 America/Los_Angeles",
     "original_purchase_date"=>"2013-08-01 07:00:00 Etc/GMT",
     "original_purchase_date_ms"=>"1375340400000",
     "original_purchase_date_pst"=>"2013-08-01 00:00:00 America/Los_Angeles",
     "original_application_version"=>"1.0",
     "in_app"=>
      [{"quantity"=>"1",
        "product_id"=>”HogeHoge",
        "transaction_id"=>"1000000697453326",
        "original_transaction_id"=>"1000000697453326",
        "purchase_date"=>"2020-07-24 11:48:11 Etc/GMT",
        "purchase_date_ms"=>"1595591291000",
        "purchase_date_pst"=>"2020-07-24 04:48:11 America/Los_Angeles",
        "original_purchase_date"=>"2020-07-24 11:48:11 Etc/GMT",
        "original_purchase_date_ms"=>"1595591291000",
        "original_purchase_date_pst"=>"2020-07-24 04:48:11 America/Los_Angeles",
        "is_trial_period"=>"false"}]},
   "status"=>0,
   "environment"=>"Sandbox"},


[参考]

Back