Genesis Ruby
Ruby Client for Genesis Payment Processing Gateway
Overview
Client Library for processing payments through Genesis Payment Processing Gateway. Its highly recommended to checkout "Genesis Payment Gateway API Documentation" first, in order to get an overview of Genesis's Payment Gateway API and functionality.
Requirements
Installation
Add this line to your application's Gemfile:
gem 'genesis_ruby'
And then execute:
$ bundle
Or install it yourself as:
$ gem install genesis_ruby
Getting Started
Configuration
configuration = GenesisRuby::Configuration.new
configuration.username = '<YOUR USERNAME>'
configuration.password = '<YOUR PASSWORD>'
configuration.token = '<YOUR TOKEN>'
configuration.environment = GenesisRuby::Api::Constants::Environments::STAGING # Support alias strings: 'test', 'testing', 'staging', 'live', 'prod', 'production'
configuration.endpoint = GenesisRuby::Api::Constants::Endpoints::EMERCHANTPAY # Support alias strings: 'emp', 'emerchantpay', 'ecp', 'ecomprocessing', 'e-comprocessing'
Web Payment Form
require 'genesis_ruby'
begin
genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Wpf::Create) do |request|
# Common Attributes
request.transaction_id = '12345-67890'
request.amount = '0.99'
request.currency = 'EUR'
request.usage = 'Example usage'
request.description = 'You are about to complete you purchase'
request.customer_email = '[email protected]'
request.customer_phone = '+1987987987987'
request.notification_url = 'https://www.example.com/notification'
request.return_success_url = 'https://www.example.com/success'
request.return_cancel_url = 'https://www.example.com/failure'
request.return_failure_url = 'https://www.example.com/cancel.html'
request.return_pending_url = 'https://www.example.com/payment-pending.html'
# Transaction Types
request.add_transaction_type('authorize3d')
# Transaction Type with Customer Attribute
request.add_transaction_type('sale3d', { bin: '420000' })
# Transaction Type with Recurring V2
request.add_transaction_type('sale3d', { recurring_type: GenesisRuby::Api::Constants::Transactions::Parameters::Recurring::Types::INITIAL })
# Tokenization Attributes
request.consumer_id = '123456789'
request.remember_card = true
# Billing Attributes
request.billing_first_name = 'Travis'
request.billing_last_name = 'Pastrana'
request.billing_address1 = 'Muster Str. 12'
request.billing_zip_code = '10178'
request.billing_city = 'Los Angeles'
request.billing_state = 'CA'
request.billing_country = 'US'
# Shipping Attributes
request.shipping_first_name = 'Travis'
request.shipping_last_name = 'Pastrana'
request.shipping_address1 = 'Muster Str. 12'
request.shipping_zip_code = '10178'
request.shipping_city = 'Los Angeles'
request.shipping_state = 'CA'
request.shipping_country = 'US'
# Internationalization
request.locale = 'EN'
# Other
request.lifetime = 30
request.web_payment_form_id = '987654321'
# Reminders
request.pay_later = true
request.add_reminder channel: 'email', after: 10
request.add_reminder channel: 'sms', after: 30
end.execute
puts genesis.response.response_object
rescue GenesisRuby::Error => error
puts error.
end
A full list of the Transaction Types and Custom Attributes can be found here.
Transactions
require 'genesis_ruby'
begin
genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Cards::Sale) do |request|
# Common Attributes
request.transaction_id = '12345-67890'
request.amount = '0.99'
request.currency = 'EUR'
request.usage = 'Example usage'
request.customer_email = '[email protected]'
request.customer_phone = '+1987987987987'
# Credit Card Attributes
request.card_holder = 'Travis Pastrana'
request.card_number = '4200000000000000'
request.expiration_month = '12'
request.expiration_year = '2040'
request.cvv = '834'
# Billing Attributes
request.billing_first_name = 'Travis'
request.billing_last_name = 'Pastrana'
request.billing_address1 = 'Muster Str. 12'
request.billing_zip_code = '10178'
request.billing_city = 'Los Angeles'
request.billing_state = 'CA'
request.billing_country = 'US'
end.execute
puts genesis.response.response_object
rescue GenesisRuby::Error => error
puts error.
end
Smart Router
The Smart Routing API is a higher-level abstraction that allows for simpler and more efficient gateway Processing API integration.
It does not require the terminal token (configuration.token). This by itself minimizes the need for complex customer-level manual routing to terminals set up on the gateway platform configuration layer.
By default the Smart Router is disabled. Contact your account manager to use the functionality.
Smart Router global definition for all requests
GenesisRuby::Configuration
configuration.force_smart_routing = trueSmart Router definition per request
request.use_smart_router = true
Example 3DSv2 Request
Sample request including all the conditionally required/optional params for initiating a 3DS transaction with the 3DSv2-Method authentication protocol.
Also, an example is provided for the 3DS-Method-continue API call that will have to be submitted after the 3DS-Method is initiated.
Standalone ThreedsV2 Method Continue Request.
Apple Pay Request
Apple Pay is a mobile payment solution available on iOS devices with Touch ID / Face ID support. Apple Pay allows shoppers to purchase with credit and debit cards linked to their devices.
Apple Pay Transaction Example
```ruby require 'genesis_ruby' begin genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Mobile::ApplePay) do |request| # Common Attributes request.transaction_id = '12345-67890' request.amount = '0.99' request.currency = 'EUR' request.usage = 'Example usage' request.customer_email = '[email protected]' request.customer_phone = '+1987987987987' request.payment_subtype = GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::ApplePay::PaymentSubtypes::SALE # Billing Attributes request.billing_first_name = 'Travis' request.billing_last_name = 'Pastrana' request.billing_address1 = 'Muster Str. 12' request.billing_zip_code = '10178' request.billing_city = 'Los Angeles' request.billing_state = 'CA' request.billing_country = 'US' # Apple Pay Payment Token json_token = '"wrapped key", "ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJsaMBlzR3D0H7xKwDncLNGOEcsl6Jilx5d+MDI/1QFxuIf6a0fY5qgOwnuLgZepqc3AVeU1RV8enPCQSWfFKRg==","publicKeyHash":"QOmvMaoCNYk5tv+69KC1i2UCFQcOl6LYPIJfYAT+SLQ=","transactionId":"ccedaf3f32efcc971259694f0efd0dcaa0ed545e7a31a0f7ec8e1c110656c25b"},"paymentMethod":0225","network":"Visa","type":"debit","transactionIdentifier":"CCEDAF3F32EFCC971259694F0EFD0DCAA0ED545E7A31A0F7EC8E1C110656C25B"}' # Set Apple Pay token from a JSON string request.json_token = json_token # Alternatively you can set every token attributes # token = JSON.parse json_token # request.token_version = token['paymentData']['version'] # request.token_data = token['paymentData']['data'] # request.token_signature = token['paymentData']['signature'] # request.token_ephemeral_public_key = token['paymentData']['header']['ephemeralPublicKey'] # request.token_public_key_hash = token['paymentData']['header']['publicKeyHash'] # request.token_transaction_id = token['paymentData']['header']['transactionId'] # request.token_display_name = token['paymentMethod']['displayName'] # request.token_network = token['paymentMethod']['network'] # request.token_type = token['paymentMethod']['type'] # request.token_transaction_identifier = token['transactionIdentifier'] end.execute puts genesis.response.response_object rescue GenesisRuby::Error => error puts error.message end ```Apple Pay Web Payment Form Example
```ruby require 'genesis_ruby' begin genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Wpf::Create) do |request| # Common Attributes request.transaction_id = '12345-67890' request.amount = '0.99' request.currency = 'EUR' request.usage = 'Example usage' request.description = 'You are about to complete you purchase' request.customer_email = '[email protected]' request.customer_phone = '+1987987987987' request.notification_url = 'https://www.example.com/notification' request.return_success_url = 'https://www.example.com/success' request.return_cancel_url = 'https://www.example.com/failure' request.return_failure_url = 'https://www.example.com/cancel.html' request.return_pending_url = 'https://www.example.com/payment-pending.html' # Transaction Types request.add_transaction_type('apple_pay', { payment_subtype: GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::ApplePay::PaymentSubtypes::AUTHORIZE }) # Billing Attributes request.billing_first_name = 'Travis' request.billing_last_name = 'Pastrana' request.billing_address1 = 'Muster Str. 12' request.billing_zip_code = '10178' request.billing_city = 'Los Angeles' request.billing_state = 'CA' request.billing_country = 'US' end.execute puts genesis.response.response_object rescue GenesisRuby::Error => error puts error.message end ```Google Pay Request
Google Pay allows shoppers to purchase with credit and debit cards linked to their Google account.
Google Pay Transaction Example
```ruby require 'genesis_ruby' begin genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Mobile::GooglePay) do |request| # Common Attributes request.transaction_id = '12345-67890' request.amount = '0.99' request.currency = 'EUR' request.usage = 'Example usage' request.customer_email = '[email protected]' request.customer_phone = '+1987987987987' request.payment_subtype = GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::GooglePay::PaymentSubtypes::SALE # Billing Attributes request.billing_first_name = 'Travis' request.billing_last_name = 'Pastrana' request.billing_address1 = 'Muster Str. 12' request.billing_zip_code = '10178' request.billing_city = 'Los Angeles' request.billing_state = 'CA' request.billing_country = 'US' # Google Pay Payment Token json_token = '{ "protocolVersion":"ECv2", "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d", "intermediateSigningKey":{ "signedKey": "\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"", "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"] }, "signedMessage":"\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"" }' # Set Google Pay token from a JSON string request.json_token = json_token # Alternatively you can set every token attributes # token = JSON.parse json_token # request.token_protocol_version = token['protocolVersion'] # request.token_signature = token['signature'] # request.token_signed_key = token['intermediateSigningKey']['signedKey'] # request.token_signatures = token['intermediateSigningKey']['signatures'] # request.token_signed_message = token['signedMessage'] end.execute puts genesis.response.response_object rescue GenesisRuby::Error => error puts error.message end ```Google Pay Web Payment Form Example
```ruby require 'genesis_ruby' begin genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Wpf::Create) do |request| # Common Attributes request.transaction_id = '12345-67890' request.amount = '0.99' request.currency = 'EUR' request.usage = 'Example usage' request.description = 'You are about to complete you purchase' request.customer_email = '[email protected]' request.customer_phone = '+1987987987987' request.notification_url = 'https://www.example.com/notification' request.return_success_url = 'https://www.example.com/success' request.return_cancel_url = 'https://www.example.com/failure' request.return_failure_url = 'https://www.example.com/cancel.html' request.return_pending_url = 'https://www.example.com/payment-pending.html' # Transaction Types request.add_transaction_type('google_pay', { payment_subtype: GenesisRuby::Api::Constants::Transactions::Parameters::Mobile::GooglePay::PaymentSubtypes::AUTHORIZE }) # Billing Attributes request.billing_first_name = 'Travis' request.billing_last_name = 'Pastrana' request.billing_address1 = 'Muster Str. 12' request.billing_zip_code = '10178' request.billing_city = 'Los Angeles' request.billing_state = 'CA' request.billing_country = 'US' end.execute puts genesis.response.response_object rescue GenesisRuby::Error => error puts error.message end ```Recurring
A recurring transaction describes a payment where the cardholder’s account is periodically charged for a repeated delivery and use of a product or service (subscription, membership fee, etc.) over time. A recurring payment consists of an initial transaction and one or several repeated subsequent transactions.
request.recurring_type = GenesisRuby::Api::Constants::Transactions::Parameters::Recurring::Types::INITIAL
Managed Recurring
Managed Recurring provides the option to automatically schedule recurring transactions for a specific day and time. Managed Recurring is available after additional configuration. More info can be found here
request.recurring_type = GenesisRuby::Api::Constants::Transactions::Parameters::Recurring::Types::MANAGED
Web Payment Form
request.add_transaction_type(
'sale3d',
{
managed_recurring: {
mode: 'automatic',
interval: 'days',
first_date: ((Date.today) + 1).strftime('%Y-%d-%m'),
time_of_day: 1,
period: 1,
amount: GenesisRuby::Utils::MoneyFormat.amount_to_exponent('0.99', 'EUR'),
max_count: 1
}
}
)
Level 3 Travel Data
Level 3 travel data is supplied as optional data to the standard API request. If the supplied is valid travel data then the transaction will be processed as a travel transaction and will qualify for the travel Incentive rates. Otherwise the transaction will be processed normally as a regular transaction. Note that the travel data will be stored as part of the transaction in all cases.
Example Leg Data
```ruby GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Leg.new departure_date: '2034-12-31', arrival_date: '2034-12-31', carrier_code: 12, service_class: 1, origin_city: 'VAR', destination_city: 'FRA', stopover_code: 0, fare_basis_code: 1, flight_number: 'W1234', departure_time: '11:37', departure_time_segment: 'P' ```Example Tax Data
```ruby GenesisRuby::Utils::Transactions::TravelData::AirlineItinerary::Tax.new fee_type: 'type', fee_amount: 0.99 # will converted automatically to minor format based on the currency ```Example Level 3 Travel Data
```ruby # Ticket attributes request.travel_aid_ticket_number = '123456789012345' request.travel_aid_passenger_name = 'Test Example' request.travel_aid_customer_code = 1 request.travel_aid_issuing_carrier = 'AAAA' request.travel_aid_total_fare = '0.99' # will converted automatically to minor format based on the currency request.travel_aid_agency_name = 'Agency' request.travel_aid_agency_code = 'AG001' request.travel_aid_date_of_issue = '2018-02-01' request.travel_aid_restricted_ticket_indicator = 1 request.travel_aid_confirmation_information = 'Confirmation' request.add_travel_aid_leg leg request.add_travel_aid_tax tax # Car rental request.travel_car_rental_purchase_identifier = '12478' request.travel_car_rental_class_id = 3 request.travel_car_rental_pickup_date = '2034-12-31' request.travel_car_rental_renter_name = 'John Smith' request.travel_car_rental_return_city = 'Varna' request.travel_car_rental_return_state = 'VAR' request.travel_car_rental_return_country = 'BGR' request.travel_car_rental_return_date = '2034-12-31' request.travel_car_rental_renter_return_location_id = '12478' request.travel_car_rental_customer_code = 1 request.travel_car_rental_extra_charges = 2 request.travel_car_rental_no_show_indicator = 1 # Hotel Rental attributes request.travel_hotel_rental_purchase_identifier = '12478' request.travel_hotel_rental_arrival_date = '2034-12-31' request.travel_hotel_rental_departure_date = '2034-12-31' request.travel_hotel_rental_customer_code = '12478' request.travel_hotel_rental_no_show_indicator = 1 # Reference Ticket Attributes request.travel_ac_ticket_reference_id = '8b7e3575e5605ea7e1895707a3e92837' request.travel_ac_ticket_document_number = '1111' request.travel_ac_issued_with_ticket_number = '12321' # Ancillary Charges request.travel_ac_type = 'BF' request.travel_ac_sub_type = 'BG' ```Response
After Request execution (genesis.execute) a Response object can be accessed genesis.response.
The Response contains the original response from the Gateway:
genesis.response.response_raw
The Response contains the parsed response from the Gateway:
genesis.response.response_object
Success Request
You receive from the Response Object a Hash collection. The data contains a :status.
If the Transaction is Successful the status is one of the following:
newapprovedpending_async
Example Successful Transaction Execution
```ruby :unique_id=>"2993ad9c2dd45ecfa9862b9eaf0ceb29", :transaction_id=>"9c8b862b-4f91-478b-8a14-87bffab7e55d", :timestamp=> #If an error occurs during the Transaction Execution the status is one of the following:
errordeclined
Example Transaction Execution with Error
```ruby :unique_id=>"fc94d7cdebe5f81618785d1033948fcc", :transaction_id=>"8bf4556b-a6ba-4389-a2e8-b7efa9e384b3", :code=>"120", :technical_message=> "Lacking Terminal/MID setups for the currency 'USD' for the requested transaction types", :message=>"Transaction failed, please contact support!", :timestamp=> #Reference actions
The Reference transaction requests allow actions over an existing payment. The payment can be modified with:
- Capture - settles a transaction that has been authorized before
- Void - undo other transactions
- Refund - allow to return already billed amounts to customers
! Void transaction request doesn't require amount and currency parameters
After a successful response of a payment, reference actions can be executed by using the unique_id.
require 'genesis_ruby'
begin
genesis = GenesisRuby::Genesis.for(config: configuration, request: GenesisRuby::Api::Requests::Financial::Refund) do |request|
request.transaction_id = '12345-67890'
request.amount = '0.99' # not available for GenesisRuby::Api::Requests::Financial::Void
request.currency = 'EUR' # not available for GenesisRuby::Api::Requests::Financial::Void
request.usage = 'Example usage'
request.reference_id = 'unique_id received upon successful payment transaction'
end.execute
puts genesis.response.response_object
rescue GenesisRuby::Error => error
puts error.
end
Gateway Notification
With the asynchronous payment flows like Web Payment Form the Gateway sends the transaction events upon status change on the defined notification_url.
The library contains a Notification module that helps handle the received gateway notification and can provide easy reconciliation execution.
Initialization
The notification module requires notification data or any object that responds to to_h with a Hash return value.
For example, with Ruby on Rails you can permit the params and to_h method can be executed without errors:
permitted_params = params.permit(:transaction_id, :terminal_token, :unique_id, :transaction_type, :status, :signature, :amount)
A full list of the available params that can be received upon notification can be found here.
begin
notification = GenesisRuby::Api::Notification.new configuration, permitted_params
# Helper methods
notification.api_notification?
notification.wpf_notification?
notification.unique_id
# Executes Gateway Transaction Reconciliation
# This provides the latest information on the transaction from the Gateway
notification.reconcile
# Provides information if the given reconcile response contains transaction information
notification.transaction_reconciliation?
# Get the Reconcile Response Object in Hash data structure
notification.reconciliation.response_object
# Generate response document expected from the Gateway
notification.generate_response
rescue GenesisRuby::ParameterError => error
puts error.
end
Reconcile
Minimum required data for execution of reconcile:
{
unique_id: 'unique_id received from the gateway in the notification params',
signature: 'the signature received in the notification'
}
If the signature can't be verified Genesis::Ruby::ParameterError will be raised.
Helpers
notification.reconcile returns GenesisRuby::Api::Response. The response object can be accessed via notification.reconciliation.
The reconciliation object has every helper that Response contains like checking the status with error?, approved?, etc.
For checking if the reconciliation.response_object is a successful transaction response you can use notification.transaction_reconciliation?
Errors
Upon wrong data like configuration terminal token, reconciliation.response_object can be similar:
{
status: 'error',
code: '220',
message: 'Reconcile request failed, please contact support!',
technical_message: 'Invalid Terminal'
}
Respond to the Gateway
When receiving the notification, you are required to render an xml page containing the transaction’s unique id so that the gateway knows that you have accepted the notification. If the XML is not delivered, the notification is sent periodically until the XML is received.
GenesisRuby::Api::Notification provides helper method for generation of the expected xml content. The Gateway expects a response with:
- Status 200
- Content Type
text/xml
notification.generate_response
Response Helpers
Sates
The Response object has predefined checks for validating the status of the received response. Every available status received from the Gateway can be checked in the following way.
genesis.response.new?
genesis.response.approved?
genesis.response.declined?
genesis.response.error?
...
Formatters
By default, the Response Object is formatted. For example, amounts are transformed in major currency format, timestamps in DateTime, etc.
If you want to stop formatting you can do it by defining format_reponse in the Configuration.
configuration.format_response = false
Sanitization
By default, the Response Object is sanitized, and <empty/> values are removed.
If you want to stop sanitization you can do it by defining configuration.sanitize_response in the Configuration.
configuration.sanitize_response = false
Requests
You can use the following request classes to initialize the Genesis client:
# Financial
## Cards
GenesisRuby::Api::Requests::Financial::Cards::Argencard
GenesisRuby::Api::Requests::Financial::Cards::Aura
GenesisRuby::Api::Requests::Financial::Cards::Authorize
GenesisRuby::Api::Requests::Financial::Cards::Authorize3d
GenesisRuby::Api::Requests::Financial::Cards::Bancontact
GenesisRuby::Api::Requests::Financial::Cards::Cabal
GenesisRuby::Api::Requests::Financial::Cards::Cencosud
GenesisRuby::Api::Requests::Financial::Cards::Elo
GenesisRuby::Api::Requests::Financial::Cards::Naranja
GenesisRuby::Api::Requests::Financial::Cards::Nativa
GenesisRuby::Api::Requests::Financial::Cards::Payout
GenesisRuby::Api::Requests::Financial::Cards::Sale
GenesisRuby::Api::Requests::Financial::Cards::Sale3d
GenesisRuby::Api::Requests::Financial::Cards::TarjetaShopping
## Preauthorizations
GenesisRuby::Api::Requests::Financial::Preauthorizations::IncrementalAuthorize
GenesisRuby::Api::Requests::Financial::Preauthorizations::PartialReversal
## Mobile
GenesisRuby::Api::Requests::Financial::Mobile::ApplePay
GenesisRuby::Api::Requests::Financial::Mobile::GooglePay
GenesisRuby::Api::Requests::Financial::Mobile::AfricanMobileSale
GenesisRuby::Api::Requests::Financial::Mobile::RussianMobileSale
## Wallets
GenesisRuby::Api::Requests::Financial::Wallets::Alipay
GenesisRuby::Api::Requests::Financial::Wallets::PayPal
## Cash Payments
GenesisRuby::Api::Requests::Financial::CashPayments::Baloto
GenesisRuby::Api::Requests::Financial::CashPayments::BancoDeOccidente
GenesisRuby::Api::Requests::Financial::CashPayments::Boleto
GenesisRuby::Api::Requests::Financial::CashPayments::Cash
GenesisRuby::Api::Requests::Financial::CashPayments::Efecty
GenesisRuby::Api::Requests::Financial::CashPayments::Oxxo
GenesisRuby::Api::Requests::Financial::CashPayments::PagoFacil
GenesisRuby::Api::Requests::Financial::CashPayments::Pix
GenesisRuby::Api::Requests::Financial::CashPayments::Redpagos
## Crypto transactions
GenesisRuby::Api::Requests::Financial::Crypto::BitPay::Sale
GenesisRuby::Api::Requests::Financial::Crypto::BitPay::Refund
GenesisRuby::Api::Requests::Financial::Crypto::BitPay::Payout
## Gift Cards transactions
GenesisRuby::Api::Requests::Financial::GiftCards::Intersolve
GenesisRuby::Api::Requests::Financial::GiftCards::Fashioncheque
GenesisRuby::Api::Requests::Financial::GiftCards::Tcs
## Vouchers
GenesisRuby::Api::Requests::Financial::Vouchers::Neosurf
# Web Payment Form
## Create
GenesisRuby::Api::Requests::Wpf::Create
## WPF Reconcile
GenesisRuby::Api::Requests::Wpf::Reconcile
# Online Banking Payments
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::BancoDoBrasil
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Bancomer
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Bradesco
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Davivienda
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Eps
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Itau
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Multibanco
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::PayU
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::PostFinance
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::MyBank
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Pse
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::RapiPago
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::SafetyPay
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Santander
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::TrustlySale
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Upi
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Sofort
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Webpay
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Wechat
# PayIn
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::OnlineBanking::PayIn
# PayOut
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::OnlineBanking::PayOut
# iDebit
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Idebit::PayIn
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::Idebit::PayOut
# InstaDebit
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::InstaDebit::PayIn
GenesisRuby::Api::Requests::Financial::OnlineBankingPayments::InstaDebit::PayOut
# SDD
GenesisRuby::Api::Requests::Financial::Sdd::Sale
GenesisRuby::Api::Requests::Financial::Sdd::Recurring::InitRecurringSale
# References
GenesisRuby::Api::Requests::Financial::Capture
GenesisRuby::Api::Requests::Financial::Void
GenesisRuby::Api::Requests::Financial::Refund
GenesisRuby::Api::Requests::Financial::Sdd::Refund
GenesisRuby::Api::Requests::Financial::Sdd::Recurring::RecurringSale
GenesisRuby::Api::Requests::Financial::Cards::Credit
#Payout
GenesisRuby::Api::Requests::Financial::Payout::GlobalPayout
# Non Financial
## Reconcile
GenesisRuby::Api::Requests::NonFinancial::Reconcile::Transaction
GenesisRuby::Api::Requests::NonFinancial::Reconcile::DateRange
## Installments
GenesisRuby::Api::Requests::NonFinancial::Installments::Fetch
## Billing API
GenesisRuby::Api::Requests::NonFinancial::BillingApi::Transactions
## Consumer API
GenesisRuby::Api::Requests::NonFinancial::Consumers::Create
GenesisRuby::Api::Requests::NonFinancial::Consumers::Retrieve
GenesisRuby::Api::Requests::NonFinancial::Consumers::Update
GenesisRuby::Api::Requests::NonFinancial::Consumers::Disable
GenesisRuby::Api::Requests::NonFinancial::Consumers::Enable
GenesisRuby::Api::Requests::NonFinancial::Consumers::GetCards
## Retrieval API
GenesisRuby::Api::Requests::NonFinancial::Fraud::Retrieval::Transaction
GenesisRuby::Api::Requests::NonFinancial::Fraud::Retrieval::DateRange
## SCA API
GenesisRuby::Api::Requests::NonFinancial::Sca::Checker
## Processed Transaction API
GenesisRuby::Api::Requests::NonFinancial::ProcessedTransactions::Transaction
GenesisRuby::Api::Requests::NonFinancial::ProcessedTransactions::DateRange
GenesisRuby::Api::Requests::NonFinancial::ProcessedTransactions::PostDateRange
## Tokenization API
GenesisRuby::Api::Requests::NonFinancial::Tokenization::Tokenize
GenesisRuby::Api::Requests::NonFinancial::Tokenization::Detokenize
GenesisRuby::Api::Requests::NonFinancial::Tokenization::UpdateToken
GenesisRuby::Api::Requests::NonFinancial::Tokenization::Cryptogram
GenesisRuby::Api::Requests::NonFinancial::Tokenization::ValidateToken
GenesisRuby::Api::Requests::NonFinancial::Tokenization::DeleteToken
GenesisRuby::Api::Requests::NonFinancial::Tokenization::GetCard
## KYC Know Your Customer API
GenesisRuby::Api::Requests::NonFinancial::Kyc::ConsumerRegistration::Create
GenesisRuby::Api::Requests::NonFinancial::Kyc::ConsumerRegistration::Update
GenesisRuby::Api::Requests::NonFinancial::Kyc::Verifications::Create
GenesisRuby::Api::Requests::NonFinancial::Kyc::Verifications::Register
GenesisRuby::Api::Requests::NonFinancial::Kyc::Verifications::RemoteIdentity
GenesisRuby::Api::Requests::NonFinancial::Kyc::Verifications::Status
GenesisRuby::Api::Requests::NonFinancial::Kyc::Cpf::Check
GenesisRuby::Api::Requests::NonFinancial::Kyc::Cnpj::Check
GenesisRuby::Api::Requests::NonFinancial::Kyc::IdentityDocument::Download
GenesisRuby::Api::Requests::NonFinancial::Kyc::IdentityDocument::Upload
GenesisRuby::Api::Requests::NonFinancial::Kyc::Call::Create
GenesisRuby::Api::Requests::NonFinancial::Kyc::Call::Update
GenesisRuby::Api::Requests::NonFinancial::Kyc::Transaction::Update
GenesisRuby::Api::Requests::NonFinancial::Kyc::Transaction::Create
## Payee API
GenesisRuby::Api::Requests::NonFinancial::Payee::Create
GenesisRuby::Api::Requests::NonFinancial::Payee::Retrieve
GenesisRuby::Api::Requests::NonFinancial::Payee::Update
GenesisRuby::Api::Requests::NonFinancial::Payee::Account::Create
GenesisRuby::Api::Requests::NonFinancial::Payee::Account::Retrieve
GenesisRuby::Api::Requests::NonFinancial::Payee::Account::List
GenesisRuby::Api::Requests::NonFinancial::Payee::Account::Update
## Chargeback API
GenesisRuby::Api::Requests::NonFinancial::Fraud::Chargeback::Transaction
GenesisRuby::Api::Requests::NonFinancial::Fraud::Chargeback::DateRange
## SAFE/TC40 Report
GenesisRuby::Api::Requests::NonFinancial::Fraud::Reports::Transaction
GenesisRuby::Api::Requests::NonFinancial::Fraud::Reports::DateRange
## Fx API
GenesisRuby::Api::Requests::NonFinancial::Fx::GetTiers
GenesisRuby::Api::Requests::NonFinancial::Fx::GetTier
GenesisRuby::Api::Requests::NonFinancial::Fx::GetRates
GenesisRuby::Api::Requests::NonFinancial::Fx::GetRate
GenesisRuby::Api::Requests::NonFinancial::Fx::SearchRate
Manual initialization
Manual Client initialization
```ruby require 'genesis_ruby' begin request = GenesisRuby::Api::Requests::Wpf::Create.new(configuration) request.transaction_id = '12345-67890' request.amount = '0.99' request.currency = 'EUR' request.usage = 'Example usage' request.description = 'You are about to complete you purchase' request.customer_email = '[email protected]' request.customer_phone = '+1987987987987' request.notification_url = 'https://www.example.com/notification' request.return_success_url = 'https://www.example.com/success' request.return_cancel_url = 'https://www.example.com/failure' request.return_failure_url = 'https://www.example.com/cancel.html' request.return_pending_url = 'https://www.example.com/payment-pending.html' # Transaction Types request.add_transaction_type('authorize3d') genesis = GenesisRuby::Genesis.new(configuration, request) puts genesis.execute.response.response_object rescue GenesisRuby::Error => error puts error.message end ```Running Specs
rake test
Running Linters
rake styles