Class: Ishapi::PaymentsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/ishapi/payments_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#home, #long_term_token, #test

Instance Method Details

#createObject

this is for invoices on wasya.co, isn’t it? 20200712



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/controllers/ishapi/payments_controller.rb', line 11

def create
  authorize! :open_permission, ::Ishapi
  begin
    invoice = Ish::Invoice.where( :email => params[:email], :number => params[:number] ).first
    payment = Ish::Payment.new :invoice => invoice, :email => params[:email], :amount => params[:amount]
    amount_cents  = ( params[:amount].to_f * 100 ).to_i

    ::Stripe.api_key = STRIPE_SK
    acct = Stripe::Account.create(
      :country => 'US',
      :type => 'custom'
    )
    charge = ::Stripe::Charge.create(
      :amount => amount_cents,
      :currency => 'usd',
      :source => params[:token][:id],
      :destination => {
        :account => acct,
      }
    )

    payment.charge = JSON.parse( charge.to_json )
    if payment.save
      render :json => { :status => :ok }
    else
      render :status => 404, :json => {}
    end
  rescue Mongoid::Errors::DocumentNotFound => e
    puts! e, 'e'
    render :status => 404, :json => {}
  end
end

#create2Object

This is for guyd vp 20200721



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'app/controllers/ishapi/payments_controller.rb', line 45

def create2
  authorize! :create, ::Ish::Payment

  begin
    amount_cents  = 503 # @TODO: change

    ::Stripe.api_key = STRIPE_SK
    intent = Stripe::PaymentIntent.create({
      amount: amount_cents,
      currency: 'usd',
      metadata: { integration_check: "accept_a_payment" },
    })

    payment = Ish::Payment.create!(
      client_secret: intent.client_secret,
      email: @current_user.email,
      payment_intent_id: intent.id,
      profile_id: @current_user.profile.id )

    render json: { client_secret: intent.client_secret }
  rescue Mongoid::Errors::DocumentNotFound => e
    puts! e, 'e'
    render :status => 404, :json => e
  end
end

#stripe_confirmObject

webhook



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'app/controllers/ishapi/payments_controller.rb', line 72

def stripe_confirm
  authorize! :open_permission, ::Ishapi
  payload = request.body.read
  event = nil
  begin
    event = Stripe::Event.construct_from(JSON.parse(payload, symbolize_names: true))
  rescue StandardError => e
    puts! e, 'e'
    render status: 400, json: { status: :not_ok }
    return
  end

  payment_intent = event.data.object

  payment = Ish::Payment.where( payment_intent_id: payment_intent.id ).first
  if payment && payment_intent['status'] == 'succeeded'
    payment.update_attributes( status: :confirmed )
    payment.profile.update_attributes!( n_unlocks: payment.profile.n_unlocks + 5 )
  end

  render status: 200, json: { status: :ok }
end

#unlockObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'app/controllers/ishapi/payments_controller.rb', line 95

def unlock
  authorize! :unlock, ::Ish::Payment
  item = Object::const_get(params['kind']).find params['id']

  existing = Purchase.where( user_profile: @current_user.profile, item: item ).first
  if existing
    render status: 200, json: { status: :ok, message: 'already purchased' }
    return
  end

  @current_user.profile.update_attributes n_unlocks: @current_user.profile.n_unlocks - 1 # @TODO: the number is variable
  purchase = ::Gameui::PremiumPurchase.create!( item: item, user_profile: @current_user.profile, )

  render status: 200, json: { status: :ok }
end