solidus_payu_latam 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +236 -0
  5. data/.travis.yml +8 -0
  6. data/Gemfile +19 -0
  7. data/LICENSE +19 -0
  8. data/README.md +45 -0
  9. data/Rakefile +30 -0
  10. data/app/models/concerns/solidus_payu_latam/inject_customer_document_concern.rb +17 -0
  11. data/app/models/concerns/solidus_payu_latam/permitted_attributes_concern.rb +7 -0
  12. data/app/models/order_decorator.rb +15 -0
  13. data/app/models/payment_decorator.rb +1 -0
  14. data/app/models/permitted_attributes_decorator.rb +1 -0
  15. data/app/models/solidus/gateway/payu_latam_gateway.rb +70 -0
  16. data/app/views/spree/admin/payments/source_forms/_payu_latam.html.erb +1 -0
  17. data/app/views/spree/checkout/payment/_payu_latam.html.erb +7 -0
  18. data/bin/rails +7 -0
  19. data/config/locales/en.yml +5 -0
  20. data/config/routes.rb +3 -0
  21. data/db/migrate/20170916072806_add_customer_document_to_orders.rb +5 -0
  22. data/lib/generators/solidus_payu_latam/install/install_generator.rb +20 -0
  23. data/lib/solidus_payu_latam.rb +3 -0
  24. data/lib/solidus_payu_latam/engine.rb +17 -0
  25. data/lib/solidus_payu_latam/factories.rb +6 -0
  26. data/lib/solidus_payu_latam/version.rb +3 -0
  27. data/solidus_payu_latam.gemspec +31 -0
  28. data/spec/cassettes/Payu_Latam_checkout/with_autocapture/can_process_a_valid_payment.yml +43 -0
  29. data/spec/cassettes/Payu_Latam_checkout/without_autocapture/with_valid_payment/can_process.yml +43 -0
  30. data/spec/cassettes/Payu_Latam_checkout/without_autocapture/with_valid_payment/capture_payment.yml +80 -0
  31. data/spec/cassettes/Payu_Latam_checkout/without_autocapture/with_valid_payment/voids_a_payment.yml +80 -0
  32. data/spec/features/payu_latam_checkout_spec.rb +82 -0
  33. data/spec/models/spree/order_spec.rb +29 -0
  34. data/spec/models/spree/permitted_attributes_spec.rb +11 -0
  35. data/spec/spec_helper.rb +107 -0
  36. data/spec/support/payu_latam_helper.rb +31 -0
  37. metadata +232 -0
@@ -0,0 +1,70 @@
1
+ module Solidus
2
+ class Gateway::PayuLatamGateway < ::Spree::Gateway
3
+ preference :merchant_id, :string
4
+ preference :account_id, :string
5
+ preference :api_login, :string
6
+ preference :api_key, :string
7
+ preference :account_country, :string, default: 'PE'
8
+
9
+ def provider_class
10
+ ActiveMerchant::Billing::PayuLatamGateway
11
+ end
12
+
13
+ if SolidusSupport.solidus_gem_version < Gem::Version.new('2.3.x')
14
+ def method_type
15
+ 'payu_latam'
16
+ end
17
+ else
18
+ def partial_name
19
+ 'payu_latam'
20
+ end
21
+ end
22
+
23
+ def authorize(amount, credit_card, gateway_options)
24
+ cvv = credit_card.verification_value
25
+ options = add_missing_fields(gateway_options, cvv)
26
+ provider.authorize(amount, credit_card, options)
27
+ end
28
+
29
+ def capture(amount, authorization, gateway_options)
30
+ options = add_payment_country(gateway_options, preferred_account_country)
31
+ provider.capture(amount, authorization, options)
32
+ end
33
+
34
+ def void(authorization, gateway_options)
35
+ options = add_payment_country(gateway_options, preferred_account_country)
36
+ provider.void(authorization, options)
37
+ end
38
+
39
+ def purchase(amount, credit_card, gateway_options)
40
+ cvv = credit_card.verification_value
41
+ options = add_missing_fields(gateway_options, cvv)
42
+ provider.purchase(amount, credit_card, options)
43
+ end
44
+
45
+ def credit(amount, authorization, gateway_options)
46
+ options = add_payment_country(gateway_options, preferred_account_country)
47
+ provider.refund(amount, authorization, options)
48
+ end
49
+
50
+ private
51
+
52
+ def add_missing_fields(options, cvv)
53
+ dni_number = options[:customer_document]
54
+ options.merge(
55
+ buyer_email: options[:email],
56
+ buyer_name: options[:shipping_address][:name],
57
+ buyer_dni_number: dni_number,
58
+ dni_number: dni_number,
59
+ payment_country: preferred_account_country,
60
+ cvv: cvv
61
+ )
62
+ end
63
+
64
+ def add_payment_country(options, payment_country)
65
+ options.merge(
66
+ payment_country: payment_country
67
+ )
68
+ end
69
+ end
70
+ end
@@ -0,0 +1 @@
1
+ <%= render "spree/admin/payments/source_forms/gateway", payment_method: payment_method, previous_cards: payment_method.reusable_sources(@order) %>
@@ -0,0 +1,7 @@
1
+ <%= render "spree/checkout/payment/gateway", payment_method: payment_method %>
2
+ <% param_prefix = "payment_source[#{payment_method.id}]" %>
3
+
4
+ <p class="field">
5
+ <%= label_tag "document", Spree.t(:document) %><span class="required">*</span><br />
6
+ <%= text_field_tag '[order][customer_document]', '', id: 'customer_document', class: "required customerDocument", "payu-content": "document" %>
7
+ </p>
data/bin/rails ADDED
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/solidus_payu_latam/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: Hello world
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ end
@@ -0,0 +1,5 @@
1
+ class AddCustomerDocumentToOrders < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :spree_orders, :customer_document, :string
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module SolidusPayuLatam
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_migrations
7
+ run 'bundle exec rake railties:install:migrations FROM=solidus_payu_latam'
8
+ end
9
+
10
+ def run_migrations
11
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
12
+ if run_migrations
13
+ run 'bundle exec rake db:migrate'
14
+ else
15
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ require 'solidus_core'
2
+ require 'solidus_support'
3
+ require 'solidus_payu_latam/engine'
@@ -0,0 +1,17 @@
1
+ module SolidusPayuLatam
2
+ class Engine < Rails::Engine
3
+ engine_name 'solidus_payu_latam'
4
+
5
+ initializer 'spree.gateway.payment_methods', after: 'spree.register.payment_methods' do |app|
6
+ app.config.spree.payment_methods << Solidus::Gateway::PayuLatamGateway
7
+ end
8
+
9
+ def self.activate
10
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
11
+ Rails.configuration.cache_classes ? require(c) : load(c)
12
+ end
13
+ end
14
+
15
+ config.to_prepare(&method(:activate).to_proc)
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'solidus_payu_latam/factories'
6
+ end
@@ -0,0 +1,3 @@
1
+ module SolidusPayuLatam
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,31 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+
3
+ require 'solidus_payu_latam/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'solidus_payu_latam'
7
+ s.version = SolidusPayuLatam::VERSION
8
+ s.summary = 'Adds Solidus support for Payu Latam Gateway'
9
+ s.description = s.summary
10
+ s.license = 'MIT'
11
+
12
+ s.author = 'César Carruitero'
13
+ s.email = 'ccarruitero@protonmail.com'
14
+ s.homepage = 'https://github.com/ccarruitero/solidus_payu_latam'
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+
19
+ s.add_dependency 'solidus_core'
20
+ s.add_dependency 'solidus_support'
21
+ s.add_dependency 'activemerchant'
22
+
23
+ s.add_development_dependency 'capybara'
24
+ s.add_development_dependency 'poltergeist'
25
+ s.add_development_dependency 'database_cleaner'
26
+ s.add_development_dependency 'factory_girl'
27
+ s.add_development_dependency 'rspec-rails'
28
+ s.add_development_dependency 'rubocop'
29
+ s.add_development_dependency 'rubocop-rspec'
30
+ s.add_development_dependency 'simplecov'
31
+ end
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"AUTHORIZATION_AND_CAPTURE","ipAddress":"127.0.0.1","order":{"accountId":"512323","referenceCode":"R877716727-HQ9T7TWE","description":"unspecified","language":"en","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
9
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"},"buyer":{"fullName":"APPROVED","dniNumber":"32144457","dniType":null,"emailAddress":"han@example.com","contactPhone":"(555)
10
+ 555-5555","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
11
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"}},"additionalValues":{"TX_VALUE":{"value":"19.99","currency":"USD"}},"signature":"cb29d6aaa02622983790c12e39b54150"},"creditCard":{"number":"4111111111111111","securityCode":"123","expirationDate":"2018/01","name":"APPROVED"},"paymentMethod":"VISA","payer":{"fullName":"APPROVED","contactPhone":"(555)
12
+ 555-5555","dniNumber":"32144457","emailAddress":"han@example.com","billingAddress":{"street1":"YT-1300","street2":"","city":"Mos
13
+ Eisley","state":"AL","country":"US","phone":"(555) 555-5555"}},"extraParameters":{"INSTALLMENTS_NUMBER":1}}}'
14
+ headers:
15
+ Content-Type:
16
+ - application/json
17
+ Accept:
18
+ - application/json
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ User-Agent:
22
+ - Ruby
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Frame-Options:
29
+ - sameorigin
30
+ Content-Type:
31
+ - application/json
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Date:
35
+ - Mon, 18 Sep 2017 15:18:10 GMT
36
+ Server:
37
+ - PayU server
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702343,"transactionId":"d78e06e6-394a-45f2-96d2-67cff5c25d18","state":"APPROVED","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":"00000000","authorizationCode":"00000000","pendingReason":null,"responseCode":"APPROVED","errorCode":null,"responseMessage":null,"transactionDate":null,"transactionTime":null,"operationDate":1505747891366,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
41
+ http_version:
42
+ recorded_at: Mon, 18 Sep 2017 15:18:11 GMT
43
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"AUTHORIZATION","ipAddress":"127.0.0.1","order":{"accountId":"512323","referenceCode":"R730213982-C3W8HTYG","description":"unspecified","language":"en","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
9
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"},"buyer":{"fullName":"APPROVED","dniNumber":"32144457","dniType":null,"emailAddress":"han@example.com","contactPhone":"(555)
10
+ 555-5555","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
11
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"}},"additionalValues":{"TX_VALUE":{"value":"19.99","currency":"PEN"}},"signature":"8ffc7ec47eec0198066245857c1ced63"},"creditCard":{"number":"4111111111111111","securityCode":"123","expirationDate":"2018/01","name":"APPROVED"},"paymentMethod":"VISA","payer":{"fullName":"APPROVED","contactPhone":"(555)
12
+ 555-5555","dniNumber":"32144457","emailAddress":"han@example.com","billingAddress":{"street1":"YT-1300","street2":"","city":"Mos
13
+ Eisley","state":"AL","country":"US","phone":"(555) 555-5555"}},"extraParameters":{"INSTALLMENTS_NUMBER":1}}}'
14
+ headers:
15
+ Content-Type:
16
+ - application/json
17
+ Accept:
18
+ - application/json
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ User-Agent:
22
+ - Ruby
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Frame-Options:
29
+ - sameorigin
30
+ Content-Type:
31
+ - application/json
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Date:
35
+ - Mon, 18 Sep 2017 15:16:51 GMT
36
+ Server:
37
+ - PayU server
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702341,"transactionId":"386dfded-1f66-42fa-99e1-59b5b3344f53","state":"APPROVED","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":"00000000","authorizationCode":"00000000","pendingReason":null,"responseCode":"APPROVED","errorCode":null,"responseMessage":null,"transactionDate":null,"transactionTime":null,"operationDate":1505747811279,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
41
+ http_version:
42
+ recorded_at: Mon, 18 Sep 2017 15:16:51 GMT
43
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"AUTHORIZATION","ipAddress":"127.0.0.1","order":{"accountId":"512323","referenceCode":"R580361650-9J9EPCMW","description":"unspecified","language":"en","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
9
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"},"buyer":{"fullName":"APPROVED","dniNumber":"32144457","dniType":null,"emailAddress":"han@example.com","contactPhone":"(555)
10
+ 555-5555","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
11
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"}},"additionalValues":{"TX_VALUE":{"value":"19.99","currency":"PEN"}},"signature":"2540f234baa26bc8cdfa55b5c3f55955"},"creditCard":{"number":"4111111111111111","securityCode":"123","expirationDate":"2018/01","name":"APPROVED"},"paymentMethod":"VISA","payer":{"fullName":"APPROVED","contactPhone":"(555)
12
+ 555-5555","dniNumber":"32144457","emailAddress":"han@example.com","billingAddress":{"street1":"YT-1300","street2":"","city":"Mos
13
+ Eisley","state":"AL","country":"US","phone":"(555) 555-5555"}},"extraParameters":{"INSTALLMENTS_NUMBER":1}}}'
14
+ headers:
15
+ Content-Type:
16
+ - application/json
17
+ Accept:
18
+ - application/json
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ User-Agent:
22
+ - Ruby
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Frame-Options:
29
+ - sameorigin
30
+ Content-Type:
31
+ - application/json
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Date:
35
+ - Mon, 18 Sep 2017 15:14:00 GMT
36
+ Server:
37
+ - PayU server
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702277,"transactionId":"1d87ac8a-ff5a-4a6f-a449-5f733d532852","state":"APPROVED","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":"00000000","authorizationCode":"00000000","pendingReason":null,"responseCode":"APPROVED","errorCode":null,"responseMessage":null,"transactionDate":null,"transactionTime":null,"operationDate":1505747640647,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
41
+ http_version:
42
+ recorded_at: Mon, 18 Sep 2017 15:14:00 GMT
43
+ - request:
44
+ method: post
45
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"CAPTURE","ipAddress":"127.0.0.1","order":{"id":"842702277"},"parentTransactionId":"1d87ac8a-ff5a-4a6f-a449-5f733d532852","reason":"n/a"}}'
49
+ headers:
50
+ Content-Type:
51
+ - application/json
52
+ Accept:
53
+ - application/json
54
+ Accept-Encoding:
55
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
56
+ User-Agent:
57
+ - Ruby
58
+ response:
59
+ status:
60
+ code: 200
61
+ message: OK
62
+ headers:
63
+ X-Frame-Options:
64
+ - sameorigin
65
+ Content-Type:
66
+ - application/json
67
+ Transfer-Encoding:
68
+ - chunked
69
+ Date:
70
+ - Mon, 18 Sep 2017 15:14:13 GMT
71
+ Server:
72
+ - PayU server
73
+ body:
74
+ encoding: UTF-8
75
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702277,"transactionId":"ccea3589-968f-41d3-a32b-157eebd688b2","state":"ERROR","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":null,"authorizationCode":null,"pendingReason":null,"responseCode":"INTERNAL_PAYMENT_PROVIDER_ERROR","errorCode":"INTERNAL_ERROR","responseMessage":"Internal
76
+ payment provider error. ORDER_NUMBER: The value of the parameter can not be
77
+ null","transactionDate":null,"transactionTime":null,"operationDate":1505747653795,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
78
+ http_version:
79
+ recorded_at: Mon, 18 Sep 2017 15:14:14 GMT
80
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"AUTHORIZATION","ipAddress":"127.0.0.1","order":{"accountId":"512323","referenceCode":"R459186849-JENBQPMM","description":"unspecified","language":"en","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
9
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"},"buyer":{"fullName":"APPROVED","dniNumber":"32144457","dniType":null,"emailAddress":"han@example.com","contactPhone":"(555)
10
+ 555-5555","shippingAddress":{"street1":"YT-1300","street2":"","city":"Mos
11
+ Eisley","state":"AL","country":"US","postalCode":"12010","phone":"(555) 555-5555"}},"additionalValues":{"TX_VALUE":{"value":"19.99","currency":"PEN"}},"signature":"4528350329f3f6a61818064a85b45977"},"creditCard":{"number":"4111111111111111","securityCode":"123","expirationDate":"2018/01","name":"APPROVED"},"paymentMethod":"VISA","payer":{"fullName":"APPROVED","contactPhone":"(555)
12
+ 555-5555","dniNumber":"32144457","emailAddress":"han@example.com","billingAddress":{"street1":"YT-1300","street2":"","city":"Mos
13
+ Eisley","state":"AL","country":"US","phone":"(555) 555-5555"}},"extraParameters":{"INSTALLMENTS_NUMBER":1}}}'
14
+ headers:
15
+ Content-Type:
16
+ - application/json
17
+ Accept:
18
+ - application/json
19
+ Accept-Encoding:
20
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
21
+ User-Agent:
22
+ - Ruby
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Frame-Options:
29
+ - sameorigin
30
+ Content-Type:
31
+ - application/json
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Date:
35
+ - Mon, 18 Sep 2017 15:15:59 GMT
36
+ Server:
37
+ - PayU server
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702339,"transactionId":"a2bb75ff-fcac-4a4e-95ae-348688b291dc","state":"APPROVED","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":"00000000","authorizationCode":"00000000","pendingReason":null,"responseCode":"APPROVED","errorCode":null,"responseMessage":null,"transactionDate":null,"transactionTime":null,"operationDate":1505747759446,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
41
+ http_version:
42
+ recorded_at: Mon, 18 Sep 2017 15:15:59 GMT
43
+ - request:
44
+ method: post
45
+ uri: https://sandbox.api.payulatam.com/payments-api/4.0/service.cgi
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"test":true,"language":"en","command":"SUBMIT_TRANSACTION","merchant":{"apiLogin":"pRRXKOl8ikMmt9u","apiKey":"4Vj8eK4rloUd272L48hsrarnUA"},"transaction":{"paymentCountry":"PE","type":"VOID","ipAddress":"127.0.0.1","order":{"id":"842702339"},"parentTransactionId":"a2bb75ff-fcac-4a4e-95ae-348688b291dc","reason":"n/a"}}'
49
+ headers:
50
+ Content-Type:
51
+ - application/json
52
+ Accept:
53
+ - application/json
54
+ Accept-Encoding:
55
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
56
+ User-Agent:
57
+ - Ruby
58
+ response:
59
+ status:
60
+ code: 200
61
+ message: OK
62
+ headers:
63
+ X-Frame-Options:
64
+ - sameorigin
65
+ Content-Type:
66
+ - application/json
67
+ Transfer-Encoding:
68
+ - chunked
69
+ Date:
70
+ - Mon, 18 Sep 2017 15:16:12 GMT
71
+ Server:
72
+ - PayU server
73
+ body:
74
+ encoding: UTF-8
75
+ string: '{"code":"SUCCESS","error":null,"transactionResponse":{"orderId":842702339,"transactionId":"6cd96801-a802-4803-ac79-0edc661c58c9","state":"ERROR","paymentNetworkResponseCode":null,"paymentNetworkResponseErrorMessage":null,"trazabilityCode":null,"authorizationCode":null,"pendingReason":null,"responseCode":"INTERNAL_PAYMENT_PROVIDER_ERROR","errorCode":"INTERNAL_ERROR","responseMessage":"Internal
76
+ payment provider error. ORDER_NUMBER: The value of the parameter can not be
77
+ null","transactionDate":null,"transactionTime":null,"operationDate":1505747772620,"referenceQuestionnaire":null,"extraParameters":null,"additionalInfo":null}}'
78
+ http_version:
79
+ recorded_at: Mon, 18 Sep 2017 15:16:12 GMT
80
+ recorded_with: VCR 3.0.3