Module: Spree::Core::ControllerHelpers::PaymentParameters
- Included in:
- BaseController
- Defined in:
- lib/spree/core/controller_helpers/payment_parameters.rb
Instance Method Summary collapse
-
#move_payment_source_into_payments_attributes(params) ⇒ Object
This method handles the awkwardness of how the html forms are currently set up for frontend.
-
#move_wallet_payment_source_id_into_payments_attributes(params) ⇒ Object
This method handles the awkwardness of how the html forms are currently set up for frontend.
-
#set_payment_parameters_amount(params, order) ⇒ Object
This is a strange thing to do since an order can have multiple payments but we always assume that it only has a single payment and that its amount should be the current order total.
Instance Method Details
#move_payment_source_into_payments_attributes(params) ⇒ Object
This method handles the awkwardness of how the html forms are currently set up for frontend.
This method expects a params hash in the format of:
{ payment_source: { # The keys here are spree_payment_method.id's '1' => attributes for payment method 1..., '2' => attributes for payment method 2..., }, order: { # Note that only a single entry is expected/handled in this array payments_attributes: [ { payment_method_id: '1', }, ], ...other params... }, ...other params... }
And this method modifies the params into the format of:
{ order: { payments_attributes: [ { payment_method_id: '1', source_attributes: attributes for payment method 1... }, ], ...other params... }, ...other params... }
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/spree/core/controller_helpers/payment_parameters.rb', line 43 def move_payment_source_into_payments_attributes(params) # Step 1: Gather all the information and ensure all the pieces are there. return params if params[:payment_source].blank? payment_params = params[:order] && params[:order][:payments_attributes] && params[:order][:payments_attributes].first return params if payment_params.blank? payment_method_id = payment_params[:payment_method_id] return params if payment_method_id.blank? source_params = params[:payment_source][payment_method_id] return params if source_params.blank? # Step 2: Perform the modifications. payment_params[:source_attributes] = source_params params.delete(:payment_source) params end |
#move_wallet_payment_source_id_into_payments_attributes(params) ⇒ Object
This method handles the awkwardness of how the html forms are currently set up for frontend.
This method expects a params hash in the format of:
{ order: { wallet_payment_source_id: '123', ...other params... }, cvc_confirm: '456', # optional ...other params... }
And this method modifies the params into the format of:
{ order: { payments_attributes: [ { source_attributes: { wallet_payment_source_id: '123', verification_value: '456', }, }, ] ...other params... }, ...other params... }
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/spree/core/controller_helpers/payment_parameters.rb', line 98 def move_wallet_payment_source_id_into_payments_attributes(params) return params if params[:order].blank? wallet_payment_source_id = params[:order][:wallet_payment_source_id].presence cvc_confirm = params[:cvc_confirm].presence return params if wallet_payment_source_id.nil? params[:order][:payments_attributes] = [ { source_attributes: { wallet_payment_source_id: wallet_payment_source_id, verification_value: cvc_confirm } } ] params[:order].delete(:wallet_payment_source_id) params.delete(:cvc_confirm) params end |
#set_payment_parameters_amount(params, order) ⇒ Object
This is a strange thing to do since an order can have multiple payments but we always assume that it only has a single payment and that its amount should be the current order total. Also, this is pretty much overridden when the order transitions to confirm by the logic inside of Order#add_store_credit_payments. We should reconsider this method and its usage at some point.
This method expects a params hash in the format of:
{ order: { # Note that only a single entry is expected/handled in this array payments_attributes: [ { ...params... }, ], ...other params... }, ...other params... }
And this method modifies the params into the format of:
{
order: {
payments_attributes: [
{
...params...
amount:
158 159 160 161 162 163 164 165 |
# File 'lib/spree/core/controller_helpers/payment_parameters.rb', line 158 def set_payment_parameters_amount(params, order) return params if params[:order].blank? return params if params[:order][:payments_attributes].blank? params[:order][:payments_attributes].first[:amount] = order.total params end |