0.01
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Simple rails engine to add payments to your web application using sermepa standard web tpv
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Sermepa web TPV

Add simple web payment tpv to your rails application. This version is compliance with new hmac 256 signature. For older sha1 signature use version 0.0.2.

Example app source at: https://github.com/ritxi/sermepa_web_tpv_sample_app

Steps to use it:

  1. Create a new rails application

    rails new payment_app

  2. Add sermepa_web_tpv to your Gemfile

    gem 'sermepa_web_tpv'

  3. Add a transaction model with an amount and transaction_number fields

    rails g model Transaction amount:float transaction_number:integer

  4. Configure tpv options

module MyApp
  class Application < Rails::Application
    config.web_tpv.bank_url = 'https://sis-t.sermepa.es:25443/sis/realizarPago'
    config.web_tpv.response_host = 'https://my_application_host.com'
    config.web_tpv.merchant_code = '000000000'
    config.web_tpv.terminal = 1
    config.web_tpv.callback_response_path = '/payments/validate'
    config.web_tpv.redirect_success_path = '/payments/success'
    config.web_tpv.redirect_failure_path = '/payments/failure'
    config.web_tpv.merchant_secret_key = 'superseeeecretstring'
    config.web_tpv.currency = 978 # Euro

    config.web_tpv.transaction_type = 0
    config.web_tpv.language = '003' #Catala
    config.web_tpv.merchant_name = 'MY MERCHANT NAME'
    config.web_tpv.pay_methods = 'C' # Only credit card
  end
end
  1. Add a controller payment to perform a new request payment and receive payment result
MyApp::Application.routes.draw do
  get 'payments/new' => 'payments#new', :as => 'new_payment'
  post 'payments/validate' => 'payments#validate', :as => 'payment_validate'
  get  'payments/success' => 'payments#success', :as => 'payment_success'
  get  'payments/failure' => 'payments#failure', :as => 'payment_failure'
end
class PaymentsController
  skip_before_filter :verify_authenticity_token

  def new
    transaction = Transaction.new(amount: 10)
    request = SermepaWebTpv::Request.new(transaction, "Transaction description")
    request.transact {|t| t.save }
    render json: { options: sermepa_request.options, url: sermepa_request.bank_url }
    # Submit a form with given options to the url
  end

  def success
    flash[:notice] = "Payment done successfuly!"
    redirect_to root_path
  end

  def failure
    flash[:failure] = "Payment failed, try again later."
    redirect_to root_path
  end

  def validate
    response = SermepaWebTpv::Response.new(params)
    if response.valid? && response.success?
      # mark your transaction as finished
    end
  end
end