Class: Spree::GmoPgCallbackController

Inherits:
StoreController
  • Object
show all
Defined in:
app/controllers/spree/gmo_pg_callback_controller.rb

Instance Method Summary collapse

Instance Method Details

#callbackObject



7
8
9
10
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
# File 'app/controllers/spree/gmo_pg_callback_controller.rb', line 7

def callback
  @order = Spree::Order.find_by(token: params[:token])

  unless @order
    Rails.logger.error "[GMO-PG 3DS Callback] Order not found: #{params[:token]}"
    redirect_to spree.root_path, alert: 'ご注文が見つかりませんでした'
    return
  end

  payment = @order.payments.valid.last

  unless payment
    Rails.logger.error "[GMO-PG 3DS Callback] Payment not found for order: #{@order.number}"
    redirect_to spree.checkout_state_path(@order.state, token: @order.token)
    return
  end

  # GMO-PGから返ってきたAccessIDを検証
  gmo_pg_data = payment.[:gmo_pg] || {}

  if params[:AccessID].present? && gmo_pg_data[:access_id] != params[:AccessID]
    Rails.logger.warn "[GMO-PG 3DS Callback] AccessID mismatch! Expected: #{gmo_pg_data[:access_id]}, Got: #{params[:AccessID]}"
  end

  Rails.logger.info "[GMO-PG 3DS Callback] Received callback for order: #{@order.number}"

  # CheckoutController#updateに自動submitするHTMLを返す
  render :callback, layout: false
end