SaferpayRuby
Saferpay JSON application programming interface with a ruby API wrapper built with Net::HTTP
Saferpay API is designed to have predictable, resource-oriented URLs and to use HTTP response codes to indicate API errors. Saferpay use built-in HTTP features, like HTTP authentication and HTTP verbs, which can be understood by off-the-shelf HTTP clients. JSON will be returned in all responses from the API, including errors.
You can contact Saferpay to get ahold of your documentation PDF. Ask for the Payment Page integration documentation.
For more information about Saferpay API, please visit https://saferpay.github.io/jsonapi
Installation
Add this line to your application's Gemfile:
gem 'saferpay_ruby'
And then execute:
$ bundle
Or install it yourself as:
$ gem install saferpay_ruby
Usage
Following are brief instructions to create and setup a saferpay account for testing.
Firstly You'll need to create a test account on https://test.saferpay.com
For Production use https://myportal.six-payment-services.com/
After Logging in, Go to Settings Section,
You'll need to create a Payment Mean / Terminal, Remember to fetch terminalId and customerId.
Add JSON API basic authentication, returning username and password, which will base 64 encoded and then used as authentication header in API
Configure the credentials in saferpay_ruby.rb in initializers as follows:
SaferpayRuby.configure do |config|
config.endpoint = URI('https://test.saferpay.com/api/Payment/v1/PaymentPage/Initialize')
#config.endpoint = URI('https://www.saferpay.com/api/Payment/v1/PaymentPage/Initialize') # For production
config.assert_endpoint = URI('https://test.saferpay.com/api/Payment/v1/PaymentPage/Assert')
config.terminal_id = "17989968"
config.customer_id = "240918"
config.authentication = 'Basic QVBJlzI0OTYxOF84OTI0Mzc2MDpXZWJvbmlzZUxhYkRvdEMpbQ=='
end
Transaction Flow
Step 1: Payment Page Initialize
> Initializes the Payment and generates the RedirectUrl for the Payment Page.
Step 2: Redirect to the RedirectUrl
Step 3: Return to ReturnUrl depending on the outcome of the transaction. The ReturnUrls are defined in step 1!
Step 4: Payment Page Assert
>Gathers all the information about the payment, like LiabilityShift through 3D Secure and more, using the Token, gathered in step 1!
Step 5: Depending on the outcome of step 4 you may
> Capture/Finalize the Transaction
> Cancel/Abort the Transaction
Step 6: Transaction is finished!
Note: We have only covered Step 1 to Step 4
def initialize_payment
options = {
payment_methods: [params[:payment_method]],
amount: 150 * 100,
currency: 'EUR',
order_id: '123123',
description: 'Payment description',
request_id: "33e8af17-35c1-4165-a343-c1c86a320f3b"
}
service = SaferpayRuby::PaymentGatewayApi.new(
success_url: "http://localhost:3010/success?order_id=1231&user_id=22",
failure_url: "http://localhost:3010/failure?order_id=1231&user_id=22"
)
response = service.initialize_payment_api(options)
initialize_assert_api(response, request_id) #initialize assert API in redirect URL method
# save the details of transaction response
end
def initialize_assert_api(response, request_id)
# Record the transaction response whether it is success or failure
options = {
request_id: request_id,
token: response['Token']
}
service = SaferpayRuby::PaymentGatewayApi.new
response = service.initialize_payment_assert_api(options)
response_json = JSON.parse(response.read_body)
end
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/[nischay-dhiman]/saferpay_ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the SaferpayRuby project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.