paybox_direct 0.2.1 → 0.2.2
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.
- checksums.yaml +4 -4
- data/lib/paybox_direct.rb +12 -12
- data/lib/paybox_direct/request.rb +10 -7
- data/spec/request_spec.rb +27 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4df2da7d7c8afeef4c54db857c9d8d0605722a4d
|
4
|
+
data.tar.gz: e1ba1979d9f90e90797c6d541e241a9ada88ecc5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 289343c6722ad3850ff64aa2c1ba35d4ef756ad1a2ee9f49e68e7146f00c4c5b941d263527df77c460d60a0e48d1ee937b880d72519535f6011a7dedba80cec1
|
7
|
+
data.tar.gz: 66268de49aaa502702d1c15a02f5b43bcaec166ca3fc522c68f515637d24974b7db29c8d0d27db780da9c32cde322ae76ac1d7d8dd8b86ff3fd875d557d04ddf
|
data/lib/paybox_direct.rb
CHANGED
@@ -7,20 +7,20 @@ require 'ostruct'
|
|
7
7
|
require 'net/http'
|
8
8
|
|
9
9
|
module PayboxDirect
|
10
|
-
DEV_URL =
|
11
|
-
PROD_URL =
|
12
|
-
PROD_FALLBACK_URL =
|
10
|
+
DEV_URL = URI("https://preprod-ppps.paybox.com/PPPS.php")
|
11
|
+
PROD_URL = URI("https://ppps.paybox.com/PPPS.php")
|
12
|
+
PROD_FALLBACK_URL = URI("https://ppps1.paybox.com/PPPS.php")
|
13
13
|
|
14
14
|
CURRENCIES = {
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
15
|
+
AUD: 36,
|
16
|
+
CAD: 124,
|
17
|
+
CHF: 756,
|
18
|
+
DKK: 208,
|
19
|
+
EUR: 978,
|
20
|
+
GBP: 826,
|
21
|
+
HKD: 344,
|
22
|
+
JPY: 392,
|
23
|
+
USD: 840
|
24
24
|
}
|
25
25
|
|
26
26
|
@@config = OpenStruct.new({
|
@@ -7,7 +7,7 @@ require 'rack'
|
|
7
7
|
|
8
8
|
class PayboxDirect::Request
|
9
9
|
attr_reader :vars, :post_request, :fields, :http_resp
|
10
|
-
attr_accessor :response
|
10
|
+
attr_accessor :response, :http_connection
|
11
11
|
|
12
12
|
@@request_callbacks = []
|
13
13
|
@@undo_callbacks = []
|
@@ -20,7 +20,7 @@ class PayboxDirect::Request
|
|
20
20
|
@@undo_callbacks << block
|
21
21
|
end
|
22
22
|
|
23
|
-
def initialize(vars)
|
23
|
+
def initialize(vars, http_conn = nil)
|
24
24
|
defaults = {
|
25
25
|
"VERSION" => PayboxDirect.config.version.to_s.rjust(5, "0"),
|
26
26
|
"SITE" => PayboxDirect.config.site.to_s.rjust(7, "0"),
|
@@ -39,6 +39,7 @@ class PayboxDirect::Request
|
|
39
39
|
|
40
40
|
@post_request = nil
|
41
41
|
@fields = nil
|
42
|
+
@http_connection = http_conn
|
42
43
|
@response = {}
|
43
44
|
@is_executed = false
|
44
45
|
end
|
@@ -50,9 +51,7 @@ class PayboxDirect::Request
|
|
50
51
|
def execute!
|
51
52
|
use_alt = false
|
52
53
|
begin
|
53
|
-
|
54
|
-
uri = URI(PayboxDirect.config.is_prod ? prod_url : PayboxDirect::DEV_URL)
|
55
|
-
resp = run_http_post!(uri)
|
54
|
+
resp = run_http_post!(self.class.uri(use_alt))
|
56
55
|
raise PayboxDirect::ServerUnavailableError if resp.code != "200"
|
57
56
|
@fields = Rack::Utils.parse_query(resp.body)
|
58
57
|
if !@fields.has_key?("CODEREPONSE") or @fields["CODEREPONSE"] == "00001"
|
@@ -102,8 +101,12 @@ class PayboxDirect::Request
|
|
102
101
|
return @fields["COMMENTAIRE"]
|
103
102
|
end
|
104
103
|
|
104
|
+
def self.uri(alt = false)
|
105
|
+
prod_url = alt ? PayboxDirect::PROD_FALLBACK_URL : PayboxDirect::PROD_URL
|
106
|
+
return PayboxDirect.config.is_prod ? prod_url : PayboxDirect::DEV_URL
|
107
|
+
end
|
108
|
+
|
105
109
|
def self.http_connection(uri)
|
106
|
-
# We may want to execute multiple requests on a single HTTP connection in the future.
|
107
110
|
http = Net::HTTP.new(uri.host, uri.port)
|
108
111
|
http.use_ssl = true
|
109
112
|
return http
|
@@ -112,7 +115,7 @@ class PayboxDirect::Request
|
|
112
115
|
private
|
113
116
|
|
114
117
|
def run_http_post!(uri)
|
115
|
-
http = self.class.http_connection(uri)
|
118
|
+
http = @http_connection || self.class.http_connection(uri)
|
116
119
|
@post_request = Net::HTTP::Post.new(uri.request_uri)
|
117
120
|
@post_request.set_form_data(@vars)
|
118
121
|
begin
|
data/spec/request_spec.rb
CHANGED
@@ -61,10 +61,32 @@ RSpec.describe PayboxDirect::Request do
|
|
61
61
|
req.execute!
|
62
62
|
end
|
63
63
|
|
64
|
+
it "#uri" do
|
65
|
+
PayboxDirect.config.is_prod = true
|
66
|
+
expect(PayboxDirect::Request.uri(false)).to eq PayboxDirect::PROD_URL
|
67
|
+
expect(PayboxDirect::Request.uri(true)).to eq PayboxDirect::PROD_FALLBACK_URL
|
68
|
+
PayboxDirect.config.is_prod = false
|
69
|
+
expect(PayboxDirect::Request.uri(false)).to eq PayboxDirect::DEV_URL
|
70
|
+
expect(PayboxDirect::Request.uri(true)).to eq PayboxDirect::DEV_URL
|
71
|
+
end
|
72
|
+
|
73
|
+
it "accepts a specific connection" do
|
74
|
+
http = PayboxDirect::Request.http_connection(PayboxDirect::Request.uri)
|
75
|
+
req = PayboxDirect::Request.new("VAR1" => "VAL1", "VAR2" => "VAL2")
|
76
|
+
req.http_connection = http
|
77
|
+
expect(http).to receive(:request) do
|
78
|
+
OpenStruct.new({
|
79
|
+
code: "200",
|
80
|
+
body: "CODEREPONSE=00000&COMMENTAIRE=OK"
|
81
|
+
})
|
82
|
+
end
|
83
|
+
req.execute!
|
84
|
+
end
|
85
|
+
|
64
86
|
it "should raise ServerUnavailable in dev" do
|
65
87
|
was_prod = PayboxDirect.config.is_prod
|
66
88
|
PayboxDirect.config.is_prod = false
|
67
|
-
dev_uri =
|
89
|
+
dev_uri = PayboxDirect::DEV_URL
|
68
90
|
|
69
91
|
req = PayboxDirect::Request.new("VAR1" => "VAL1", "VAR2" => "VAL2")
|
70
92
|
expect_any_instance_of(Net::HTTP).to receive(:request).and_raise(SocketError)
|
@@ -78,8 +100,8 @@ RSpec.describe PayboxDirect::Request do
|
|
78
100
|
it "should fallback on alt URL in prod" do
|
79
101
|
was_prod = PayboxDirect.config.is_prod
|
80
102
|
PayboxDirect.config.is_prod = true
|
81
|
-
prod_uri =
|
82
|
-
prod_fallback_uri =
|
103
|
+
prod_uri = PayboxDirect::PROD_URL
|
104
|
+
prod_fallback_uri = PayboxDirect::PROD_FALLBACK_URL
|
83
105
|
|
84
106
|
req = PayboxDirect::Request.new("VAR1" => "VAL1", "VAR2" => "VAL2")
|
85
107
|
expect(req).to receive(:run_http_post!).with(prod_uri).and_raise(PayboxDirect::ServerUnavailableError)
|
@@ -98,8 +120,8 @@ RSpec.describe PayboxDirect::Request do
|
|
98
120
|
it "should raise ServerUnavailable in prod" do
|
99
121
|
was_prod = PayboxDirect.config.is_prod
|
100
122
|
PayboxDirect.config.is_prod = true
|
101
|
-
prod_uri =
|
102
|
-
prod_fallback_uri =
|
123
|
+
prod_uri = PayboxDirect::PROD_URL
|
124
|
+
prod_fallback_uri = PayboxDirect::PROD_FALLBACK_URL
|
103
125
|
|
104
126
|
req = PayboxDirect::Request.new("VAR1" => "VAL1", "VAR2" => "VAL2")
|
105
127
|
expect(req).to receive(:run_http_post!).with(prod_uri).and_raise(PayboxDirect::ServerUnavailableError)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paybox_direct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kévin Lesénéchal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|