class OrderPayment

Attributes

default_name[RW]
last_review[RW]
note[RW]
page[RW]

Public Instance Methods

confirm() click to toggle source
# File lib/order_payment.rb, line 45
def confirm
  puts

  unless Ask.confirm "Place order?"
    puts "Stopped by user"
    return
  end

  Request.post("https://order.dominos.jp/eng/regi/insert", @insert_params,
               expect: :redirect, to: %r{\Ahttps://order\.dominos\.jp/eng/regi/complete/\?},
               failure: "Order couldn't be placed for some reason :(")

  puts
  puts "Success!"
  puts "Be sure to check the Domino's Pizza website in your browser "\
       "to track your order status via the Pizza Tracker, and win a Mystery Deal coupon"
end
display() click to toggle source
# File lib/order_payment.rb, line 41
def display
  puts last_review
end
input() click to toggle source
# File lib/order_payment.rb, line 11
def input
  Request.get("https://order.dominos.jp/eng/regi/",
              expect: :ok, failure: "Couldn't get payment page")

  puts
  puts
  puts "#{"Payment information".colorize(:blue)} (you will be able to review your order later)"

  @credit_card = Preferences.instance.credit_card || CreditCard.new
  @credit_card.input(default_name)

  self.note = Preferences.instance.note ||
              Ask.input("Any special requests? (not food preparation requests)")
end
validate() click to toggle source
# File lib/order_payment.rb, line 26
def validate
  params = default_params.merge("bikoText" => note).merge(@credit_card.params)
  response = Request.post("https://order.dominos.jp/eng/regi/confirm", params,
                          expect: :ok, failure: "Couldn't submit payment information")
  doc = Nokogiri::HTML(response.body)

  token_input = doc.css("input[name='org.apache.struts.taglib.html.TOKEN']").first
  raise "Couldn't get token for order validation" unless token_input && token_input["value"]

  @insert_params = doc.css("input").map { |input| [input["name"], input["value"]] }.to_h

  self.last_review = OrderLastReview.new(doc)
  self.page = response.body
end

Private Instance Methods

default_params() click to toggle source
# File lib/order_payment.rb, line 65
def default_params
  {
    "inquiryRiyoDStr" => "undefined",
    "inquiryCardComCd" => "undefined",
    "inquiryCardBrand" => "undefined",
    "inquiryCreditCardNoXXX" => "undefined",
    "inquiryGoodThruMonth" => "undefined",
    "inquiryGoodThruYear" => "undefined",
    "creditCard" => "undefined",
    "receiptK" => "0",
    "exteriorPayment" => "4",
    "reuseCreditDiv" => "1",
    "rakutenPayment" => "1",
    "isDisplayMailmagaArea" => "true",
    "isProvisionalKokyakuModalView" => "false",
    "isProvisionalKokyaku" => "false"
  }
end