module Spree module Api module Returnly class RefundsController < ApiController include ::Returnly::RefundsConfiguration def estimate authorize! :create, Order render json: refund_calculator_class.process(order, line_items_params) end def create authorize! :create, Order refunds = refunder_class.new order: order, line_items: line_items_params, product_refund_amount: product_refund_amount_param, shipping_refund_amount: shipping_refund_amount_param render json: refunds.proceed! end private def line_items_params return [] if params[:items].blank? params.require(:items) end def product_refund_amount_param params.require(:product_refund_amount) end def shipping_refund_amount_param params.require(:shipping_refund_amount) end def order @order ||= Spree::Order.find_by!(number: params[:order_id]) end end end end end