class Payzen::PaymentResponse
Public Class Methods
fractional_payment(params, ext_trans_id, gc_brand, gc_debits, amount, cc_debit, status='CAPTURED')
click to toggle source
# File lib/payzen/payment_response.rb, line 4 def self.fractional_payment(params, ext_trans_id, gc_brand, gc_debits, amount, cc_debit, status='CAPTURED') result = { vads_amount: amount, vads_effective_amount: amount, vads_card_brand: 'MULTI', vads_payment_seq: {trans_id: params[:vads_trans_id], transactions: []} } gc_debits.each_with_index do |debit, i| transaction = { amount: to_cents(debit['amount']), operation_type: 'DEBIT', capture_delay: '0', card_brand: gc_brand, card_number: debit['code'], payment_certificate: '', presentation_date: params[:vads_trans_date], ext_trans_id: ext_trans_id, sequence_number: i+1, trans_id: params[:vads_trans_id], trans_status: status} result[:vads_payment_seq][:transactions].push(transaction) end if cc_debit cc_debit[:sequence_number] = result[:vads_payment_seq][:transactions].size+1 result[:vads_payment_seq][:transactions].push(cc_debit) end result[:vads_payment_seq] = result[:vads_payment_seq].to_json response = params.merge(result) response.reject!{|k, v| k == :vads_card_number || k == :vads_expiry_month || k == :vads_expiry_year || k == :vads_bank_code || k == :vads_bank_product || k == :vads_card_country} response[:signature] = Payzen.signature(response) response end
response_with_psp(params, ext_trans_id, gc_brand, gc_debits, coupon_amount)
click to toggle source
# File lib/payzen/payment_response.rb, line 71 def self.response_with_psp(params, ext_trans_id, gc_brand, gc_debits, coupon_amount) if gc_debits.nil? || gc_debits.empty? return params end payment_seq = { amount: params[:vads_amount], operation_type: params[:vads_operation_type], auth_number: params[:vads_auth_number], capture_delay: params[:vads_capture_delay], card_brand: params[:vads_card_brand], card_number: params[:vads_card_number], expiry_month: params[:vads_expiry_month], expiry_year: params[:vads_expiry_year], payment_certificate: params[:vads_payment_certificate], presentation_date: params[:vads_trans_date], trans_id: params[:vads_trans_id], trans_status: params[:vads_trans_status] } fractional_payment(params, ext_trans_id, gc_brand, gc_debits, (params[:vads_amount].to_i + to_cents(coupon_amount)).to_s, payment_seq) end
response_without_psp(params, ext_trans_id, gc_brand, gc_debits, status='CAPTURED')
click to toggle source
# File lib/payzen/payment_response.rb, line 36 def self.response_without_psp(params, ext_trans_id, gc_brand, gc_debits, status='CAPTURED') if gc_debits.empty? return params end if (gc_debits.size > 1) result = fractional_payment(params, ext_trans_id, gc_brand, gc_debits, params[:vads_amount], nil, status) else result = { vads_amount: params[:vads_amount], vads_effective_amount: params[:vads_amount], vads_presentation_date: params[:vads_trans_date], vads_effective_creation_date: params[:vads_trans_date], vads_warranty_result: 'NO', vads_validation_mode: '0', vads_card_brand: gc_brand, vads_card_number: gc_debits[0]['code'], vads_trans_status: status, vads_capture_delay: '0', vads_auth_mode: 'FULL', vads_auth_number: '', vads_auth_result: '00', vads_threeds_enrolled: '', vads_threeds_status: '', vads_sequence_number: '1', vads_ext_trans_id: ext_trans_id, vads_operation_type: 'DEBIT', vads_payment_certificate: '', vads_card_country: 'FR', vads_result: '00', vads_language: 'fr'} result = params.merge(result) result[:signature] = Payzen.signature(result) end result end
Private Class Methods
to_cents(str)
click to toggle source
# File lib/payzen/payment_response.rb, line 92 def self.to_cents(str) (str.to_f * 100).to_i end