Retour aux SDKsGitHub
R
Ruby SDK
v1.0.0SDK officiel pour Ruby 3.0+ avec support Rails
Installation
gem install simizOu ajoutez dans votre Gemfile :
gem 'simiz', '~> 1.0'Configuration
require 'simiz'
# Configurer le client
Simiz.api_key = ENV['SIMIZ_SECRET_KEY']
# Ou avec des options
client = Simiz::Client.new(
api_key: ENV['SIMIZ_SECRET_KEY'],
api_version: '2024-01',
timeout: 30
)Utilisation
Creer une transaction
transaction = Simiz::Transaction.create(
amount: 5000,
currency: 'XAF',
payment_method: 'ORANGE_MONEY',
payer: {
phone: '237690000000',
name: 'John Doe',
email: 'john@example.com'
},
description: t('public.docs.sdks.ruby.achatSurMaBoutique'),
reference: 'ORDER-123',
metadata: {
order_id: '123',
customer_id: 'cust_456'
},
callback_url: 'https://votre-site.com/webhooks/simiz',
return_url: 'https://votre-site.com/payment/success'
)
puts transaction.id # tx_xxx
puts transaction.status # PENDING
puts transaction.payment_urlRecuperer une transaction
transaction = Simiz::Transaction.retrieve('tx_xxx')
if transaction.status == 'COMPLETED'
puts 'Paiement reussi!'
endLister les transactions
transactions = Simiz::Transaction.list(
limit: 20,
status: 'COMPLETED',
created_after: '2024-01-01'
)
transactions.data.each do |tx|
puts "#{tx.id} - #{tx.amount}"
end
# Pagination automatique
Simiz::Transaction.auto_paging_each do |tx|
puts tx.id
endIntegration Rails
Le SDK s'integre facilement avec Rails.
Initializer (config/initializers/simiz.rb)
Simiz.api_key = Rails.application.credentials.simiz[:secret_key]Controller
class PaymentsController < ApplicationController
def create
transaction = Simiz::Transaction.create(
amount: params[:amount],
currency: 'XAF',
payment_method: 'ORANGE_MONEY',
payer: { phone: params[:phone] },
callback_url: webhooks_simiz_url,
return_url: payment_success_url
)
render json: {
transaction_id: transaction.id,
payment_url: transaction.payment_url
}
end
endWebhooks
class WebhooksController < ApplicationController
skip_before_action :verify_authenticity_token
def simiz
payload = request.body.read
signature = request.headers['X-Simiz-Signature']
begin
event = Simiz::Webhook.construct_event(
payload,
signature,
Rails.application.credentials.simiz[:webhook_secret]
)
rescue Simiz::SignatureVerificationError
return head :bad_request
end
case event.type
when 'transaction.completed'
transaction = event.data
Order.find_by(payment_id: transaction.id)
&.update!(status: 'paid')
when 'transaction.failed'
# Gerer l'echec
end
head :ok
end
endGestion des erreurs
begin
transaction = Simiz::Transaction.create(...)
rescue Simiz::AuthenticationError => e
# Cle API invalide
Rails.logger.error "Verifiez votre cle API"
rescue Simiz::InvalidRequestError => e
# Parametres invalides
Rails.logger.error "Erreur: #{e.message}"
Rails.logger.error "Parametre: #{e.param}"
rescue Simiz::APIError => e
# Erreur serveur
Rails.logger.error "Erreur API: #{e.message}"
end