Paymob::Engine
This gem simplifies the integration of your application with the Paymob payment gateway. It offers a set of user-friendly methods for creating one-time payments, wallet payments, and installment payments, streamlining the payment process for your application. By using this gem, developers can easily implement a robust payment solution in their projects.
Installation
Add this line to your application's Gemfile:
gem "paymob-engine"And then execute:
bundleOr install it yourself as:
gem install paymob-engineUsage
1. Set the Gem Configuration Variables
you must configure it with the necessary credentials and settings. you will find all variables in config/initializers/paymob.rb file
Paymob.setup do |config|
config.base_url = 'https://accept.paymobsolutions.com/api'
config.api_key = ''
config.hmac_secret = ''
config.onetime_integration_id = ''
config.wallet_integration_id = ''
config.installment_integration_id = ''
config.ifream_link = 'https://accept.paymobsolutions.com/api/acceptance/iframes/'
config.onetime_ifream_number = ''
config.installment_ifream_number = ''
endNote: api_key, hmac_secret are mandatory and each payment type variables are mandatory if you need use this payment type.
You can found all information in your dashboard.
2. How to Initialize an Order for new payment
Each payment method class inherits from a base class. To initiate a payment, select the class corresponding to the desired payment type. Start by invoking the initialize_order method with essential attributes, including a float amount, a string payment_reference, and a hash for billing_data containing required keys: first_name, last_name, email, and phone_number. Subsequently, use the payment_link method to obtain the payment link.
The available class for each payment type are:
Paymob::PaymentTypes::OnetimePaymob::PaymentTypes::WalletPaymob::PaymentTypes::Installment
3. Create an One-Time Payment
Use the Paymob::PaymentTypes::Onetime class:
payment_data = {
amount: "Your value in numbers",
billing_data: {
first_name: "Test",
last_name: "Account",
email: "test@email.com",
phone_number:"01111111111"
},
payment_reference: "Your generated payment reference"
}
onetime = Paymob::PaymentTypes::Onetime.new
onetime.initialize_order(payment_data)
onetime.payment_link4. Create a Wallet Payment
Use the Paymob::PaymentTypes::Wallet class:
Note: you must pass the mobile number wallet you need to pay from it
payment_data = {
amount: "Your value in numbers",
billing_data: {
first_name: "Test",
last_name: "Account",
email: "test@email.com",
phone_number:"01111111111"
},
payment_reference: "Your generated payment reference"
}
wallet = Paymob::PaymentTypes::Wallet.new
wallet.initialize_order(payment_data)
wallet.payment_link(mobile_number: '01010101010')5. Create an Installment Payment
Use the Paymob::PaymentTypes::Installment class:
payment_data = {
amount: "10",
billing_data: {
first_name: "Test",
last_name: "Account",
email: "test@email.com",
phone_number:"01111111111"
},
payment_reference: "Your generated payment reference"
}
installment = Paymob::PaymentTypes::Installment.new
installment.initialize_order(payment_data)
installment.payment_linkHow to evaluate the HMAC
The Paymob::Hmac class provides helpful methods for handling HMAC operations. Below are the explanations of each method:
calculate
This method accepts a hash of parameters and returns the HMAC for these parameters.
Example:
hmac = Paymob::Hmac.calculate(params_hash) # 6d9bb40e5b46b7166bb032cb075c8921matches_original?
This method compares the HMAC generated from the provided parameters with an original HMAC and returns a boolean value indicating whether they match.
match = Paymob::Hmac.matches_original?(response_params, original_hmac) # trueContributing
We welcome contributions to improve paymob-rails! Whether you want to fix a bug, implement a new feature, or suggest improvements, we appreciate your efforts.
Feel free to customize this template to suit the specific guidelines and processes of your project.
License
The gem is available as open source under the terms of the MIT License.