# frozen_string_literal: true require 'stripe/helper' require 'pay_zen/helper' # API Controller for cart checkout class API::CheckoutController < API::APIController include ::API::OrderConcern before_action :authenticate_user! before_action :current_order before_action :ensure_order def payment authorize @current_order, policy_class: CheckoutPolicy if @current_order.statistic_profile_id.nil? && current_user.privileged? user = User.find(params[:customer_id]) @current_order.statistic_profile = user.statistic_profile end res = Checkout::PaymentService.new.payment(@current_order, current_user, params[:coupon_code], params[:payment_id]) render json: res rescue Stripe::StripeError => e render json: Stripe::Helper.human_error(e), status: :unprocessable_entity rescue PayzenError => e render json: PayZen::Helper.human_error(e), status: :unprocessable_entity rescue StandardError => e Rails.logger.error e Rails.logger.debug e.backtrace render json: e, status: :unprocessable_entity end def confirm_payment authorize @current_order, policy_class: CheckoutPolicy res = Checkout::PaymentService.new.confirm_payment(@current_order, params[:coupon_code], params[:payment_id]) render json: res rescue StandardError => e render json: e, status: :unprocessable_entity end end