# -*- encoding : utf-8 -*- class Public::SponsorshipAnimalsController < ApplicationController layout "public" skip_before_filter :verify_authenticity_token, :only => [:payplug_ipn] def index @sponsorship_animals = SponsorshipAnimal.all end def show @sponsorship_animal = SponsorshipAnimal.find(params[:id]) @donator_transaction = DonatorTransaction.new(:recurrent => false) @donator_transaction.particular_bill = Particular.new(:particular_type => "facturation", :skip_validation => true) transaction_item = TransactionItem.new(:amount => 50) transaction_item.transaction_content = TransactionSponsorship.new(:sponsorship_animal_id => @sponsorship_animal.id) @donator_transaction.transaction_items << transaction_item end def donate_save @donator_transaction = DonatorTransaction.new(params.require(:donator_transaction).permit!) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal @donator_transaction.particular_idem = true #@donator_transaction.particular_bill = Particular.new(:particular_type => "facturation", :skip_validation => true) @donator_transaction.particular_send = Particular.new(:particular_type => "expedition", :skip_validation => true) @donator_transaction.tr_payment = TrPayment.new() @donator_transaction.particular_bill.skip_validation = true #@donator_transaction.particular_bill.validate_email = true if @donator_transaction.save @donator_transaction = DonatorTransaction.find(@donator_transaction.id) @donator_transaction.particular_bill.skip_validation = false redirect_to particulars_public_sponsorship_animal_path(@donator_transaction.id) else render :action => :show end end def particulars @donator_transaction = DonatorTransaction.find(params[:id]) @donator_transaction.particular_bill.skip_validation = false @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal end def particulars_save @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal @donator_transaction.particular_bill.skip_validation = false if @donator_transaction.update_attributes(params.require(:donator_transaction).permit!) redirect_to select_payment_public_sponsorship_animal_path(@donator_transaction.id) else render :action => :particulars end end def select_payment @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal if @donator_transaction.recurrent == true @donator_transaction.tr_payment.tr_payment_type_id = 5 else @donator_transaction.tr_payment.tr_payment_type_id = 3 end end def select_payment_save @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal @donator_transaction.particular_bill.skip_validation = false if @donator_transaction.update_attributes(params.require(:donator_transaction).permit!) if @donator_transaction.tr_payment_type and @donator_transaction.tr_payment_type_id == 3 redirect_to paid_by_payplug_public_sponsorship_animal_path(@donator_transaction.id) else if @donator_transaction.tr_payment_type_id == 5 SponsorshipAnimalMails.confirmation_pa(@donator_transaction).deliver elsif @donator_transaction.tr_payment_type_id == 1 SponsorshipAnimalMails.confirmation_cheque(@donator_transaction).deliver end redirect_to payment_instructions_public_sponsorship_animal_path(@donator_transaction.id) end else render :action => :particulars end end def payment_instructions @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal end def edit @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal end def update @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal #@donator_transaction.particular_bill.validate_email =true if @donator_transaction.update_attributes(params.require(:donator_transaction).permit!) redirect_to particulars_public_sponsorship_animal_path(@donator_transaction.id) else render :action => :edit end end def paid_by_payplug @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal if @donator_transaction.paid redirect_to select_payment_public_donator_transaction_path(@donator_transaction.id) else options = { :amount => @donator_transaction.total, :email => @donator_transaction.particular_bill.email , :first_name => @donator_transaction.particular_bill.firstname, :last_name => @donator_transaction.particular_bill.name, :return_url => "http://#{HOSTNAME}"+paid_by_payplug_confirm_public_sponsorship_animal_path(@donator_transaction.id), :cancel_url => "http://#{HOSTNAME}"+select_payment_public_sponsorship_animal_path(@donator_transaction.id), :notification_url => "http://#{HOSTNAME}"+payplug_ipn_public_sponsorship_animals_path(), :donate_transaction_id => @donator_transaction.id, :save_card => @donator_transaction.recurrent, } payplug_init_payement(options) response = @new_payplug_payment @donator_transaction.tr_payment.payplug_payment_id = response["id"] @donator_transaction.save redirect_to response["hosted_payment"]["payment_url"] #-H "Authorization: Bearer sk_live_43b7e007298f57f7aedee32800a52301" #render :inline => "ok" end end def paid_by_payplug_confirm @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal end def paid_by_payplug_confirm @donator_transaction = DonatorTransaction.find(params[:id]) @sponsorship_animal = @donator_transaction.transaction_items[0].transaction_content.sponsorship_animal payplug_retrieve_payement @donator_transaction.tr_payment.payplug_payment_id if @response and @response["is_paid"] == true# || response["is_paid"] == "true" @paid = true else redirect_to select_payment_public_sponsorship_animal_path(@donator_transaction.id, :paid_fail => 1) end end def payplug_ipn payplug_retrieve_payement(params[:id]) response = @response #redirect_to response["hosted_payment"]["payment_url"] puts response puts "TESt" puts response["metadata"]["donate_transaction_id"] @donator_transaction = DonatorTransaction.find(response["metadata"]["donate_transaction_id"].to_i) @tr_payment = @donator_transaction.tr_payment @tr_payment.tr_payment_type_id = 3 @tr_payment.amount = response["amount"].to_i*0.1 @tr_payment.payplug_payment_id = response["id"] if response["card"] @tr_payment.payplug_card_id = response["card"]["id"] @tr_payment.payplug_card_expiry_month = response["card"]["exp_month"] @tr_payment.payplug_card_expiry_year = response["card"]["exp_year"] @tr_payment.payplug_card_last_number = response["card"]["last4"] end if response["is_paid"] == true || response["is_paid"] == "true" @tr_payment.paid_at = Time.now @donator_transaction.paid = true if @donator_transaction.recurrent SponsorshipAnimalMails.confirmation_cb_rec(@donator_transaction).deliver else SponsorshipAnimalMails.confirmation_cb(@donator_transaction).deliver end else @donator_transaction.paid = false end @donator_transaction.save @tr_payment.save render :inline => "ok" end end