Lorsqu'il s'agit de gérer les paiements en ligne, la sécurité est primordiale, quel que soit votre domaine d'activité.
Si vous êtes un développeur Ruby on Rails à la recherche d'une solution simple pour intégrer des paiements en ligne, laissez-moi vous présenter la gem Payify. Avec Payify, vous pouvez mettre en place un système de paiement via Stripe en seulement 5 minutes.
Stripe est un service de paiement en ligne populaire qui permet de simplifier le processus de paiement et de sécuriser les transactions. En l'intégrant dans votre application Rails, vous pouvez offrir à vos utilisateurs une expérience de paiement fluide et sécurisée.
Comment fonctionne un paiement simple avec Stripe ?
-
Création d’une demande de paiement (payment intent) : Une demande de paiement est créée avec Stripe, générant une clé unique.
-
Affichage du formulaire de paiement : Utilisez cette clé pour afficher un formulaire de paiement sécurisé fourni par Stripe.
-
Vérification du paiement : Une fois le formulaire rempli par l’utilisateur, l’API de Stripe est appelée pour vérifier si le paiement a bien été effectué.
La gem Payify a été développée pour faciliter cette intégration dans votre application Ruby on Rails.
Cas pratique
La gem Payify a été spécialement conçue pour Ruby on Rails 7. Si vous utilisez une version antérieure de Ruby on Rails, il est possible que vous rencontriez des problèmes de compatibilité.
Étape 1 : Initialisation d'une application Rails
Commencez par initialiser votre projet Rails avec la commande suivante, en remplaçant YOUR_APP_NAME
par le nom de votre application :
rails new YOUR_APP_NAME
cd YOUR_APP_NAME
Étape 2 : Installation de la gem Payify
Ajoutez la gem Payify à votre Gemfile :
gem "payify"
Ensuite, exécutez la commande suivante dans votre terminal :
bundle install
Pour installer les migrations de la gem dans votre application, exécutez la commande suivante :
rails payify_engine:install:migrations
Maintenant, nous allons configurer les routes de la gem Payify :
Pour ce faire, ouvrez le fichier config/routes.rb
et ajoutez la ligne suivante :
mount Payify::Engine => '/payify', as: 'payify'
Étape 3 : Tables et migrations
Nous allons créer une table pour le modèle que nous souhaitons rendre payable, dans notre cas une réservation (booking) avec un prix.
Exécutez la commande suivante pour créer la table des réservations :
rails generate migration CreateBookings
Dans le fichier de migration généré, définissez les colonnes de la table :
def change
create_table :bookings do |t|
t.date :start_date
t.date :end_date
t.decimal :total_ttc, default: 0.0
end
end
Puis exécutez les migrations de la base de données :
rails db:migrate
Étape 4 : Création du modèle
Créez le modèle correspondant à la table des réservations (bookings) :
# app/models/booking.rb
class Booking < ApplicationRecord
include ::Payify::HasPaymentConcern
validates :start_date, :end_date, :presence => true
after_save :create_payment
def amount_to_pay
total_ttc
end
end
Le modèle Booking
utilise le concern HasPaymentConcern
fourni par la gem Payify. Il définit également la méthode amount_to_pay
qui renvoie le montant total à payer pour la réservation.
Étape 5 : Création d'un compte Stripe
Avant de pouvoir demander des paiements, vous devez créer un compte sur Stripe. Suivez les étapes pour créer un compte et générer les clés d'API nécessaires.
Ensuite, créez un fichier .env
à la racine de votre application pour stocker les clés d'API :
STRIPE_API_KEY="VOTRE_CLE_API_SECRETE"
STRIPE_PUBLISHABLE_KEY="VOTRE_CLE_PUBLIQUE"
Étape 6 : Formulaire de paiement
Nous allons créer une route permettant d'accéder au formulaire de paiement pour une réservation spécifique.
Dans le fichier config/routes.rb
, ajoutez la route suivante à la ressource bookings
:
resources :bookings do
member do
post "payment"
end
end
Dans le contrôleur BookingsController
, ajoutez une méthode payment
et faites la demande de paiement à Stripe :
# app/controllers/bookings_controller.rb
class BookingsController < ApplicationController
def payment
if @booking.payment_pending?
@booking.payment.stripe_init_intent
end
end
end
Dans la vue views/bookings/payment.html.erb
, incluez le formulaire de paiement en utilisant la ligne suivante :
<% unless @booking.paid? || @booking.payment.nil? %>
<%= render "payify/payments/form", payment: @booking.payment %>
<% end %>
Étape 7 : Confirmation
Enfin, nous allons personnaliser la vue qui affiche la confirmation après le paiement.
Créez le fichier views/payify/payments/complete.html.erb
avec le contenu suivant :
<div class="container py-5">
<div class="mb-4">
<h1>Statut de paiement de votre réservation</h1>
</div>
<% if @payment.paid? %>
<div class="alert alert-success" role="alert">
Paiement réussi !
</div>
<% else %>
<div class="alert alert-danger" role="alert">
En attente
</div>
<% end %>
</div>
Avec ces étapes, vous pouvez désormais accepter des paiements en ligne pour vos réservations grâce à Stripe en utilisant la gem Payify.
N'hésitez pas à personnaliser davantage l'intégration en fonction des besoins spécifiques de votre application.
Contribuer
Payify est une gem Ruby que j'ai créée avec soin. Si vous avez des difficultés à l'utiliser ou si vous avez des suggestions d'utilisation supplémentaires, n'hésitez pas à me contacter directement ou à contribuer via les issues et les pull requests sur GitHub. Je prendrai le temps d'examiner vos retours attentivement.
Si cet article vous a plu et vous a été utile, n'hésitez pas à ajouter une étoile au dépôt GitHub de la gem. Votre soutien est grandement apprécié !
-
Impossible de se connecter à des sites internet, quel que soit le navigateur ? Vérifiez l'heure système.
3 juillet 2023 -
Comment construire une vision d'entreprise ?
1er février 2023 -
Comment se lever tôt peut vous aider à atteindre vos objectifs ?
28 janvier 2023