webpay_rails 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -2
- data/.travis.yml +4 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile +2 -0
- data/README.md +32 -7
- data/config.ru +7 -0
- data/lib/webpay_rails.rb +5 -0
- data/lib/webpay_rails/base.rb +107 -32
- data/lib/webpay_rails/errors.rb +46 -8
- data/lib/webpay_rails/soap.rb +28 -51
- data/lib/webpay_rails/soap_normal.rb +52 -0
- data/lib/webpay_rails/soap_nullify.rb +32 -0
- data/lib/webpay_rails/transaction.rb +4 -11
- data/lib/webpay_rails/transaction_base.rb +11 -0
- data/lib/webpay_rails/transaction_nullified.rb +18 -0
- data/lib/webpay_rails/transaction_result.rb +5 -13
- data/lib/webpay_rails/vault.rb +36 -0
- data/lib/webpay_rails/version.rb +1 -1
- data/spec/internal/app/controllers/orders_controller.rb +107 -0
- data/spec/internal/app/models/concerns/universally_unique_identifiable.rb +15 -0
- data/spec/internal/app/models/order.rb +17 -0
- data/spec/internal/app/models/order_blank.rb +4 -0
- data/spec/internal/app/models/order_invalid.rb +14 -0
- data/spec/internal/app/views/orders/failed.html.erb +1 -0
- data/spec/internal/app/views/orders/gateway.html.erb +8 -0
- data/spec/internal/app/views/orders/new.html.erb +6 -0
- data/spec/internal/app/views/orders/success.html.erb +18 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +10 -0
- data/spec/internal/db/schema.rb +22 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/internal/vendor/vault/597020000541.crt +22 -0
- data/spec/internal/vendor/vault/597020000541.key +27 -0
- data/spec/internal/vendor/vault/tbk.pem +17 -0
- data/spec/spec_helper.rb +31 -4
- data/spec/vault_helper.rb +67 -0
- data/spec/webpay_rails_spec.rb +296 -185
- data/webpay_rails.gemspec +18 -12
- metadata +162 -6
@@ -0,0 +1,22 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
create_table(:orders, force: true) do |t|
|
3
|
+
t.string :uuid
|
4
|
+
t.string :tbk_token_ws, index: true
|
5
|
+
t.string :tbk_accounting_date
|
6
|
+
t.string :tbk_buy_order
|
7
|
+
t.string :tbk_card_number
|
8
|
+
t.string :tbk_commerce_code
|
9
|
+
t.string :tbk_authorization_code
|
10
|
+
t.string :tbk_payment_type_code
|
11
|
+
t.string :tbk_response_code
|
12
|
+
t.string :tbk_transaction_date
|
13
|
+
t.string :tbk_vci
|
14
|
+
t.string :tbk_session_id
|
15
|
+
t.string :tbk_card_expiration_date
|
16
|
+
t.string :tbk_shares_number
|
17
|
+
t.integer :amount
|
18
|
+
t.integer :status, default: 0
|
19
|
+
|
20
|
+
t.timestamps
|
21
|
+
end
|
22
|
+
end
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDujCCAqICCQCZ42cY33KRTzANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC
|
3
|
+
Q0wxETAPBgNVBAgMCFNhbnRpYWdvMRIwEAYDVQQKDAlUcmFuc2JhbmsxETAPBgNV
|
4
|
+
BAcMCFNhbnRpYWdvMRUwEwYDVQQDDAw1OTcwMjAwMDA1NDExFzAVBgNVBAsMDkNh
|
5
|
+
bmFsZXNSZW1vdG9zMSUwIwYJKoZIhvcNAQkBFhZpbnRlZ3JhZG9yZXNAdmFyaW9z
|
6
|
+
LmNsMB4XDTE2MDYyMjIxMDkyN1oXDTI0MDYyMDIxMDkyN1owgZ4xCzAJBgNVBAYT
|
7
|
+
AkNMMREwDwYDVQQIDAhTYW50aWFnbzESMBAGA1UECgwJVHJhbnNiYW5rMREwDwYD
|
8
|
+
VQQHDAhTYW50aWFnbzEVMBMGA1UEAwwMNTk3MDIwMDAwNTQxMRcwFQYDVQQLDA5D
|
9
|
+
YW5hbGVzUmVtb3RvczElMCMGCSqGSIb3DQEJARYWaW50ZWdyYWRvcmVzQHZhcmlv
|
10
|
+
cy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANApVXB/EQtbviqQ
|
11
|
+
j1J82EiHJslyPO0RLAZEM2gNUCXuMPwe4OirylfQ2qn5zYTL3ff8qZhn9EQ0D4ZQ
|
12
|
+
Wxpc8pis9cYdJUAQ/vTGa4PCbvP3dZNKSG9UC0A54UYEdk9eJ4F6T+DyECrauw7H
|
13
|
+
RwcmxVOb7wClanR7yJmRc6nsW2Y11scYU/v7BnA+FbOu933Ogfl49lKyhe0MleaT
|
14
|
+
A6tBwgi0zJmn1gJjax8peopkDPm6gtdoJxBABJKyYkjuj/9tZvYgybOSkGp6SW8t
|
15
|
+
GhlvJqHGERwzB2Y7U4iD9PiQCYC/SrB/q13ZNm0+2nq3u08ziv2xMIZGBF5zDLf+
|
16
|
+
ub1egH8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdgNpIS2NZFx5PoYwJZf8faze
|
17
|
+
NmKQg73seDGuP8d8w/CZf1Py/gsJFNbh4CEySWZRCzlOKxzmtPTmyPdyhObjMA8E
|
18
|
+
Adps9DtgiN2ITSF1HUFmhMjI5V7U2L9LyEdpUaieYyPBfxiicdWz2YULVuOYDJHR
|
19
|
+
n05jlj/EjYa5bLKs/yggYiqMkZdIX8NiLL6ZTERIvBa6azDKs6yDsCsnE1M5tzQI
|
20
|
+
VVEkZtEfil6E1tz8v3yLZapLt+8jmPq1RCSx3Zh4fUkxBTpUW/9SWUNEXbKK7bB3
|
21
|
+
zfB3kGE55K5nxHKfQlrqdHLcIo+vdShATwYnmhUkGxUnM9qoCDlB8lYu3rFi9w==
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpQIBAAKCAQEA0ClVcH8RC1u+KpCPUnzYSIcmyXI87REsBkQzaA1QJe4w/B7g
|
3
|
+
6KvKV9DaqfnNhMvd9/ypmGf0RDQPhlBbGlzymKz1xh0lQBD+9MZrg8Ju8/d1k0pI
|
4
|
+
b1QLQDnhRgR2T14ngXpP4PIQKtq7DsdHBybFU5vvAKVqdHvImZFzqexbZjXWxxhT
|
5
|
+
+/sGcD4Vs673fc6B+Xj2UrKF7QyV5pMDq0HCCLTMmafWAmNrHyl6imQM+bqC12gn
|
6
|
+
EEAEkrJiSO6P/21m9iDJs5KQanpJby0aGW8mocYRHDMHZjtTiIP0+JAJgL9KsH+r
|
7
|
+
Xdk2bT7aere7TzOK/bEwhkYEXnMMt/65vV6AfwIDAQABAoIBAHnIlOn6DTi99eXl
|
8
|
+
KVSzIb5dA747jZWMxFruL70ifM+UKSh30FGPoBP8ZtGnCiw1ManSMk6uEuSMKMEF
|
9
|
+
5iboVi4okqnTh2WSC/ec1m4BpPQqxKjlfrdTTjnHIxrZpXYNucMwkeci93569ZFR
|
10
|
+
2SY/8pZV1mBkZoG7ocLmq+qwE1EaBEL/sXMvuF/h08nJ71I4zcclpB8kN0yFrBCW
|
11
|
+
7scqOwTLiob2mmU2bFHOyyjTkGOlEsBQxhtVwVEt/0AFH/ucmMTP0vrKOA0HkhxM
|
12
|
+
oeR4k2z0qwTzZKXuEZtsau8a/9B3S3YcgoSOhRP/VdY1WL5hWDHeK8q1Nfq2eETX
|
13
|
+
jnQ4zjECgYEA7z2/biWe9nDyYDZM7SfHy1xF5Q3ocmv14NhTbt8iDlz2LsZ2JcPn
|
14
|
+
EMV++m88F3PYdFUOp4Zuw+eLJSrBqfuPYrTVNH0v/HdTqTS70R2YZCFb9g0ryaHV
|
15
|
+
TRwYovu/oQMV4LBSzrwdtCrcfUZDtqMYmmZfEkdjCWCEpEi36nlG0JMCgYEA3r49
|
16
|
+
o+soFIpDqLMei1tF+Ah/rm8oY5f4Wc82kmSgoPFCWnQEIW36i/GRaoQYsBp4loue
|
17
|
+
vyPuW+BzoZpVcJDuBmHY3UOLKr4ZldOn2KIj6sCQZ1mNKo5WuZ4YFeL5uyp9Hvio
|
18
|
+
TCPGeXghG0uIk4emSwolJVSbKSRi6SPsiANff+UCgYEAvNMRmlAbLQtsYb+565xw
|
19
|
+
NvO3PthBVL4dLL/Q6js21/tLWxPNAHWklDosxGCzHxeSCg9wJ40VM4425rjebdld
|
20
|
+
DF0Jwgnkq/FKmMxESQKA2tbxjDxNCTGv9tJsJ4dnch/LTrIcSYt0LlV9/WpN24LS
|
21
|
+
0lpmQzkQ07/YMQosDuZ1m/0CgYEAu9oHlEHTmJcO/qypmu/ML6XDQPKARpY5Hkzy
|
22
|
+
gj4ZdgJianSjsynUfsepUwK663I3twdjR2JfON8vxd+qJPgltf45bknziYWvgDtz
|
23
|
+
t/Duh6IFZxQQSQ6oN30MZRD6eo4X3dHp5eTaE0Fr8mAefAWQCoMw1q3m+ai1PlhM
|
24
|
+
uFzX4r0CgYEArx4TAq+Z4crVCdABBzAZ7GvvAXdxvBo0AhD9IddSWVTCza972wta
|
25
|
+
5J2rrS/ye9Tfu5j2IbTHaLDz14mwMXr1S4L39UX/NifLc93KHie/yjycCuu4uqNo
|
26
|
+
MtdweTnQt73lN2cnYedRUhw9UTfPzYu7jdXCUAyAD4IEjFQrswk2x04=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDKTCCAhECBFZl7uIwDQYJKoZIhvcNAQEFBQAwWTELMAkGA1UEBhMCQ0wxDjAMBgNVBAgMBUNo
|
3
|
+
aWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANrZHUxCzAJBgNV
|
4
|
+
BAMMAjEwMB4XDTE1MTIwNzIwNDEwNloXDTE4MDkwMjIwNDEwNlowWTELMAkGA1UEBhMCQ0wxDjAM
|
5
|
+
BgNVBAgMBUNoaWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANr
|
6
|
+
ZHUxCzAJBgNVBAMMAjEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAizJUWTDC7nfP
|
7
|
+
3jmZpWXFdG9oKyBrU0Bdl6fKif9a1GrwevThsU5Dq3wiRfYvomStNjFDYFXOs9pRIxqX2AWDybjA
|
8
|
+
X/+bdDTVbM+xXllA9stJY8s7hxAvwwO7IEuOmYDpmLKP7J+4KkNH7yxsKZyLL9trG3iSjV6Y6SO5
|
9
|
+
EEhUsdxoJFAow/h7qizJW0kOaWRcljf7kpqJAL3AadIuqV+hlf+Ts/64aMsfSJJA6xdbdp9ddgVF
|
10
|
+
oqUl1M8vpmd4glxlSrYmEkbYwdI9uF2d6bAeaneBPJFZr6KQqlbbrVyeJZqmMlEPy0qPco1TIxrd
|
11
|
+
EHlXgIFJLyyMRAyjX9i4l70xjwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBn3tUPS6e2USgMrPKp
|
12
|
+
sxU4OTfW64+mfD6QrVeBOh81f6aGHa67sMJn8FE/cG6jrUmX/FP1/Cpbpvkm5UUlFKpgaFfHv+Kg
|
13
|
+
CpEvgcRIv/OeIi6Jbuu3NrPdGPwzYkzlOQnmgio5RGb6GSs+OQ0mUWZ9J1+YtdZc+xTga0x7nsCT
|
14
|
+
5xNcUXsZKhyjoKhXtxJm3eyB3ysLNyuL/RHy/EyNEWiUhvt1SIePnW+Y4/cjQWYwNqSqMzTSW9TP
|
15
|
+
2QR2bX/W2H6ktRcLsgBK9mq7lE36p3q6c9DtZJE+xfA4NGCYWM9hd8pbusnoNO7AFxJZOuuvLZI7
|
16
|
+
JvD7YLhPvCYKry7N6x3l
|
17
|
+
-----END CERTIFICATE-----
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,36 @@
|
|
1
|
-
require 'bundler
|
2
|
-
|
1
|
+
require 'bundler'
|
2
|
+
|
3
|
+
Bundler.require :default, :development
|
4
|
+
|
5
|
+
require 'capybara/rspec'
|
6
|
+
|
7
|
+
Combustion.initialize! :active_record, :action_controller, :action_view
|
8
|
+
|
9
|
+
require 'rspec/rails'
|
10
|
+
require 'capybara/rails'
|
11
|
+
|
12
|
+
if ENV['CAPYBARA_DRIVER'].try(:to_sym) == :poltergeist
|
13
|
+
require 'capybara/poltergeist'
|
14
|
+
Capybara.default_driver = :poltergeist
|
15
|
+
else
|
16
|
+
Capybara.register_driver :selenium do |app|
|
17
|
+
Capybara::Selenium::Driver.new(
|
18
|
+
app,
|
19
|
+
browser: :firefox,
|
20
|
+
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: false)
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
Capybara.default_driver = :selenium
|
25
|
+
end
|
26
|
+
Capybara.default_max_wait_time = 10
|
27
|
+
|
28
|
+
require 'coveralls'
|
29
|
+
|
30
|
+
Coveralls.wear!
|
3
31
|
|
4
|
-
require 'active_record'
|
5
32
|
require 'webpay_rails'
|
6
33
|
|
7
34
|
RSpec.configure do |config|
|
8
|
-
|
35
|
+
config.use_transactional_fixtures = true
|
9
36
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
COMMERCE_CODE = 597020000541
|
2
|
+
PRIVATE_KEY = '-----BEGIN RSA PRIVATE KEY-----
|
3
|
+
MIIEpQIBAAKCAQEA0ClVcH8RC1u+KpCPUnzYSIcmyXI87REsBkQzaA1QJe4w/B7g
|
4
|
+
6KvKV9DaqfnNhMvd9/ypmGf0RDQPhlBbGlzymKz1xh0lQBD+9MZrg8Ju8/d1k0pI
|
5
|
+
b1QLQDnhRgR2T14ngXpP4PIQKtq7DsdHBybFU5vvAKVqdHvImZFzqexbZjXWxxhT
|
6
|
+
+/sGcD4Vs673fc6B+Xj2UrKF7QyV5pMDq0HCCLTMmafWAmNrHyl6imQM+bqC12gn
|
7
|
+
EEAEkrJiSO6P/21m9iDJs5KQanpJby0aGW8mocYRHDMHZjtTiIP0+JAJgL9KsH+r
|
8
|
+
Xdk2bT7aere7TzOK/bEwhkYEXnMMt/65vV6AfwIDAQABAoIBAHnIlOn6DTi99eXl
|
9
|
+
KVSzIb5dA747jZWMxFruL70ifM+UKSh30FGPoBP8ZtGnCiw1ManSMk6uEuSMKMEF
|
10
|
+
5iboVi4okqnTh2WSC/ec1m4BpPQqxKjlfrdTTjnHIxrZpXYNucMwkeci93569ZFR
|
11
|
+
2SY/8pZV1mBkZoG7ocLmq+qwE1EaBEL/sXMvuF/h08nJ71I4zcclpB8kN0yFrBCW
|
12
|
+
7scqOwTLiob2mmU2bFHOyyjTkGOlEsBQxhtVwVEt/0AFH/ucmMTP0vrKOA0HkhxM
|
13
|
+
oeR4k2z0qwTzZKXuEZtsau8a/9B3S3YcgoSOhRP/VdY1WL5hWDHeK8q1Nfq2eETX
|
14
|
+
jnQ4zjECgYEA7z2/biWe9nDyYDZM7SfHy1xF5Q3ocmv14NhTbt8iDlz2LsZ2JcPn
|
15
|
+
EMV++m88F3PYdFUOp4Zuw+eLJSrBqfuPYrTVNH0v/HdTqTS70R2YZCFb9g0ryaHV
|
16
|
+
TRwYovu/oQMV4LBSzrwdtCrcfUZDtqMYmmZfEkdjCWCEpEi36nlG0JMCgYEA3r49
|
17
|
+
o+soFIpDqLMei1tF+Ah/rm8oY5f4Wc82kmSgoPFCWnQEIW36i/GRaoQYsBp4loue
|
18
|
+
vyPuW+BzoZpVcJDuBmHY3UOLKr4ZldOn2KIj6sCQZ1mNKo5WuZ4YFeL5uyp9Hvio
|
19
|
+
TCPGeXghG0uIk4emSwolJVSbKSRi6SPsiANff+UCgYEAvNMRmlAbLQtsYb+565xw
|
20
|
+
NvO3PthBVL4dLL/Q6js21/tLWxPNAHWklDosxGCzHxeSCg9wJ40VM4425rjebdld
|
21
|
+
DF0Jwgnkq/FKmMxESQKA2tbxjDxNCTGv9tJsJ4dnch/LTrIcSYt0LlV9/WpN24LS
|
22
|
+
0lpmQzkQ07/YMQosDuZ1m/0CgYEAu9oHlEHTmJcO/qypmu/ML6XDQPKARpY5Hkzy
|
23
|
+
gj4ZdgJianSjsynUfsepUwK663I3twdjR2JfON8vxd+qJPgltf45bknziYWvgDtz
|
24
|
+
t/Duh6IFZxQQSQ6oN30MZRD6eo4X3dHp5eTaE0Fr8mAefAWQCoMw1q3m+ai1PlhM
|
25
|
+
uFzX4r0CgYEArx4TAq+Z4crVCdABBzAZ7GvvAXdxvBo0AhD9IddSWVTCza972wta
|
26
|
+
5J2rrS/ye9Tfu5j2IbTHaLDz14mwMXr1S4L39UX/NifLc93KHie/yjycCuu4uqNo
|
27
|
+
MtdweTnQt73lN2cnYedRUhw9UTfPzYu7jdXCUAyAD4IEjFQrswk2x04=
|
28
|
+
-----END RSA PRIVATE KEY-----'.freeze
|
29
|
+
PUBLIC_CERT = '-----BEGIN CERTIFICATE-----
|
30
|
+
MIIDujCCAqICCQCZ42cY33KRTzANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC
|
31
|
+
Q0wxETAPBgNVBAgMCFNhbnRpYWdvMRIwEAYDVQQKDAlUcmFuc2JhbmsxETAPBgNV
|
32
|
+
BAcMCFNhbnRpYWdvMRUwEwYDVQQDDAw1OTcwMjAwMDA1NDExFzAVBgNVBAsMDkNh
|
33
|
+
bmFsZXNSZW1vdG9zMSUwIwYJKoZIhvcNAQkBFhZpbnRlZ3JhZG9yZXNAdmFyaW9z
|
34
|
+
LmNsMB4XDTE2MDYyMjIxMDkyN1oXDTI0MDYyMDIxMDkyN1owgZ4xCzAJBgNVBAYT
|
35
|
+
AkNMMREwDwYDVQQIDAhTYW50aWFnbzESMBAGA1UECgwJVHJhbnNiYW5rMREwDwYD
|
36
|
+
VQQHDAhTYW50aWFnbzEVMBMGA1UEAwwMNTk3MDIwMDAwNTQxMRcwFQYDVQQLDA5D
|
37
|
+
YW5hbGVzUmVtb3RvczElMCMGCSqGSIb3DQEJARYWaW50ZWdyYWRvcmVzQHZhcmlv
|
38
|
+
cy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANApVXB/EQtbviqQ
|
39
|
+
j1J82EiHJslyPO0RLAZEM2gNUCXuMPwe4OirylfQ2qn5zYTL3ff8qZhn9EQ0D4ZQ
|
40
|
+
Wxpc8pis9cYdJUAQ/vTGa4PCbvP3dZNKSG9UC0A54UYEdk9eJ4F6T+DyECrauw7H
|
41
|
+
RwcmxVOb7wClanR7yJmRc6nsW2Y11scYU/v7BnA+FbOu933Ogfl49lKyhe0MleaT
|
42
|
+
A6tBwgi0zJmn1gJjax8peopkDPm6gtdoJxBABJKyYkjuj/9tZvYgybOSkGp6SW8t
|
43
|
+
GhlvJqHGERwzB2Y7U4iD9PiQCYC/SrB/q13ZNm0+2nq3u08ziv2xMIZGBF5zDLf+
|
44
|
+
ub1egH8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdgNpIS2NZFx5PoYwJZf8faze
|
45
|
+
NmKQg73seDGuP8d8w/CZf1Py/gsJFNbh4CEySWZRCzlOKxzmtPTmyPdyhObjMA8E
|
46
|
+
Adps9DtgiN2ITSF1HUFmhMjI5V7U2L9LyEdpUaieYyPBfxiicdWz2YULVuOYDJHR
|
47
|
+
n05jlj/EjYa5bLKs/yggYiqMkZdIX8NiLL6ZTERIvBa6azDKs6yDsCsnE1M5tzQI
|
48
|
+
VVEkZtEfil6E1tz8v3yLZapLt+8jmPq1RCSx3Zh4fUkxBTpUW/9SWUNEXbKK7bB3
|
49
|
+
zfB3kGE55K5nxHKfQlrqdHLcIo+vdShATwYnmhUkGxUnM9qoCDlB8lYu3rFi9w==
|
50
|
+
-----END CERTIFICATE-----'.freeze
|
51
|
+
WEBPAY_CERT = '-----BEGIN CERTIFICATE-----
|
52
|
+
MIIDKTCCAhECBFZl7uIwDQYJKoZIhvcNAQEFBQAwWTELMAkGA1UEBhMCQ0wxDjAMBgNVBAgMBUNo
|
53
|
+
aWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANrZHUxCzAJBgNV
|
54
|
+
BAMMAjEwMB4XDTE1MTIwNzIwNDEwNloXDTE4MDkwMjIwNDEwNlowWTELMAkGA1UEBhMCQ0wxDjAM
|
55
|
+
BgNVBAgMBUNoaWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANr
|
56
|
+
ZHUxCzAJBgNVBAMMAjEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAizJUWTDC7nfP
|
57
|
+
3jmZpWXFdG9oKyBrU0Bdl6fKif9a1GrwevThsU5Dq3wiRfYvomStNjFDYFXOs9pRIxqX2AWDybjA
|
58
|
+
X/+bdDTVbM+xXllA9stJY8s7hxAvwwO7IEuOmYDpmLKP7J+4KkNH7yxsKZyLL9trG3iSjV6Y6SO5
|
59
|
+
EEhUsdxoJFAow/h7qizJW0kOaWRcljf7kpqJAL3AadIuqV+hlf+Ts/64aMsfSJJA6xdbdp9ddgVF
|
60
|
+
oqUl1M8vpmd4glxlSrYmEkbYwdI9uF2d6bAeaneBPJFZr6KQqlbbrVyeJZqmMlEPy0qPco1TIxrd
|
61
|
+
EHlXgIFJLyyMRAyjX9i4l70xjwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBn3tUPS6e2USgMrPKp
|
62
|
+
sxU4OTfW64+mfD6QrVeBOh81f6aGHa67sMJn8FE/cG6jrUmX/FP1/Cpbpvkm5UUlFKpgaFfHv+Kg
|
63
|
+
CpEvgcRIv/OeIi6Jbuu3NrPdGPwzYkzlOQnmgio5RGb6GSs+OQ0mUWZ9J1+YtdZc+xTga0x7nsCT
|
64
|
+
5xNcUXsZKhyjoKhXtxJm3eyB3ysLNyuL/RHy/EyNEWiUhvt1SIePnW+Y4/cjQWYwNqSqMzTSW9TP
|
65
|
+
2QR2bX/W2H6ktRcLsgBK9mq7lE36p3q6c9DtZJE+xfA4NGCYWM9hd8pbusnoNO7AFxJZOuuvLZI7
|
66
|
+
JvD7YLhPvCYKry7N6x3l
|
67
|
+
-----END CERTIFICATE-----'.freeze
|
data/spec/webpay_rails_spec.rb
CHANGED
@@ -1,206 +1,317 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'vault_helper'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
describe WebpayRails do
|
5
|
+
before(:all) { @amount = 1000 }
|
6
|
+
before(:all) { @buy_order = SecureRandom.uuid.first(30).delete!('-') }
|
7
|
+
before(:all) { @session_id = 'aj2h4kj2' }
|
8
|
+
before(:all) { @return_url = 'http://localhost:3000/tbknormal?option=return' }
|
9
|
+
before(:all) { @final_url = 'http://localhost:3000/tbknormal?option=final' }
|
10
|
+
before(:all) { @init_transaction_params = { amount: @amount,
|
11
|
+
buy_order: @buy_order,
|
12
|
+
session_id: @session_id,
|
13
|
+
return_url: @return_url,
|
14
|
+
final_url: @final_url } }
|
15
|
+
before(:all) { @webpay_rails_params = { commerce_code: COMMERCE_CODE,
|
16
|
+
private_key: PRIVATE_KEY,
|
17
|
+
webpay_cert: WEBPAY_CERT,
|
18
|
+
public_cert: PUBLIC_CERT } }
|
8
19
|
|
9
|
-
|
10
|
-
|
11
|
-
|
20
|
+
describe WebpayRails::Base do
|
21
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.except(:commerce_code)) }.to raise_error(WebpayRails::MissingCommerceCode) }
|
22
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.except(:private_key)) }.to raise_error(WebpayRails::MissingPrivateKey) }
|
23
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.except(:webpay_cert)) }.to raise_error(WebpayRails::MissingWebpayCertificate) }
|
24
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.except(:public_cert)) }.to raise_error(WebpayRails::MissingPublicCertificate) }
|
25
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.merge(private_key: '', public_cert: '', webpay_cert: '')) }.to raise_error(WebpayRails::FileNotFound) }
|
26
|
+
it { expect{ OrderBlank.webpay_rails(@webpay_rails_params.merge(environment: :other)) }.to raise_error(WebpayRails::InvalidEnvironment) }
|
27
|
+
end
|
12
28
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
webpay_rails({
|
17
|
-
commerce_code: 597020000541,
|
18
|
-
private_key: '-----BEGIN RSA PRIVATE KEY-----
|
19
|
-
MIIEpQIBAAKCAQEA0ClVcH8RC1u+KpCPUnzYSIcmyXI87REsBkQzaA1QJe4w/B7g
|
20
|
-
6KvKV9DaqfnNhMvd9/ypmGf0RDQPhlBbGlzymKz1xh0lQBD+9MZrg8Ju8/d1k0pI
|
21
|
-
b1QLQDnhRgR2T14ngXpP4PIQKtq7DsdHBybFU5vvAKVqdHvImZFzqexbZjXWxxhT
|
22
|
-
+/sGcD4Vs673fc6B+Xj2UrKF7QyV5pMDq0HCCLTMmafWAmNrHyl6imQM+bqC12gn
|
23
|
-
EEAEkrJiSO6P/21m9iDJs5KQanpJby0aGW8mocYRHDMHZjtTiIP0+JAJgL9KsH+r
|
24
|
-
Xdk2bT7aere7TzOK/bEwhkYEXnMMt/65vV6AfwIDAQABAoIBAHnIlOn6DTi99eXl
|
25
|
-
KVSzIb5dA747jZWMxFruL70ifM+UKSh30FGPoBP8ZtGnCiw1ManSMk6uEuSMKMEF
|
26
|
-
5iboVi4okqnTh2WSC/ec1m4BpPQqxKjlfrdTTjnHIxrZpXYNucMwkeci93569ZFR
|
27
|
-
2SY/8pZV1mBkZoG7ocLmq+qwE1EaBEL/sXMvuF/h08nJ71I4zcclpB8kN0yFrBCW
|
28
|
-
7scqOwTLiob2mmU2bFHOyyjTkGOlEsBQxhtVwVEt/0AFH/ucmMTP0vrKOA0HkhxM
|
29
|
-
oeR4k2z0qwTzZKXuEZtsau8a/9B3S3YcgoSOhRP/VdY1WL5hWDHeK8q1Nfq2eETX
|
30
|
-
jnQ4zjECgYEA7z2/biWe9nDyYDZM7SfHy1xF5Q3ocmv14NhTbt8iDlz2LsZ2JcPn
|
31
|
-
EMV++m88F3PYdFUOp4Zuw+eLJSrBqfuPYrTVNH0v/HdTqTS70R2YZCFb9g0ryaHV
|
32
|
-
TRwYovu/oQMV4LBSzrwdtCrcfUZDtqMYmmZfEkdjCWCEpEi36nlG0JMCgYEA3r49
|
33
|
-
o+soFIpDqLMei1tF+Ah/rm8oY5f4Wc82kmSgoPFCWnQEIW36i/GRaoQYsBp4loue
|
34
|
-
vyPuW+BzoZpVcJDuBmHY3UOLKr4ZldOn2KIj6sCQZ1mNKo5WuZ4YFeL5uyp9Hvio
|
35
|
-
TCPGeXghG0uIk4emSwolJVSbKSRi6SPsiANff+UCgYEAvNMRmlAbLQtsYb+565xw
|
36
|
-
NvO3PthBVL4dLL/Q6js21/tLWxPNAHWklDosxGCzHxeSCg9wJ40VM4425rjebdld
|
37
|
-
DF0Jwgnkq/FKmMxESQKA2tbxjDxNCTGv9tJsJ4dnch/LTrIcSYt0LlV9/WpN24LS
|
38
|
-
0lpmQzkQ07/YMQosDuZ1m/0CgYEAu9oHlEHTmJcO/qypmu/ML6XDQPKARpY5Hkzy
|
39
|
-
gj4ZdgJianSjsynUfsepUwK663I3twdjR2JfON8vxd+qJPgltf45bknziYWvgDtz
|
40
|
-
t/Duh6IFZxQQSQ6oN30MZRD6eo4X3dHp5eTaE0Fr8mAefAWQCoMw1q3m+ai1PlhM
|
41
|
-
uFzX4r0CgYEArx4TAq+Z4crVCdABBzAZ7GvvAXdxvBo0AhD9IddSWVTCza972wta
|
42
|
-
5J2rrS/ye9Tfu5j2IbTHaLDz14mwMXr1S4L39UX/NifLc93KHie/yjycCuu4uqNo
|
43
|
-
MtdweTnQt73lN2cnYedRUhw9UTfPzYu7jdXCUAyAD4IEjFQrswk2x04=
|
44
|
-
-----END RSA PRIVATE KEY-----',
|
45
|
-
public_cert: '-----BEGIN CERTIFICATE-----
|
46
|
-
MIIDujCCAqICCQCZ42cY33KRTzANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC
|
47
|
-
Q0wxETAPBgNVBAgMCFNhbnRpYWdvMRIwEAYDVQQKDAlUcmFuc2JhbmsxETAPBgNV
|
48
|
-
BAcMCFNhbnRpYWdvMRUwEwYDVQQDDAw1OTcwMjAwMDA1NDExFzAVBgNVBAsMDkNh
|
49
|
-
bmFsZXNSZW1vdG9zMSUwIwYJKoZIhvcNAQkBFhZpbnRlZ3JhZG9yZXNAdmFyaW9z
|
50
|
-
LmNsMB4XDTE2MDYyMjIxMDkyN1oXDTI0MDYyMDIxMDkyN1owgZ4xCzAJBgNVBAYT
|
51
|
-
AkNMMREwDwYDVQQIDAhTYW50aWFnbzESMBAGA1UECgwJVHJhbnNiYW5rMREwDwYD
|
52
|
-
VQQHDAhTYW50aWFnbzEVMBMGA1UEAwwMNTk3MDIwMDAwNTQxMRcwFQYDVQQLDA5D
|
53
|
-
YW5hbGVzUmVtb3RvczElMCMGCSqGSIb3DQEJARYWaW50ZWdyYWRvcmVzQHZhcmlv
|
54
|
-
cy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANApVXB/EQtbviqQ
|
55
|
-
j1J82EiHJslyPO0RLAZEM2gNUCXuMPwe4OirylfQ2qn5zYTL3ff8qZhn9EQ0D4ZQ
|
56
|
-
Wxpc8pis9cYdJUAQ/vTGa4PCbvP3dZNKSG9UC0A54UYEdk9eJ4F6T+DyECrauw7H
|
57
|
-
RwcmxVOb7wClanR7yJmRc6nsW2Y11scYU/v7BnA+FbOu933Ogfl49lKyhe0MleaT
|
58
|
-
A6tBwgi0zJmn1gJjax8peopkDPm6gtdoJxBABJKyYkjuj/9tZvYgybOSkGp6SW8t
|
59
|
-
GhlvJqHGERwzB2Y7U4iD9PiQCYC/SrB/q13ZNm0+2nq3u08ziv2xMIZGBF5zDLf+
|
60
|
-
ub1egH8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdgNpIS2NZFx5PoYwJZf8faze
|
61
|
-
NmKQg73seDGuP8d8w/CZf1Py/gsJFNbh4CEySWZRCzlOKxzmtPTmyPdyhObjMA8E
|
62
|
-
Adps9DtgiN2ITSF1HUFmhMjI5V7U2L9LyEdpUaieYyPBfxiicdWz2YULVuOYDJHR
|
63
|
-
n05jlj/EjYa5bLKs/yggYiqMkZdIX8NiLL6ZTERIvBa6azDKs6yDsCsnE1M5tzQI
|
64
|
-
VVEkZtEfil6E1tz8v3yLZapLt+8jmPq1RCSx3Zh4fUkxBTpUW/9SWUNEXbKK7bB3
|
65
|
-
zfB3kGE55K5nxHKfQlrqdHLcIo+vdShATwYnmhUkGxUnM9qoCDlB8lYu3rFi9w==
|
66
|
-
-----END CERTIFICATE-----',
|
67
|
-
webpay_cert: '-----BEGIN CERTIFICATE-----
|
68
|
-
MIIDKTCCAhECBFZl7uIwDQYJKoZIhvcNAQEFBQAwWTELMAkGA1UEBhMCQ0wxDjAMBgNVBAgMBUNo
|
69
|
-
aWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANrZHUxCzAJBgNV
|
70
|
-
BAMMAjEwMB4XDTE1MTIwNzIwNDEwNloXDTE4MDkwMjIwNDEwNlowWTELMAkGA1UEBhMCQ0wxDjAM
|
71
|
-
BgNVBAgMBUNoaWxlMREwDwYDVQQHDAhTYW50aWFnbzEMMAoGA1UECgwDa2R1MQwwCgYDVQQLDANr
|
72
|
-
ZHUxCzAJBgNVBAMMAjEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAizJUWTDC7nfP
|
73
|
-
3jmZpWXFdG9oKyBrU0Bdl6fKif9a1GrwevThsU5Dq3wiRfYvomStNjFDYFXOs9pRIxqX2AWDybjA
|
74
|
-
X/+bdDTVbM+xXllA9stJY8s7hxAvwwO7IEuOmYDpmLKP7J+4KkNH7yxsKZyLL9trG3iSjV6Y6SO5
|
75
|
-
EEhUsdxoJFAow/h7qizJW0kOaWRcljf7kpqJAL3AadIuqV+hlf+Ts/64aMsfSJJA6xdbdp9ddgVF
|
76
|
-
oqUl1M8vpmd4glxlSrYmEkbYwdI9uF2d6bAeaneBPJFZr6KQqlbbrVyeJZqmMlEPy0qPco1TIxrd
|
77
|
-
EHlXgIFJLyyMRAyjX9i4l70xjwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBn3tUPS6e2USgMrPKp
|
78
|
-
sxU4OTfW64+mfD6QrVeBOh81f6aGHa67sMJn8FE/cG6jrUmX/FP1/Cpbpvkm5UUlFKpgaFfHv+Kg
|
79
|
-
CpEvgcRIv/OeIi6Jbuu3NrPdGPwzYkzlOQnmgio5RGb6GSs+OQ0mUWZ9J1+YtdZc+xTga0x7nsCT
|
80
|
-
5xNcUXsZKhyjoKhXtxJm3eyB3ysLNyuL/RHy/EyNEWiUhvt1SIePnW+Y4/cjQWYwNqSqMzTSW9TP
|
81
|
-
2QR2bX/W2H6ktRcLsgBK9mq7lE36p3q6c9DtZJE+xfA4NGCYWM9hd8pbusnoNO7AFxJZOuuvLZI7
|
82
|
-
JvD7YLhPvCYKry7N6x3l
|
83
|
-
-----END CERTIFICATE-----',
|
84
|
-
environment: :integration,
|
85
|
-
log: false
|
86
|
-
})
|
87
|
-
end
|
29
|
+
describe WebpayRails::Transaction do
|
30
|
+
context 'when all is ok' do
|
31
|
+
before(:all) { @transaction = Order.init_transaction(@init_transaction_params) }
|
88
32
|
|
89
|
-
|
90
|
-
extend WebpayRails
|
91
|
-
|
92
|
-
webpay_rails({
|
93
|
-
commerce_code: 597020000541,
|
94
|
-
private_key: '-----BEGIN RSA PRIVATE KEY-----
|
95
|
-
MIIEpQIBAAKCAQEA0ClVcH8RC1u+KpCPUnzYSIcmyXI87REsBkQzaA1QJe4w/B7g
|
96
|
-
6KvKV9DaqfnNhMvd9/ypmGf0RDQPhlBbGlzymKz1xh0lQBD+9MZrg8Ju8/d1k0pI
|
97
|
-
b1QLQDnhRgR2T14ngXpP4PIQKtq7DsdHBybFU5vvAKVqdHvImZFzqexbZjXWxxhT
|
98
|
-
+/sGcD4Vs673fc6B+Xj2UrKF7QyV5pMDq0HCCLTMmafWAmNrHyl6imQM+bqC12gn
|
99
|
-
EEAEkrJiSO6P/21m9iDJs5KQanpJby0aGW8mocYRHDMHZjtTiIP0+JAJgL9KsH+r
|
100
|
-
Xdk2bT7aere7TzOK/bEwhkYEXnMMt/65vV6AfwIDAQABAoIBAHnIlOn6DTi99eXl
|
101
|
-
KVSzIb5dA747jZWMxFruL70ifM+UKSh30FGPoBP8ZtGnCiw1ManSMk6uEuSMKMEF
|
102
|
-
5iboVi4okqnTh2WSC/ec1m4BpPQqxKjlfrdTTjnHIxrZpXYNucMwkeci93569ZFR
|
103
|
-
2SY/8pZV1mBkZoG7ocLmq+qwE1EaBEL/sXMvuF/h08nJ71I4zcclpB8kN0yFrBCW
|
104
|
-
7scqOwTLiob2mmU2bFHOyyjTkGOlEsBQxhtVwVEt/0AFH/ucmMTP0vrKOA0HkhxM
|
105
|
-
oeR4k2z0qwTzZKXuEZtsau8a/9B3S3YcgoSOhRP/VdY1WL5hWDHeK8q1Nfq2eETX
|
106
|
-
jnQ4zjECgYEA7z2/biWe9nDyYDZM7SfHy1xF5Q3ocmv14NhTbt8iDlz2LsZ2JcPn
|
107
|
-
EMV++m88F3PYdFUOp4Zuw+eLJSrBqfuPYrTVNH0v/HdTqTS70R2YZCFb9g0ryaHV
|
108
|
-
TRwYovu/oQMV4LBSzrwdtCrcfUZDtqMYmmZfEkdjCWCEpEi36nlG0JMCgYEA3r49
|
109
|
-
o+soFIpDqLMei1tF+Ah/rm8oY5f4Wc82kmSgoPFCWnQEIW36i/GRaoQYsBp4loue
|
110
|
-
vyPuW+BzoZpVcJDuBmHY3UOLKr4ZldOn2KIj6sCQZ1mNKo5WuZ4YFeL5uyp9Hvio
|
111
|
-
TCPGeXghG0uIk4emSwolJVSbKSRi6SPsiANff+UCgYEAvNMRmlAbLQtsYb+565xw
|
112
|
-
NvO3PthBVL4dLL/Q6js21/tLWxPNAHWklDosxGCzHxeSCg9wJ40VM4425rjebdld
|
113
|
-
DF0Jwgnkq/FKmMxESQKA2tbxjDxNCTGv9tJsJ4dnch/LTrIcSYt0LlV9/WpN24LS
|
114
|
-
0lpmQzkQ07/YMQosDuZ1m/0CgYEAu9oHlEHTmJcO/qypmu/ML6XDQPKARpY5Hkzy
|
115
|
-
gj4ZdgJianSjsynUfsepUwK663I3twdjR2JfON8vxd+qJPgltf45bknziYWvgDtz
|
116
|
-
t/Duh6IFZxQQSQ6oN30MZRD6eo4X3dHp5eTaE0Fr8mAefAWQCoMw1q3m+ai1PlhM
|
117
|
-
uFzX4r0CgYEArx4TAq+Z4crVCdABBzAZ7GvvAXdxvBo0AhD9IddSWVTCza972wta
|
118
|
-
5J2rrS/ye9Tfu5j2IbTHaLDz14mwMXr1S4L39UX/NifLc93KHie/yjycCuu4uqNo
|
119
|
-
MtdweTnQt73lN2cnYedRUhw9UTfPzYu7jdXCUAyAD4IEjFQrswk2x04=
|
120
|
-
-----END RSA PRIVATE KEY-----',
|
121
|
-
public_cert: '-----BEGIN CERTIFICATE-----
|
122
|
-
MIIDujCCAqICCQCZ42cY33KRTzANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC
|
123
|
-
Q0wxETAPBgNVBAgMCFNhbnRpYWdvMRIwEAYDVQQKDAlUcmFuc2JhbmsxETAPBgNV
|
124
|
-
BAcMCFNhbnRpYWdvMRUwEwYDVQQDDAw1OTcwMjAwMDA1NDExFzAVBgNVBAsMDkNh
|
125
|
-
bmFsZXNSZW1vdG9zMSUwIwYJKoZIhvcNAQkBFhZpbnRlZ3JhZG9yZXNAdmFyaW9z
|
126
|
-
LmNsMB4XDTE2MDYyMjIxMDkyN1oXDTI0MDYyMDIxMDkyN1owgZ4xCzAJBgNVBAYT
|
127
|
-
AkNMMREwDwYDVQQIDAhTYW50aWFnbzESMBAGA1UECgwJVHJhbnNiYW5rMREwDwYD
|
128
|
-
VQQHDAhTYW50aWFnbzEVMBMGA1UEAwwMNTk3MDIwMDAwNTQxMRcwFQYDVQQLDA5D
|
129
|
-
YW5hbGVzUmVtb3RvczElMCMGCSqGSIb3DQEJARYWaW50ZWdyYWRvcmVzQHZhcmlv
|
130
|
-
cy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANApVXB/EQtbviqQ
|
131
|
-
j1J82EiHJslyPO0RLAZEM2gNUCXuMPwe4OirylfQ2qn5zYTL3ff8qZhn9EQ0D4ZQ
|
132
|
-
Wxpc8pis9cYdJUAQ/vTGa4PCbvP3dZNKSG9UC0A54UYEdk9eJ4F6T+DyECrauw7H
|
133
|
-
RwcmxVOb7wClanR7yJmRc6nsW2Y11scYU/v7BnA+FbOu933Ogfl49lKyhe0MleaT
|
134
|
-
A6tBwgi0zJmn1gJjax8peopkDPm6gtdoJxBABJKyYkjuj/9tZvYgybOSkGp6SW8t
|
135
|
-
GhlvJqHGERwzB2Y7U4iD9PiQCYC/SrB/q13ZNm0+2nq3u08ziv2xMIZGBF5zDLf+
|
136
|
-
ub1egH8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdgNpIS2NZFx5PoYwJZf8faze
|
137
|
-
NmKQg73seDGuP8d8w/CZf1Py/gsJFNbh4CEySWZRCzlOKxzmtPTmyPdyhObjMA8E
|
138
|
-
Adps9DtgiN2ITSF1HUFmhMjI5V7U2L9LyEdpUaieYyPBfxiicdWz2YULVuOYDJHR
|
139
|
-
n05jlj/EjYa5bLKs/yggYiqMkZdIX8NiLL6ZTERIvBa6azDKs6yDsCsnE1M5tzQI
|
140
|
-
VVEkZtEfil6E1tz8v3yLZapLt+8jmPq1RCSx3Zh4fUkxBTpUW/9SWUNEXbKK7bB3
|
141
|
-
zfB3kGE55K5nxHKfQlrqdHLcIo+vdShATwYnmhUkGxUnM9qoCDlB8lYu3rFi9w==
|
142
|
-
-----END CERTIFICATE-----',
|
143
|
-
webpay_cert: '-----BEGIN CERTIFICATE-----
|
144
|
-
MIIDujCCAqICCQCZ42cY33KRTzANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC
|
145
|
-
Q0wxETAPBgNVBAgMCFNhbnRpYWdvMRIwEAYDVQQKDAlUcmFuc2JhbmsxETAPBgNV
|
146
|
-
BAcMCFNhbnRpYWdvMRUwEwYDVQQDDAw1OTcwMjAwMDA1NDExFzAVBgNVBAsMDkNh
|
147
|
-
bmFsZXNSZW1vdG9zMSUwIwYJKoZIhvcNAQkBFhZpbnRlZ3JhZG9yZXNAdmFyaW9z
|
148
|
-
LmNsMB4XDTE2MDYyMjIxMDkyN1oXDTI0MDYyMDIxMDkyN1owgZ4xCzAJBgNVBAYT
|
149
|
-
AkNMMREwDwYDVQQIDAhTYW50aWFnbzESMBAGA1UECgwJVHJhbnNiYW5rMREwDwYD
|
150
|
-
VQQHDAhTYW50aWFnbzEVMBMGA1UEAwwMNTk3MDIwMDAwNTQxMRcwFQYDVQQLDA5D
|
151
|
-
YW5hbGVzUmVtb3RvczElMCMGCSqGSIb3DQEJARYWaW50ZWdyYWRvcmVzQHZhcmlv
|
152
|
-
cy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANApVXB/EQtbviqQ
|
153
|
-
j1J82EiHJslyPO0RLAZEM2gNUCXuMPwe4OirylfQ2qn5zYTL3ff8qZhn9EQ0D4ZQ
|
154
|
-
Wxpc8pis9cYdJUAQ/vTGa4PCbvP3dZNKSG9UC0A54UYEdk9eJ4F6T+DyECrauw7H
|
155
|
-
RwcmxVOb7wClanR7yJmRc6nsW2Y11scYU/v7BnA+FbOu933Ogfl49lKyhe0MleaT
|
156
|
-
A6tBwgi0zJmn1gJjax8peopkDPm6gtdoJxBABJKyYkjuj/9tZvYgybOSkGp6SW8t
|
157
|
-
GhlvJqHGERwzB2Y7U4iD9PiQCYC/SrB/q13ZNm0+2nq3u08ziv2xMIZGBF5zDLf+
|
158
|
-
ub1egH8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdgNpIS2NZFx5PoYwJZf8faze
|
159
|
-
NmKQg73seDGuP8d8w/CZf1Py/gsJFNbh4CEySWZRCzlOKxzmtPTmyPdyhObjMA8E
|
160
|
-
Adps9DtgiN2ITSF1HUFmhMjI5V7U2L9LyEdpUaieYyPBfxiicdWz2YULVuOYDJHR
|
161
|
-
n05jlj/EjYa5bLKs/yggYiqMkZdIX8NiLL6ZTERIvBa6azDKs6yDsCsnE1M5tzQI
|
162
|
-
VVEkZtEfil6E1tz8v3yLZapLt+8jmPq1RCSx3Zh4fUkxBTpUW/9SWUNEXbKK7bB3
|
163
|
-
zfB3kGE55K5nxHKfQlrqdHLcIo+vdShATwYnmhUkGxUnM9qoCDlB8lYu3rFi9w==
|
164
|
-
-----END CERTIFICATE-----',
|
165
|
-
environment: :integration,
|
166
|
-
log: false
|
167
|
-
})
|
168
|
-
end
|
33
|
+
it { expect(@transaction).to be_kind_of(WebpayRails::Transaction) }
|
169
34
|
|
170
|
-
describe
|
171
|
-
|
172
|
-
|
173
|
-
let(:session_id) { 'aj2h4kj2' }
|
174
|
-
let(:return_url) { 'http://localhost:3000/tbknormal?option=return' }
|
175
|
-
let(:final_url) { 'http://localhost:3000/tbknormal?option=final' }
|
35
|
+
describe '.token' do
|
36
|
+
it { expect(@transaction.token).not_to be_blank }
|
37
|
+
end
|
176
38
|
|
177
|
-
|
178
|
-
|
179
|
-
|
39
|
+
describe '.url' do
|
40
|
+
it { expect(@transaction.url).not_to be_blank }
|
41
|
+
end
|
180
42
|
|
181
|
-
|
43
|
+
describe '.success?' do
|
44
|
+
it { expect(@transaction.success?).to be_truthy }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when not' do
|
49
|
+
it { expect { Order.init_transaction(@init_transaction_params.merge(return_url: '', final_url: '')) }.to raise_error(WebpayRails::RequestFailed) }
|
50
|
+
it { expect { Order.init_transaction(@init_transaction_params.merge(amount: 0)) }.to raise_error(WebpayRails::RequestFailed) }
|
51
|
+
it { expect { OrderInvalid.init_transaction(@init_transaction_params) }.to raise_error(WebpayRails::InvalidCertificate) }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe WebpayRails::TransactionResult do
|
56
|
+
context 'when all is ok' do
|
57
|
+
describe '.buy_order' do
|
58
|
+
pending 'should not be blank'
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.session_id' do
|
62
|
+
# pending 'should not be blank' NOTE: In fact it can
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '.accounting_date' do
|
66
|
+
pending 'should not be blank'
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '.transaction_date' do
|
70
|
+
pending 'should not be blank'
|
71
|
+
end
|
182
72
|
|
183
|
-
describe
|
184
|
-
|
73
|
+
describe '.vci' do
|
74
|
+
pending 'should not be blank'
|
185
75
|
end
|
186
76
|
|
187
|
-
describe
|
188
|
-
|
77
|
+
describe '.url_redirection' do
|
78
|
+
pending 'should not be blank'
|
189
79
|
end
|
190
80
|
|
191
|
-
describe
|
192
|
-
|
81
|
+
describe '.card_number' do
|
82
|
+
pending 'should not be blank'
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '.card_expiration_date' do
|
86
|
+
# pending 'should not be blank' NOTE: In fact Webpay returns blank
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '.authorization_code' do
|
90
|
+
pending 'should not be blank'
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '.payment_type_code' do
|
94
|
+
pending 'should not be blank'
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '.response_code' do
|
98
|
+
pending 'should not be blank'
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '.amount' do
|
102
|
+
pending 'should not be blank'
|
103
|
+
end
|
104
|
+
|
105
|
+
describe '.shares_number' do
|
106
|
+
pending 'should not be blank'
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '.commerce_code' do
|
110
|
+
pending 'should not be blank'
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '.approved?' do
|
114
|
+
pending 'should be truthy'
|
193
115
|
end
|
194
116
|
end
|
195
117
|
|
196
|
-
|
197
|
-
it { expect{Order.init_transaction(
|
198
|
-
|
199
|
-
it { expect{OrderWithInvalidWebpayCertificate.init_transaction(amount, buy_order, session_id, return_url, final_url)}.to raise_error(WebpayRails::InvalidCertificate) }
|
118
|
+
context 'when not' do
|
119
|
+
it { expect { Order.init_transaction(token: 'asd') }.to raise_error(WebpayRails::RequestFailed) }
|
120
|
+
pending 'should raise WebpayRails::InvalidCertificate'
|
200
121
|
end
|
201
122
|
end
|
202
123
|
|
203
|
-
describe
|
204
|
-
|
124
|
+
describe 'Normal debit payment flow' do
|
125
|
+
before(:each) { visit '/' }
|
126
|
+
|
127
|
+
context 'when it accepted' do
|
128
|
+
it 'it is sent to the success page' do
|
129
|
+
# Rails app
|
130
|
+
fill_in(id: 'order_amount', with: '1000')
|
131
|
+
find('input[type=submit]').click
|
132
|
+
|
133
|
+
# Webpay
|
134
|
+
find('input#TBK_TIPO_TARJETA[value=DEBIT_CARD]').set(true)
|
135
|
+
select('TEST COMMERCE BANK', from: 'TBK_BANCO')
|
136
|
+
fill_in('TBK_NUMERO_TARJETA', with: '12345678')
|
137
|
+
click_button('button')
|
138
|
+
|
139
|
+
# Demo Bank
|
140
|
+
within_frame('transicion') do
|
141
|
+
fill_in('rutClient', with: '111111111')
|
142
|
+
fill_in('passwordClient', with: '123')
|
143
|
+
find('input[type=submit]').click
|
144
|
+
# It is not necessary because it is already selected by default
|
145
|
+
# select('Aceptar', from: 'vci')
|
146
|
+
find('input[type=submit]').click
|
147
|
+
end
|
148
|
+
|
149
|
+
# Webpay
|
150
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
151
|
+
click_button('button4')
|
152
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
153
|
+
|
154
|
+
# Rails app
|
155
|
+
expect(page).to have_content('Success transaction')
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when it rejected' do
|
160
|
+
it 'it is sent to the failure page' do
|
161
|
+
# Rails app
|
162
|
+
fill_in(id: 'order_amount', with: '1000')
|
163
|
+
find('input[type=submit]').click
|
164
|
+
|
165
|
+
# Webpay
|
166
|
+
find('input#TBK_TIPO_TARJETA[value=DEBIT_CARD]').set(true)
|
167
|
+
select('TEST COMMERCE BANK', from: 'TBK_BANCO')
|
168
|
+
fill_in('TBK_NUMERO_TARJETA', with: '12345678')
|
169
|
+
click_button('button')
|
170
|
+
|
171
|
+
# Demo Bank
|
172
|
+
within_frame('transicion') do
|
173
|
+
fill_in('rutClient', with: '111111111')
|
174
|
+
fill_in('passwordClient', with: '123')
|
175
|
+
find('input[type=submit]').click
|
176
|
+
|
177
|
+
select('Rechazar', from: 'vci')
|
178
|
+
find('input[type=submit]').click
|
179
|
+
end
|
180
|
+
|
181
|
+
# Webpay
|
182
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
183
|
+
|
184
|
+
# Rails app
|
185
|
+
expect(page).to have_content('Failed transaction')
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
context 'when click on the "Anular" button' do
|
190
|
+
it 'it is sent to the failure page' do
|
191
|
+
# Rails app
|
192
|
+
fill_in(id: 'order_amount', with: '1000')
|
193
|
+
find('input[type=submit]').click
|
194
|
+
|
195
|
+
# Webpay
|
196
|
+
click_button('button3')
|
197
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
198
|
+
|
199
|
+
# Rails app
|
200
|
+
expect(page).to have_content('Failed transaction')
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe 'Normal credit (without shares) payment flow' do
|
206
|
+
before(:each) { visit '/' }
|
207
|
+
|
208
|
+
context 'when it accepted' do
|
209
|
+
it 'it is sent to the success page' do
|
210
|
+
# Rails app
|
211
|
+
fill_in(id: 'order_amount', with: '1000')
|
212
|
+
find('input[type=submit]').click
|
213
|
+
|
214
|
+
# Webpay
|
215
|
+
find('input#TBK_TIPO_TARJETA[value=CREDIT_CARD]').set(true)
|
216
|
+
fill_in('TBK_NUMERO_TARJETA', with: '4051885600446623')
|
217
|
+
fill_in('TBK_CVV', with: '123')
|
218
|
+
shares_radio = find('input#TBK_TIPO_PAGO597020000541_noshares')
|
219
|
+
expect(shares_radio).to be_checked
|
220
|
+
click_button('button')
|
221
|
+
|
222
|
+
# Demo Bank
|
223
|
+
within_frame('transicion') do
|
224
|
+
fill_in('rutClient', with: '111111111')
|
225
|
+
fill_in('passwordClient', with: '123')
|
226
|
+
find('input[type=submit]').click
|
227
|
+
# It is not necessary because it is already selected by default
|
228
|
+
# select('Aceptar', from: 'vci')
|
229
|
+
find('input[type=submit]').click
|
230
|
+
end
|
231
|
+
|
232
|
+
# Webpay
|
233
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
234
|
+
click_button('button4')
|
235
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
236
|
+
|
237
|
+
# Rails app
|
238
|
+
expect(page).to have_content('Success transaction')
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context 'when it rejected' do
|
243
|
+
it 'it is sent to the failure page' do
|
244
|
+
# Rails app
|
245
|
+
fill_in(id: 'order_amount', with: '1000')
|
246
|
+
find('input[type=submit]').click
|
247
|
+
|
248
|
+
# Webpay
|
249
|
+
find('input#TBK_TIPO_TARJETA[value=CREDIT_CARD]').set(true)
|
250
|
+
fill_in('TBK_NUMERO_TARJETA', with: '4051885600446623')
|
251
|
+
fill_in('TBK_CVV', with: '123')
|
252
|
+
shares_radio = find('input#TBK_TIPO_PAGO597020000541_noshares')
|
253
|
+
expect(shares_radio).to be_checked
|
254
|
+
click_button('button')
|
255
|
+
|
256
|
+
# Demo Bank
|
257
|
+
within_frame('transicion') do
|
258
|
+
fill_in('rutClient', with: '111111111')
|
259
|
+
fill_in('passwordClient', with: '123')
|
260
|
+
find('input[type=submit]').click
|
261
|
+
|
262
|
+
select('Rechazar', from: 'vci')
|
263
|
+
find('input[type=submit]').click
|
264
|
+
end
|
265
|
+
|
266
|
+
# Webpay
|
267
|
+
accept_alert if page.driver.options[:browser] == :firefox
|
268
|
+
|
269
|
+
# Rails app
|
270
|
+
expect(page).to have_content('Failed transaction')
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
describe WebpayRails::TransactionNullified do
|
276
|
+
before(:all) { @approved_order = Order.normal_selling.approved.first! }
|
277
|
+
before(:all) do
|
278
|
+
@nullify_params = {
|
279
|
+
authorization_code: @approved_order.tbk_authorization_code,
|
280
|
+
authorized_amount: @approved_order.amount,
|
281
|
+
buy_order: @approved_order.tbk_buy_order,
|
282
|
+
nullify_amount: @approved_order.amount
|
283
|
+
}
|
284
|
+
end
|
285
|
+
|
286
|
+
context 'when all is ok' do
|
287
|
+
before(:all) { @nullified_transaction = Order.nullify(@nullify_params) }
|
288
|
+
|
289
|
+
it { expect(@nullified_transaction).to be_kind_of(WebpayRails::TransactionNullified) }
|
290
|
+
|
291
|
+
describe '.token' do
|
292
|
+
it { expect(@nullified_transaction.token).not_to be_blank }
|
293
|
+
end
|
294
|
+
|
295
|
+
describe '.authorization_code' do
|
296
|
+
it { expect(@nullified_transaction.authorization_code).not_to be_blank }
|
297
|
+
end
|
298
|
+
|
299
|
+
describe '.authorization_date' do
|
300
|
+
it { expect(@nullified_transaction.authorization_date).not_to be_blank }
|
301
|
+
end
|
302
|
+
|
303
|
+
describe '.balance' do
|
304
|
+
it { expect(@nullified_transaction.balance).not_to be_blank }
|
305
|
+
end
|
306
|
+
|
307
|
+
describe '.nullified_amount' do
|
308
|
+
it { expect(@nullified_transaction.nullified_amount).not_to be_blank }
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
context 'when not' do
|
313
|
+
it { expect { Order.nullify(@nullify_params.merge(nullify_amount: 0)) }.to raise_error(WebpayRails::RequestFailed) }
|
314
|
+
pending 'should raise WebpayRails::InvalidCertificate'
|
315
|
+
end
|
205
316
|
end
|
206
317
|
end
|