spree_vpago 2.3.13.pre.pre1 → 2.3.13
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/Gemfile.lock +2 -2
- data/app/assets/config/spree_vpago_manifest.js +0 -1
- data/app/controllers/spree/vpago_payments_controller.rb +8 -24
- data/app/helpers/vpago/vpago_payments_helper.rb +6 -0
- data/app/models/spree/gateway/payway_v2.rb +0 -6
- data/app/models/spree/gateway/true_money.rb +0 -4
- data/app/models/vpago/payment_decorator.rb +0 -1
- data/app/models/vpago/payment_method_decorator.rb +0 -6
- data/app/services/vpago/payment_url_constructor.rb +0 -1
- data/app/views/layouts/vpago_payments.html.erb +0 -1
- data/app/views/spree/vpago_payments/_success_script.html.erb +7 -0
- data/app/views/spree/vpago_payments/forms/spree/gateway/_payway_v2.html.erb +42 -35
- data/app/views/spree/vpago_payments/forms/spree/gateway/_true_money.html.erb +15 -15
- data/app/views/spree/vpago_payments/success.html.erb +2 -0
- data/config/routes.rb +0 -1
- data/lib/spree_vpago/version.rb +1 -1
- data/spree_vpago.gemspec +1 -1
- metadata +9 -10
- data/app/assets/javascripts/vpago/vpago_payments/create_transaction.js +0 -35
- data/lib/vpago/payway_v2/transaction_creator.rb +0 -29
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bdd8f50bd5b048c05af17f829cfccd26404d0d7cda2045bb035d13ad1538a07b
|
|
4
|
+
data.tar.gz: 4ecd233d69198bb6519c593c4fb35d72c4abe68bf113f4fc73e95178fb205aff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bf536c675b11021b9c5fcbcb2eaaa4ef74e7a5ba8a201988d8254d33836a355a6bb98748fed8432ad47b5464594a6baa9c24ae843e373cffa7b1c0612cbeee66
|
|
7
|
+
data.tar.gz: 30b0d2b5289f52036d72d4062d7940075ab261e6d0a6f2dafe5ba39d04a6f21a7df18cda72ff4e4682ea95723d8d05f2a5bb02018e6876f24b411f1b7eb57b96
|
data/Gemfile.lock
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
spree_vpago (2.3.13
|
|
4
|
+
spree_vpago (2.3.13)
|
|
5
5
|
faraday
|
|
6
6
|
google-cloud-firestore
|
|
7
7
|
spree_api (>= 4.5)
|
|
8
8
|
spree_backend (>= 4.5)
|
|
9
9
|
spree_core (>= 4.5)
|
|
10
|
-
spree_extension
|
|
10
|
+
spree_extension
|
|
11
11
|
spree_multi_vendor (>= 2.4.1)
|
|
12
12
|
|
|
13
13
|
GEM
|
|
@@ -23,6 +23,11 @@ module Spree
|
|
|
23
23
|
# GET
|
|
24
24
|
def processing
|
|
25
25
|
@order = @payment.order
|
|
26
|
+
|
|
27
|
+
# Common, not an edge case: the gateway callback or the checkout page's transaction
|
|
28
|
+
# checker often completes the order before the browser lands here. Skipping this page
|
|
29
|
+
# also skips its Firebase listener, so success must post order_is_completed itself
|
|
30
|
+
# (render_success_script) or an embedding iframe modal never closes.
|
|
26
31
|
return redirect_to @payment.success_url, allow_other_host: true if @order.completed?
|
|
27
32
|
|
|
28
33
|
VpagoLogger.log(label: 'Spree::VpagoPaymentsController#processing', data: vpago_log_context)
|
|
@@ -69,27 +74,6 @@ module Spree
|
|
|
69
74
|
render json: { status: :pending }, status: :ok
|
|
70
75
|
end
|
|
71
76
|
|
|
72
|
-
# POST
|
|
73
|
-
def create_transaction
|
|
74
|
-
@payment = Vpago::PaymentFinder.new(params.permit!.to_h).find_and_verify
|
|
75
|
-
raise ActiveRecord::RecordNotFound unless @payment.present?
|
|
76
|
-
|
|
77
|
-
return render json: { error: true, message: 'unsupported' }, status: :not_implemented unless @payment.payment_method.support_create_transaction_api?
|
|
78
|
-
|
|
79
|
-
result = VpagoLogger.log(
|
|
80
|
-
label: 'Spree::VpagoPaymentsController#create_transaction',
|
|
81
|
-
data: vpago_log_context
|
|
82
|
-
) { @payment.payment_method.create_transaction(@payment, platform: params[:platform]) }
|
|
83
|
-
|
|
84
|
-
render json: result, status: :ok
|
|
85
|
-
rescue Faraday::Error, JSON::ParserError, NoMethodError => e
|
|
86
|
-
VpagoLogger.error(
|
|
87
|
-
label: 'Spree::VpagoPaymentsController#create_transaction failed',
|
|
88
|
-
data: vpago_log_context(error_class: e.class.name, error_message: e.message)
|
|
89
|
-
)
|
|
90
|
-
render json: { error: true, message: 'Failed to create transaction' }, status: :bad_gateway
|
|
91
|
-
end
|
|
92
|
-
|
|
93
77
|
# POST
|
|
94
78
|
def process_payment
|
|
95
79
|
return render json: { status: :ok }, status: :ok if request.method != 'POST'
|
|
@@ -174,9 +158,9 @@ module Spree
|
|
|
174
158
|
raise ActiveRecord::RecordNotFound unless @payment.present?
|
|
175
159
|
end
|
|
176
160
|
|
|
177
|
-
#
|
|
178
|
-
#
|
|
179
|
-
#
|
|
161
|
+
# These pages are embedded in iframes on many partner sites we don't
|
|
162
|
+
# enumerate, so framing is left unrestricted: no frame-ancestors policy, and
|
|
163
|
+
# Rails' default SAMEORIGIN header is dropped for the iframe actions.
|
|
180
164
|
def allow_iframe_embedding
|
|
181
165
|
response.headers.delete('X-Frame-Options')
|
|
182
166
|
end
|
|
@@ -13,6 +13,12 @@ module Vpago
|
|
|
13
13
|
render partial: 'spree/vpago_payments/transaction_checker'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
# Host apps override success.html.erb; call this from every override so an
|
|
17
|
+
# embedding iframe modal still learns the order completed.
|
|
18
|
+
def render_success_script
|
|
19
|
+
render partial: 'spree/vpago_payments/success_script'
|
|
20
|
+
end
|
|
21
|
+
|
|
16
22
|
# Each payment method may have their own additional processing script,
|
|
17
23
|
# so we will look for the partial based on the payment method class name.
|
|
18
24
|
#
|
|
@@ -168,12 +168,6 @@ module Spree
|
|
|
168
168
|
checker
|
|
169
169
|
end
|
|
170
170
|
|
|
171
|
-
def create_transaction(payment, options = {})
|
|
172
|
-
creator = Vpago::PaywayV2::TransactionCreator.new(payment, disable_return_deeplink: options[:platform] == 'web')
|
|
173
|
-
creator.call
|
|
174
|
-
creator.json_response
|
|
175
|
-
end
|
|
176
|
-
|
|
177
171
|
private
|
|
178
172
|
|
|
179
173
|
def cancel_pre_auth(payment)
|
|
@@ -43,12 +43,6 @@ module Vpago
|
|
|
43
43
|
respond_to?(:check_transaction)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
# The payment method must implement `create_transaction(payment, options = {})`,
|
|
47
|
-
# returning a Hash suitable for `render json:` directly.
|
|
48
|
-
def support_create_transaction_api?
|
|
49
|
-
respond_to?(:create_transaction)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
46
|
# TODO: we have already implement purchase for payway_v2.
|
|
53
47
|
# make sure to implement this on other payment method as well.
|
|
54
48
|
def purchase(_amount, _source, _gateway_options = {})
|
|
@@ -18,7 +18,6 @@ module Vpago
|
|
|
18
18
|
def success_deeplink_url = "#{app_scheme}://#{URI(base_url).host}/book/payment?number=#{order.number}&tk=#{order.token}"
|
|
19
19
|
|
|
20
20
|
def check_transaction_url = "#{base_url}/vpago_payments/check_transaction?#{query}"
|
|
21
|
-
def create_transaction_url = "#{base_url}/vpago_payments/create_transaction?#{query}"
|
|
22
21
|
def process_payment_url = "#{base_url}/vpago_payments/process_payment?#{query}"
|
|
23
22
|
|
|
24
23
|
def query
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
<%= yield :head %>
|
|
12
12
|
|
|
13
13
|
<%= javascript_include_tag "vpago/vpago_payments/check_transaction_periodically", 'data-turbo-track': 'reload' %>
|
|
14
|
-
<%= javascript_include_tag "vpago/vpago_payments/create_transaction", 'data-turbo-track': 'reload' %>
|
|
15
14
|
<%= javascript_include_tag "vpago/vpago_payments/request_process_payment", 'data-turbo-track': 'reload' %>
|
|
16
15
|
<%= javascript_include_tag "vpago/vpago_payments/user_informers/#{user_informer}", 'data-turbo-track': 'reload' %>
|
|
17
16
|
</head>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
// processing redirects here without rendering once the order is complete, so its
|
|
3
|
+
// Firebase listener never posts this. success only renders for completed orders.
|
|
4
|
+
if (window.parent !== window) {
|
|
5
|
+
window.parent.postMessage("order_is_completed", "*");
|
|
6
|
+
}
|
|
7
|
+
</script>
|
|
@@ -43,48 +43,55 @@
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
function submitFormViaJs(){
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
onSuccess: function(data) {
|
|
49
|
-
console.log("[Vpago] checkout response data:", JSON.stringify(data));
|
|
50
|
-
|
|
51
|
-
// When status code is 4 (duplicated transaction),
|
|
52
|
-
// Possibly user refresh the checkout page even after the transaction is completed.
|
|
53
|
-
// So in this case, we should hide loading spinner and show redirect container UI
|
|
54
|
-
// While it check transaction status in the background. It will automatically redirect user to the result page after checking.
|
|
55
|
-
if (data.status.code === 4){
|
|
56
|
-
showRedirectContainer();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
46
|
+
var formData = new FormData(document.getElementById("aba_merchant_request"));
|
|
47
|
+
var checkoutUrl = document.getElementById("aba_merchant_request").action;
|
|
59
48
|
|
|
60
|
-
|
|
49
|
+
fetch(checkoutUrl, {
|
|
50
|
+
method: "POST",
|
|
51
|
+
body: formData
|
|
52
|
+
})
|
|
53
|
+
.then(function(response) {
|
|
54
|
+
return response.json();
|
|
55
|
+
})
|
|
56
|
+
.then(function(data) {
|
|
57
|
+
console.log("[Vpago] checkout response data:", JSON.stringify(data));
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
// When status code is 4 (duplicated transaction),
|
|
60
|
+
// Possibly user refresh the checkout page even after the transaction is completed.
|
|
61
|
+
// So in this case, we should hide loading spinner and show redirect container UI
|
|
62
|
+
// While it check transaction status in the background. It will automatically redirect user to the result page after checking.
|
|
63
|
+
if (data.status.code === 4){
|
|
64
|
+
showRedirectContainer();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let deeplinkTriggered = false;
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
if (data.abapay_deeplink && shouldOpenAbaPayDeeplink) {
|
|
71
|
+
window.location.href = data.abapay_deeplink;
|
|
72
|
+
deeplinkTriggered = true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (data.checkout_qr_url && shouldOpenCheckoutUrl) {
|
|
76
|
+
// If a deeplink is triggered, add a short delay before navigating to the checkout URL.
|
|
77
|
+
// Without this delay, some platforms (especially Android) may ignore or cancel the deeplink
|
|
78
|
+
// because a second navigation happens too quickly.
|
|
79
|
+
if (deeplinkTriggered){
|
|
80
|
+
setTimeout(() => {
|
|
76
81
|
window.location.href = data.checkout_qr_url;
|
|
77
|
-
}
|
|
82
|
+
}, 300);
|
|
83
|
+
} else {
|
|
84
|
+
window.location.href = data.checkout_qr_url;
|
|
78
85
|
}
|
|
86
|
+
}
|
|
79
87
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
onError: function() {
|
|
86
|
-
document.getElementById('vpago_loading_container').textContent = "We couldn't start your payment. Please go back and try again.";
|
|
88
|
+
var shouldShowRedirectContainer = !shouldOpenCheckoutUrl && shouldOpenAbaPayDeeplink;
|
|
89
|
+
if(shouldShowRedirectContainer){
|
|
90
|
+
showRedirectContainer("Open ABA Mobile", () => window.location.href = data.abapay_deeplink);
|
|
87
91
|
}
|
|
92
|
+
})
|
|
93
|
+
.catch(function(error) {
|
|
94
|
+
console.error("Payment request failed:", error);
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<% @checkout = ::Vpago::TrueMoney::Checkout.new(@payment) %>
|
|
2
|
+
<% redirect_urls = @checkout.generate_payment_urls(params[:platform]) %>
|
|
3
|
+
|
|
1
4
|
<script>
|
|
2
5
|
function showRedirectContainer(buttonLabel, onClick) {
|
|
3
6
|
const loadingContainer = document.getElementById('vpago_loading_container');
|
|
@@ -13,22 +16,19 @@
|
|
|
13
16
|
|
|
14
17
|
document.addEventListener("DOMContentLoaded", () => {
|
|
15
18
|
const platform = "<%= params[:platform] %>";
|
|
19
|
+
const redirectUrls = <%= redirect_urls.to_json.html_safe %>;
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
window.location.href = redirectUrls.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} else {
|
|
26
|
-
window.open(redirectUrls.webview, '_blank');
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
onError: function() {
|
|
30
|
-
document.getElementById('vpago_loading_container').textContent = "We couldn't start your payment. Please go back and try again.";
|
|
21
|
+
function setupConfirmPaymentButton() {
|
|
22
|
+
if (platform === "app") {
|
|
23
|
+
window.location.href = redirectUrls.deeplink;
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
window.location.href = redirectUrls.webview;
|
|
26
|
+
}, 1500);
|
|
27
|
+
} else {
|
|
28
|
+
window.open(redirectUrls.webview, '_blank');
|
|
31
29
|
}
|
|
32
|
-
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
setupConfirmPaymentButton();
|
|
33
33
|
});
|
|
34
34
|
</script>
|
data/config/routes.rb
CHANGED
data/lib/spree_vpago/version.rb
CHANGED
data/spree_vpago.gemspec
CHANGED
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
|
26
26
|
s.add_dependency 'spree_api', spree_version
|
|
27
27
|
s.add_dependency 'spree_backend', spree_version
|
|
28
28
|
s.add_dependency 'spree_core', spree_version
|
|
29
|
-
s.add_dependency 'spree_extension'
|
|
29
|
+
s.add_dependency 'spree_extension'
|
|
30
30
|
s.add_dependency 'spree_multi_vendor', '>= 2.4.1'
|
|
31
31
|
|
|
32
32
|
s.metadata['rubygems_mfa_required'] = 'true'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_vpago
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.3.13
|
|
4
|
+
version: 2.3.13
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -84,16 +84,16 @@ dependencies:
|
|
|
84
84
|
name: spree_extension
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- - "
|
|
87
|
+
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
89
|
+
version: '0'
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- - "
|
|
94
|
+
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
96
|
+
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: spree_multi_vendor
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,7 +147,6 @@ files:
|
|
|
147
147
|
- app/assets/images/vpago/payway/abapay.png
|
|
148
148
|
- app/assets/images/vpago/payway/cards.png
|
|
149
149
|
- app/assets/javascripts/vpago/vpago_payments/check_transaction_periodically.js
|
|
150
|
-
- app/assets/javascripts/vpago/vpago_payments/create_transaction.js
|
|
151
150
|
- app/assets/javascripts/vpago/vpago_payments/request_process_payment.js
|
|
152
151
|
- app/assets/javascripts/vpago/vpago_payments/user_informers/firebase.js
|
|
153
152
|
- app/controllers/.gitkeep
|
|
@@ -345,6 +344,7 @@ files:
|
|
|
345
344
|
- app/views/spree/payway_results/success.html.erb
|
|
346
345
|
- app/views/spree/payway_v2_card_popups/_form.html.erb
|
|
347
346
|
- app/views/spree/payway_v2_card_popups/show.html.erb
|
|
347
|
+
- app/views/spree/vpago_payments/_success_script.html.erb
|
|
348
348
|
- app/views/spree/vpago_payments/_transaction_checker.html.erb
|
|
349
349
|
- app/views/spree/vpago_payments/checkout.html.erb
|
|
350
350
|
- app/views/spree/vpago_payments/forms/spree/gateway/_acleda_v2.html.erb
|
|
@@ -425,7 +425,6 @@ files:
|
|
|
425
425
|
- lib/vpago/payway_v2/payouts_params_constructor.rb
|
|
426
426
|
- lib/vpago/payway_v2/pre_auth_canceler.rb
|
|
427
427
|
- lib/vpago/payway_v2/pre_auth_completer.rb
|
|
428
|
-
- lib/vpago/payway_v2/transaction_creator.rb
|
|
429
428
|
- lib/vpago/payway_v2/transaction_status.rb
|
|
430
429
|
- lib/vpago/payway_v2/transaction_status_v2.rb
|
|
431
430
|
- lib/vpago/true_money/base.rb
|
|
@@ -467,9 +466,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
467
466
|
version: 3.2.0
|
|
468
467
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
469
468
|
requirements:
|
|
470
|
-
- - "
|
|
469
|
+
- - ">="
|
|
471
470
|
- !ruby/object:Gem::Version
|
|
472
|
-
version:
|
|
471
|
+
version: '0'
|
|
473
472
|
requirements:
|
|
474
473
|
- none
|
|
475
474
|
rubygems_version: 3.4.1
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calls our own server, which creates the bank transaction on the browser's
|
|
3
|
-
* behalf and returns the bank's response as JSON.
|
|
4
|
-
*
|
|
5
|
-
* @param {Object} options
|
|
6
|
-
* @param {string} options.url
|
|
7
|
-
* @param {Function} options.onSuccess
|
|
8
|
-
* @param {Function} options.onError
|
|
9
|
-
*/
|
|
10
|
-
async function createTransaction({ url, onSuccess, onError }) {
|
|
11
|
-
try {
|
|
12
|
-
const response = await fetch(url, {
|
|
13
|
-
method: "POST",
|
|
14
|
-
headers: {
|
|
15
|
-
"X-CSRF-Token": document
|
|
16
|
-
.querySelector('meta[name="csrf-token"]')
|
|
17
|
-
.getAttribute("content"),
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
const data = await response.json();
|
|
21
|
-
|
|
22
|
-
if (!response.ok || data.error) {
|
|
23
|
-
console.error("[Vpago] createTransaction failed:", JSON.stringify(data));
|
|
24
|
-
onError(data);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
onSuccess(data);
|
|
29
|
-
} catch (error) {
|
|
30
|
-
console.error("[Vpago] createTransaction request failed:", error);
|
|
31
|
-
onError(error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
window.createTransaction = createTransaction;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
require 'faraday'
|
|
2
|
-
|
|
3
|
-
module Vpago
|
|
4
|
-
module PaywayV2
|
|
5
|
-
class TransactionCreator < Checkout
|
|
6
|
-
def call
|
|
7
|
-
@response = submit_transaction
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def json_response
|
|
11
|
-
@json_response ||= JSON.parse(@response.body)
|
|
12
|
-
rescue JSON::ParserError
|
|
13
|
-
{}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def submit_transaction
|
|
19
|
-
conn = Faraday::Connection.new do |faraday|
|
|
20
|
-
faraday.request :url_encoded
|
|
21
|
-
faraday.options.open_timeout = Vpago::HttpTimeouts::OPEN_TIMEOUT
|
|
22
|
-
faraday.options.timeout = Vpago::HttpTimeouts::TIMEOUT
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
conn.post(checkout_url, gateway_params)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|