vita_app/app/controllers/public/donator_transactions_controller.rb
Nicolas Bally 1d3af87d4c initial
2016-04-28 10:07:08 +02:00

330 lines
9.1 KiB
Ruby
Executable File

# -*- encoding : utf-8 -*-
class Public::DonatorTransactionsController < ApplicationController
layout "public"
skip_before_filter :verify_authenticity_token, :only => [:payplug_ipn]
def new
@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 = TransactionDonate.new(:donate_destination_id => 1)
@donator_transaction.transaction_items << transaction_item
end
def create
@donator_transaction = DonatorTransaction.new(params.require(:donator_transaction).permit!)
@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_donator_transaction_path(@donator_transaction.id)
else
render :action => :new
end
end
def particulars
@donator_transaction = DonatorTransaction.find(params[:id])
@donator_transaction.particular_bill.skip_validation = false
end
def particulars_save
@donator_transaction = DonatorTransaction.find(params[:id])
@donator_transaction.particular_bill.skip_validation = false
if @donator_transaction.update_attributes(params.require(:donator_transaction).permit!)
redirect_to select_payment_public_donator_transaction_path(@donator_transaction.id)
else
render :action => :particulars
end
end
def select_payment
@donator_transaction = DonatorTransaction.find(params[:id])
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])
@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_donator_transaction_path(@donator_transaction.id)
else
if @donator_transaction.tr_payment_type_id == 5
DonateTransactionsMails.confirmation_pa(@donator_transaction).deliver
elsif @donator_transaction.tr_payment_type_id == 1
DonateTransactionsMails.confirmation_cheque(@donator_transaction).deliver
end
redirect_to payment_instructions_public_donator_transaction_path(@donator_transaction.id)
end
else
render :action => :particulars
end
end
def payment_instructions
@donator_transaction = DonatorTransaction.find(params[:id])
end
def edit
@donator_transaction = DonatorTransaction.find(params[:id])
end
def update
@donator_transaction = DonatorTransaction.find(params[:id])
#@donator_transaction.particular_bill.validate_email =true
if @donator_transaction.update_attributes(params.require(:donator_transaction).permit!)
redirect_to particulars_public_donator_transaction_path(@donator_transaction.id)
else
render :action => :edit
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
DonateTransactionsMails.confirmation_cb_rec(@donator_transaction).deliver
else
DonateTransactionsMails.confirmation_cb(@donator_transaction).deliver
end
else
@donator_transaction.paid = false
end
@donator_transaction.save
@tr_payment.save
render :inline => "ok"
end
#card_7gtdWugb6n0RtzfjYdq8hl
def paid_by_payplug_recurent_sample
@donator_transaction = DonatorTransaction.find(params[:id])
api_key = "sk_test_334683e60741f814b8e715b855eb8243"
host = "http://78.245.74.12"
@data = {
"amount" => 8800,
"payment_method" => "card_7gtdWugb6n0RtzfjYdq8hl",
"currency" => "EUR",
"customer" =>{
"email" => "john.watson@example.net",
"first_name" => "John",
"last_name" => "Watson"
},
"notification_url" => "#{host}"+payplug_ipn_public_donator_transactions_path(),
"metadata" => {
"donate_transaction_id" => @donator_transaction.id
},
"force_3ds" => true
}
@c = Curl::Easy.new("https://api.payplug.com/v1/payments") do |curl|
curl.headers["Authorization"] = "Bearer "+api_key
curl.headers["Content-Type"] = "application/json"
#@datacurl.datas["amount"] = @data
curl.verbose = true
end
@c.http_post(@data.to_json)
response = JSON.parse(@c.body_str)
#redirect_to response["hosted_payment"]["payment_url"]
#-H "Authorization: Bearer sk_live_43b7e007298f57f7aedee32800a52301"
#render :inline => "ok"
end
def paid_by_payplug
@donator_transaction = DonatorTransaction.find(params[:id])
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_donator_transaction_path(@donator_transaction.id),
:cancel_url => "http://#{HOSTNAME}"+select_payment_public_donator_transaction_path(@donator_transaction.id),
:notification_url => "http://#{HOSTNAME}"+payplug_ipn_public_donator_transactions_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_id
@donator_transaction = DonatorTransaction.find(params[:id])
api_key = "sk_test_334683e60741f814b8e715b855eb8243"
host = "http://78.245.74.12"
@data =
@c = Curl::Easy.new("https://api.payplug.com/v1/payments/pay_5QUqqcwKSiKrJH5qnODfR6") do |curl|
curl.headers["Authorization"] = "Bearer "+api_key
curl.headers["Content-Type"] = "application/json"
#@datacurl.datas["amount"] = @data
curl.verbose = true
end
@c.http_get()
response = JSON.parse(@c.body_str)
#redirect_to response["hosted_payment"]["payment_url"]
#-H "Authorization: Bearer sk_live_43b7e007298f57f7aedee32800a52301"
#render :inline => "ok"
end
def paid_by_payplug_confirm
@donator_transaction = DonatorTransaction.find(params[:id])
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_donator_transaction_path(@donator_transaction.id, :paid_fail => 1)
end
end
protected
end