This is the base ruby gem for interacting with the Razorpay API. This is primarily meant for users who wish to perform interactions with the Razorpay API programatically.
Add this line to your application's Gemfile:
gem'razorpay'And then execute:
$ bundle
Or install it yourself as:
$ gem install razorpay
Remember to require 'razorpay' before anything else.
Next, you need to setup your key and secret using the following:
Razorpay.setup('key_id','key_secret')You can set customer headers for your requests using the following:
Razorpay.headers={"CUSTOM_APP_HEADER"=>"CUSTOM_VALUE"}You can find your API keys at https://dashboard.razorpay.com/#/app/keys.
If you are using rails, the right place to do this might be config/initializers/razorpay.rb.
The most common construct is capturing a payment, which you do via the following:
Razorpay::Payment.fetch("payment_id").capture({amount:500})# Note that the amount should come from your session, so as to verify# that the purchase was correctly done and not tamperedYou can refund a payment via the following:
Razorpay::Payment.fetch("payment_id").refund({amount:500})refunds=Razorpay::Payment.fetch("payment_id").refundsA payment can also be refunded without fetching it:
refund=Razorpay::Refund.create(payment_id:"payment_id")Razorpay::Refund.fetch(refund.id)If payment is captured or refunded via capture! or refund!, then the calling object is also updated:
payment=Razorpay::Payment.fetch('payment_id')payment.status# 'authorized'payment.capture!payment.status# 'captured'payment.refund!payment.status# 'refunded'For other applications (such as fetching payments and refunds), see our online documentation on https://docs.razorpay.com
You can use the orders API using the following constructs:
You can find docs at https://docs.razorpay.com/v1/page/orders
order=Razorpay::Order.createamount: 5000,currency: 'INR',receipt: 'TEST'# order.id = order_50sX9hGHZJvjjI# Same collection as Refunds or Paymentsorders=Razorpay::Order.all# Fetching an Orderorder=Razorpay::Order.fetch('order_50sX9hGHZJvjjI')putsorder.amount# Fetching payments corresponding to an orderpayments=order.paymentsYou can use the Utility class to verify the signature received in response to a payment made using Orders API
putspayment_response# {# :razorpay_order_id => "fake_order_id",# :razorpay_payment_id => "fake_payment_id",# :razorpay_signature => "signature"# }Razorpay::Utility.verify_payment_signature(payment_response)You can also verify the signature received in a webhook:
Razorpay::Utility.verify_webhook_signature(webhook_body,webhook_signature,webhook_secret)# Create a customercustomer=Razorpay::Customer.createemail: 'test@razorpay.com',contact: '9876543210'putscustomer.id#cust_6vRXClWqnLhV14# Fetch a cardcard=Razorpay::Card.fetch('card_7EZLhWkDt05n7V')putscard.network#VISAYou can find cards API documentation at https://docs.razorpay.com/v1/page/cards.
# Creating an invoiceinvoice=Razorpay::Invoice.createcustomer_id: customer.id,amount: 100,currency: 'INR',description: 'Test description',type: 'link'You can find invoices API documentation at https://docs.razorpay.com/v1/page/invoices.
# Creating a planplan=Razorpay::Plan.createinterval: 1,period: 'monthly',item: {name: 'fake_plan',description: 'fake_desc',currency: 'INR',amount: 500},notes: {identifier: 'plan_monthly_super'}You can find plan API documentation at https://razorpay.com/docs/subscriptions/api/#plan.
# Creating a subscription and starting after 24 hours (24 hours = 60 * 60 * 24)subscription=Razorpay::Subscription.createplan_id: plan.id,customer_id: customer.id,start_at: (Time.now + (60 * 60 * 24)).to_i,total_count: 3You can find subscription API documentation at https://razorpay.com/docs/subscriptions/api/#subscription.
# Creating an addonsubscription_addon=Razorpay::Addon.createsubscription.id,item: {name: 'fake_plan',description: 'fake_desc',currency: 'INR',amount: 500},quantity: 1# Fetching an addonaddon=Razorpay::Addon.fetchsubscription_addon.idYou can find addon API documentation at https://razorpay.com/docs/subscriptions/api/#add-on.
- Everything is namespaced under the Razorpay module
- We use rubocop for checking style guidelines
- Rake + MiniTest is using as the testrunner
- Webmock is used as the request mock framework
- HTTParty is used for making requests
- Travis is used for CI
- Coveralls is used for coverage reports
- Fork it ( https://github.com/razorpay/razorpay-ruby/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Run
rakeandrubocopafter making your changes to make sure you didn't break anything - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
While we support all currently supported versions of Ruby only, the code is tested against the following versions:
- 1.9.3
- 2.0.0
- 2.1.10
- 2.3.8
- 2.4.6
- 2.5.5
- 2.6.2
Steps to follow for a release:
- Merge the branch with the new code to master.
- Bump the Version in
lib/razorpay/constants.rb - Rename Unreleased to the new tag in
CHANGELOG - Fix links at bottom in
CHANGELOG - Commit (message should include version number)
- Tag the release and push to GitHub. Get the tag signed using Razorpay GPG key.
- Create a release on GitHub using the website with more details about the release
- Run
gem build razorpay-ruby.gemspec - Run
gem push razorpay-{version}.gem
gem push will ask you for credentials, if you are not logged in already.