offsite_payments 2.0.0
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +70 -0
- data/lib/offsite_payments.rb +46 -0
- data/lib/offsite_payments/action_view_helper.rb +72 -0
- data/lib/offsite_payments/helper.rb +119 -0
- data/lib/offsite_payments/integrations.rb +14 -0
- data/lib/offsite_payments/integrations/a1agregator.rb +245 -0
- data/lib/offsite_payments/integrations/authorize_net_sim.rb +580 -0
- data/lib/offsite_payments/integrations/bit_pay.rb +150 -0
- data/lib/offsite_payments/integrations/bogus.rb +32 -0
- data/lib/offsite_payments/integrations/chronopay.rb +283 -0
- data/lib/offsite_payments/integrations/citrus.rb +227 -0
- data/lib/offsite_payments/integrations/direc_pay.rb +339 -0
- data/lib/offsite_payments/integrations/directebanking.rb +237 -0
- data/lib/offsite_payments/integrations/doku.rb +171 -0
- data/lib/offsite_payments/integrations/dotpay.rb +166 -0
- data/lib/offsite_payments/integrations/dwolla.rb +160 -0
- data/lib/offsite_payments/integrations/e_payment_plans.rb +146 -0
- data/lib/offsite_payments/integrations/easy_pay.rb +137 -0
- data/lib/offsite_payments/integrations/epay.rb +161 -0
- data/lib/offsite_payments/integrations/first_data.rb +133 -0
- data/lib/offsite_payments/integrations/gestpay.rb +201 -0
- data/lib/offsite_payments/integrations/hi_trust.rb +179 -0
- data/lib/offsite_payments/integrations/ipay88.rb +240 -0
- data/lib/offsite_payments/integrations/klarna.rb +291 -0
- data/lib/offsite_payments/integrations/liqpay.rb +216 -0
- data/lib/offsite_payments/integrations/maksuturva.rb +231 -0
- data/lib/offsite_payments/integrations/mollie_ideal.rb +213 -0
- data/lib/offsite_payments/integrations/moneybookers.rb +199 -0
- data/lib/offsite_payments/integrations/nochex.rb +228 -0
- data/lib/offsite_payments/integrations/pag_seguro.rb +255 -0
- data/lib/offsite_payments/integrations/paxum.rb +114 -0
- data/lib/offsite_payments/integrations/pay_fast.rb +269 -0
- data/lib/offsite_payments/integrations/paydollar.rb +142 -0
- data/lib/offsite_payments/integrations/payflow_link.rb +194 -0
- data/lib/offsite_payments/integrations/paypal.rb +362 -0
- data/lib/offsite_payments/integrations/paypal_payments_advanced.rb +23 -0
- data/lib/offsite_payments/integrations/paysbuy.rb +71 -0
- data/lib/offsite_payments/integrations/payu_in.rb +266 -0
- data/lib/offsite_payments/integrations/payu_in_paisa.rb +46 -0
- data/lib/offsite_payments/integrations/platron.rb +153 -0
- data/lib/offsite_payments/integrations/pxpay.rb +271 -0
- data/lib/offsite_payments/integrations/quickpay.rb +232 -0
- data/lib/offsite_payments/integrations/rbkmoney.rb +110 -0
- data/lib/offsite_payments/integrations/robokassa.rb +154 -0
- data/lib/offsite_payments/integrations/sage_pay_form.rb +425 -0
- data/lib/offsite_payments/integrations/two_checkout.rb +332 -0
- data/lib/offsite_payments/integrations/universal.rb +180 -0
- data/lib/offsite_payments/integrations/valitor.rb +200 -0
- data/lib/offsite_payments/integrations/verkkomaksut.rb +143 -0
- data/lib/offsite_payments/integrations/web_pay.rb +186 -0
- data/lib/offsite_payments/integrations/webmoney.rb +119 -0
- data/lib/offsite_payments/integrations/wirecard_checkout_page.rb +359 -0
- data/lib/offsite_payments/integrations/world_pay.rb +273 -0
- data/lib/offsite_payments/notification.rb +71 -0
- data/lib/offsite_payments/return.rb +37 -0
- data/lib/offsite_payments/version.rb +3 -0
- metadata +270 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
module OffsitePayments
|
2
|
+
module Integrations
|
3
|
+
module PaypalPaymentsAdvanced
|
4
|
+
mattr_accessor :service_url
|
5
|
+
self.service_url = 'https://payflowlink.paypal.com'
|
6
|
+
|
7
|
+
def self.notification(post, options = {})
|
8
|
+
PayflowLink::Notification.new(post)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.return(query_string, options = {})
|
12
|
+
Return.new(query_string)
|
13
|
+
end
|
14
|
+
|
15
|
+
class Helper < PayflowLink::Helper
|
16
|
+
def initialize(order, account, options)
|
17
|
+
super
|
18
|
+
add_field('partner', 'PayPal')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module OffsitePayments #:nodoc:
|
2
|
+
module Integrations #:nodoc:
|
3
|
+
module Paysbuy
|
4
|
+
mattr_accessor :test_url
|
5
|
+
self.test_url = 'https://demo.paysbuy.com/paynow.aspx'
|
6
|
+
|
7
|
+
mattr_accessor :production_url
|
8
|
+
self.production_url = 'https://www.paysbuy.com/paynow.aspx'
|
9
|
+
|
10
|
+
def self.service_url
|
11
|
+
mode = OffsitePayments.mode
|
12
|
+
case mode
|
13
|
+
when :production
|
14
|
+
self.production_url
|
15
|
+
when :test
|
16
|
+
self.test_url
|
17
|
+
else
|
18
|
+
raise StandardError, "Integration mode set to an invalid value: #{mode}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.helper(order, account, options = {})
|
23
|
+
Helper.new(order, account, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.notification(query_string, options = {})
|
27
|
+
Notification.new(query_string, options)
|
28
|
+
end
|
29
|
+
|
30
|
+
class Helper < OffsitePayments::Helper
|
31
|
+
mapping :account, 'biz'
|
32
|
+
mapping :amount, 'amt'
|
33
|
+
mapping :order, 'inv'
|
34
|
+
mapping :description, 'itm'
|
35
|
+
mapping :notify_url, 'postURL'
|
36
|
+
end
|
37
|
+
|
38
|
+
class Notification < OffsitePayments::Notification
|
39
|
+
SUCCESS = '00'
|
40
|
+
FAIL = '99'
|
41
|
+
PENDING = '02'
|
42
|
+
|
43
|
+
def complete?
|
44
|
+
status == 'Completed'
|
45
|
+
end
|
46
|
+
|
47
|
+
def item_id
|
48
|
+
params['result'][2..-1]
|
49
|
+
end
|
50
|
+
|
51
|
+
def status
|
52
|
+
status_code = params['result'][0..1]
|
53
|
+
case status_code
|
54
|
+
when SUCCESS
|
55
|
+
'Completed'
|
56
|
+
when FAIL
|
57
|
+
'Failed'
|
58
|
+
when PENDING
|
59
|
+
'Pending'
|
60
|
+
else
|
61
|
+
raise "Unknown status code"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def acknowledge(authcode = nil)
|
66
|
+
true
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,266 @@
|
|
1
|
+
module OffsitePayments #:nodoc:
|
2
|
+
module Integrations #:nodoc:
|
3
|
+
module PayuIn
|
4
|
+
mattr_accessor :test_url
|
5
|
+
mattr_accessor :production_url
|
6
|
+
|
7
|
+
self.test_url = 'https://test.payu.in/_payment.php'
|
8
|
+
self.production_url = 'https://secure.payu.in/_payment.php'
|
9
|
+
|
10
|
+
def self.service_url
|
11
|
+
OffsitePayments.mode == :production ? self.production_url : self.test_url
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.notification(post, options = {})
|
15
|
+
Notification.new(post, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.return(post, options = {})
|
19
|
+
Return.new(post, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.checksum(merchant_id, secret_key, payload_items )
|
23
|
+
Digest::SHA512.hexdigest([merchant_id, *payload_items, secret_key].join("|"))
|
24
|
+
end
|
25
|
+
|
26
|
+
class Helper < OffsitePayments::Helper
|
27
|
+
|
28
|
+
CHECKSUM_FIELDS = [ 'txnid', 'amount', 'productinfo', 'firstname', 'email', 'udf1', 'udf2', 'udf3', 'udf4',
|
29
|
+
'udf5', 'udf6', 'udf7', 'udf8', 'udf9', 'udf10']
|
30
|
+
|
31
|
+
mapping :amount, 'amount'
|
32
|
+
mapping :account, 'key'
|
33
|
+
mapping :order, 'txnid'
|
34
|
+
mapping :description, 'productinfo'
|
35
|
+
|
36
|
+
mapping :customer, :first_name => 'firstname',
|
37
|
+
:last_name => 'lastname',
|
38
|
+
:email => 'email',
|
39
|
+
:phone => 'phone'
|
40
|
+
|
41
|
+
mapping :billing_address, :city => 'city',
|
42
|
+
:address1 => 'address1',
|
43
|
+
:address2 => 'address2',
|
44
|
+
:state => 'state',
|
45
|
+
:zip => 'zip',
|
46
|
+
:country => 'country'
|
47
|
+
|
48
|
+
# Which tab you want to be open default on PayU
|
49
|
+
# CC (CreditCard) or NB (NetBanking)
|
50
|
+
mapping :mode, 'pg'
|
51
|
+
|
52
|
+
mapping :notify_url, 'notify_url'
|
53
|
+
mapping :return_url, ['surl', 'furl']
|
54
|
+
mapping :cancel_return_url, 'curl'
|
55
|
+
mapping :checksum, 'hash'
|
56
|
+
|
57
|
+
mapping :user_defined, { :var1 => 'udf1',
|
58
|
+
:var2 => 'udf2',
|
59
|
+
:var3 => 'udf3',
|
60
|
+
:var4 => 'udf4',
|
61
|
+
:var5 => 'udf5',
|
62
|
+
:var6 => 'udf6',
|
63
|
+
:var7 => 'udf7',
|
64
|
+
:var8 => 'udf8',
|
65
|
+
:var9 => 'udf9',
|
66
|
+
:var10 => 'udf10'
|
67
|
+
}
|
68
|
+
|
69
|
+
def initialize(order, account, options = {})
|
70
|
+
super
|
71
|
+
@options = options
|
72
|
+
self.pg = 'CC'
|
73
|
+
end
|
74
|
+
|
75
|
+
def form_fields
|
76
|
+
sanitize_fields
|
77
|
+
@fields.merge(mappings[:checksum] => generate_checksum)
|
78
|
+
end
|
79
|
+
|
80
|
+
def generate_checksum
|
81
|
+
checksum_payload_items = CHECKSUM_FIELDS.map { |field| @fields[field] }
|
82
|
+
|
83
|
+
PayuIn.checksum(@fields["key"], @options[:credential2], checksum_payload_items )
|
84
|
+
end
|
85
|
+
|
86
|
+
def sanitize_fields
|
87
|
+
['address1', 'address2', 'city', 'state', 'country', 'productinfo', 'email', 'phone'].each do |field|
|
88
|
+
@fields[field].gsub!(/[^a-zA-Z0-9\-_@\/\s.]/, '') if @fields[field]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
class Notification < OffsitePayments::Notification
|
95
|
+
def initialize(post, options = {})
|
96
|
+
super(post, options)
|
97
|
+
@merchant_id = options[:credential1]
|
98
|
+
@secret_key = options[:credential2]
|
99
|
+
end
|
100
|
+
|
101
|
+
def complete?
|
102
|
+
status == "Completed"
|
103
|
+
end
|
104
|
+
|
105
|
+
def status
|
106
|
+
case transaction_status.downcase
|
107
|
+
when 'success' then 'Completed'
|
108
|
+
when 'failure' then 'Failed'
|
109
|
+
when 'pending' then 'Pending'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def invoice_ok?( order_id )
|
114
|
+
order_id.to_s == invoice.to_s
|
115
|
+
end
|
116
|
+
|
117
|
+
# Order amount should be equal to gross - discount
|
118
|
+
def amount_ok?( order_amount, order_discount = BigDecimal.new( '0.0' ) )
|
119
|
+
BigDecimal.new( gross ) == order_amount && BigDecimal.new( discount.to_s ) == order_discount
|
120
|
+
end
|
121
|
+
|
122
|
+
# Status of transaction return from the PayU. List of possible values:
|
123
|
+
# <tt>SUCCESS</tt>::
|
124
|
+
# <tt>PENDING</tt>::
|
125
|
+
# <tt>FAILURE</tt>::
|
126
|
+
def transaction_status
|
127
|
+
params['status']
|
128
|
+
end
|
129
|
+
|
130
|
+
# ID of this transaction (PayU.in number)
|
131
|
+
def transaction_id
|
132
|
+
params['mihpayid']
|
133
|
+
end
|
134
|
+
|
135
|
+
# Mode of Payment
|
136
|
+
#
|
137
|
+
# 'CC' for credit-card
|
138
|
+
# 'NB' for net-banking
|
139
|
+
# 'CD' for cheque or DD
|
140
|
+
# 'CO' for Cash Pickup
|
141
|
+
def type
|
142
|
+
params['mode']
|
143
|
+
end
|
144
|
+
|
145
|
+
# What currency have we been dealing with
|
146
|
+
def currency
|
147
|
+
'INR'
|
148
|
+
end
|
149
|
+
|
150
|
+
def item_id
|
151
|
+
params['txnid']
|
152
|
+
end
|
153
|
+
|
154
|
+
# This is the invoice which you passed to PayU.in
|
155
|
+
def invoice
|
156
|
+
params['txnid']
|
157
|
+
end
|
158
|
+
|
159
|
+
# Merchant Id provided by the PayU.in
|
160
|
+
def account
|
161
|
+
params['key']
|
162
|
+
end
|
163
|
+
|
164
|
+
# original amount send by merchant
|
165
|
+
def gross
|
166
|
+
params['amount']
|
167
|
+
end
|
168
|
+
|
169
|
+
# This is discount given to user - based on promotion set by merchants.
|
170
|
+
def discount
|
171
|
+
params['discount']
|
172
|
+
end
|
173
|
+
|
174
|
+
# Description offer for what PayU given the offer to user - based on promotion set by merchants.
|
175
|
+
def offer_description
|
176
|
+
params['offer']
|
177
|
+
end
|
178
|
+
|
179
|
+
# Information about the product as send by merchant
|
180
|
+
def product_info
|
181
|
+
params['productinfo']
|
182
|
+
end
|
183
|
+
|
184
|
+
# Email of the customer
|
185
|
+
def customer_email
|
186
|
+
params['email']
|
187
|
+
end
|
188
|
+
|
189
|
+
# Phone of the customer
|
190
|
+
def customer_phone
|
191
|
+
params['phone']
|
192
|
+
end
|
193
|
+
|
194
|
+
# Firstname of the customer
|
195
|
+
def customer_first_name
|
196
|
+
params['firstname']
|
197
|
+
end
|
198
|
+
|
199
|
+
# Lastname of the customer
|
200
|
+
def customer_last_name
|
201
|
+
params['lastname']
|
202
|
+
end
|
203
|
+
|
204
|
+
# Full address of the customer
|
205
|
+
def customer_address
|
206
|
+
{ :address1 => params['address1'], :address2 => params['address2'],
|
207
|
+
:city => params['city'], :state => params['state'],
|
208
|
+
:country => params['country'], :zipcode => params['zipcode'] }
|
209
|
+
end
|
210
|
+
|
211
|
+
def user_defined
|
212
|
+
@user_defined ||= 10.times.map { |i| params["udf#{i + 1}"] }
|
213
|
+
end
|
214
|
+
|
215
|
+
def checksum
|
216
|
+
params['hash']
|
217
|
+
end
|
218
|
+
|
219
|
+
def message
|
220
|
+
@message || params['error']
|
221
|
+
end
|
222
|
+
|
223
|
+
def acknowledge(authcode = nil)
|
224
|
+
checksum_ok?
|
225
|
+
end
|
226
|
+
|
227
|
+
def checksum_ok?
|
228
|
+
checksum_fields = [transaction_status, *user_defined.reverse, customer_email, customer_first_name, product_info, gross, invoice]
|
229
|
+
|
230
|
+
unless Digest::SHA512.hexdigest([@secret_key, *checksum_fields, @merchant_id].join("|")) == checksum
|
231
|
+
@message = 'Return checksum not matching the data provided'
|
232
|
+
return false
|
233
|
+
end
|
234
|
+
true
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
class Return < OffsitePayments::Return
|
239
|
+
def initialize(query_string, options = {})
|
240
|
+
super
|
241
|
+
@notification = Notification.new(query_string, options)
|
242
|
+
end
|
243
|
+
|
244
|
+
def transaction_id
|
245
|
+
@notification.transaction_id
|
246
|
+
end
|
247
|
+
|
248
|
+
def status( order_id, order_amount )
|
249
|
+
if @notification.invoice_ok?( order_id ) && @notification.amount_ok?( BigDecimal.new(order_amount) )
|
250
|
+
@notification.status
|
251
|
+
else
|
252
|
+
'Mismatch'
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
def success?
|
257
|
+
status( @params['txnid'], @params['amount'] ) == 'Completed'
|
258
|
+
end
|
259
|
+
|
260
|
+
def message
|
261
|
+
@notification.message
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module OffsitePayments
|
2
|
+
module Integrations
|
3
|
+
module PayuInPaisa
|
4
|
+
mattr_accessor :test_url
|
5
|
+
mattr_accessor :production_url
|
6
|
+
|
7
|
+
self.test_url = 'https://test.payu.in/_payment.php'
|
8
|
+
self.production_url = 'https://secure.payu.in/_payment.php'
|
9
|
+
|
10
|
+
def self.service_url
|
11
|
+
OffsitePayments.mode == :production ? self.production_url : self.test_url
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.notification(post, options = {})
|
15
|
+
Notification.new(post, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.return(post, options = {})
|
19
|
+
Return.new(post, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
class Helper < PayuIn::Helper
|
23
|
+
mapping :service_provider, 'service_provider'
|
24
|
+
|
25
|
+
def initialize(order, account, options = {})
|
26
|
+
super
|
27
|
+
self.service_provider = 'payu_paisa'
|
28
|
+
self.user_defined = { :var2 => order }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Notification < PayuIn::Notification
|
33
|
+
def item_id
|
34
|
+
params['udf2']
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Return < PayuIn::Return
|
39
|
+
def initialize(query_string, options = {})
|
40
|
+
super
|
41
|
+
@notification = Notification.new(query_string, options)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'builder'
|
2
|
+
|
3
|
+
module OffsitePayments #:nodoc:
|
4
|
+
module Integrations #:nodoc:
|
5
|
+
# Platron API: www.platron.ru/PlatronAPI.pdf
|
6
|
+
module Platron
|
7
|
+
mattr_accessor :service_url
|
8
|
+
self.service_url = 'https://www.platron.ru/payment.php'
|
9
|
+
|
10
|
+
def self.notification(raw_post)
|
11
|
+
Notification.new(raw_post)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.generate_signature_string(params, path, secret)
|
15
|
+
sorted_params = params.sort_by{|k,v| k.to_s}.collect{|k,v| v}
|
16
|
+
[path, sorted_params, secret].flatten.compact.join(';')
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.generate_signature(params, path, secret)
|
20
|
+
Digest::MD5.hexdigest(generate_signature_string(params, path, secret))
|
21
|
+
end
|
22
|
+
|
23
|
+
class Helper < OffsitePayments::Helper
|
24
|
+
def initialize(order, account, options = {})
|
25
|
+
@secret_key = options.delete(:secret)
|
26
|
+
@path = options.delete(:path)
|
27
|
+
description = options.delete(:description)
|
28
|
+
super
|
29
|
+
self.add_field('pg_salt', rand(36**15).to_s(36))
|
30
|
+
self.add_field('pg_description', description)
|
31
|
+
end
|
32
|
+
|
33
|
+
def form_fields
|
34
|
+
@fields.merge('pg_sig' => Common.generate_signature(@fields, @path, @secret_key))
|
35
|
+
end
|
36
|
+
|
37
|
+
def params
|
38
|
+
@fields
|
39
|
+
end
|
40
|
+
|
41
|
+
mapping :account, 'pg_merchant_id'
|
42
|
+
mapping :amount, 'pg_amount'
|
43
|
+
mapping :order, 'pg_order_id'
|
44
|
+
mapping :description, 'pg_description'
|
45
|
+
mapping :currency, 'pg_currency'
|
46
|
+
end
|
47
|
+
|
48
|
+
class Notification < OffsitePayments::Notification
|
49
|
+
def initialize(*args)
|
50
|
+
super
|
51
|
+
@signature = params.delete('pg_sig')
|
52
|
+
end
|
53
|
+
|
54
|
+
def complete?
|
55
|
+
params['pg_result']
|
56
|
+
end
|
57
|
+
|
58
|
+
def order_id
|
59
|
+
params['pg_order_id']
|
60
|
+
end
|
61
|
+
|
62
|
+
def platron_payment_id
|
63
|
+
params['pg_payment_id']
|
64
|
+
end
|
65
|
+
|
66
|
+
def currency
|
67
|
+
params['pg_ps_currency']
|
68
|
+
end
|
69
|
+
|
70
|
+
def payment_system
|
71
|
+
params['pg_payment_system']
|
72
|
+
end
|
73
|
+
|
74
|
+
def user_phone
|
75
|
+
params['pg_user_phone']
|
76
|
+
end
|
77
|
+
|
78
|
+
def card_brand
|
79
|
+
params['pg_card_brand']
|
80
|
+
end
|
81
|
+
|
82
|
+
def captured
|
83
|
+
params['pg_captured']
|
84
|
+
end
|
85
|
+
|
86
|
+
def overpayment
|
87
|
+
params['pg_overpayment']
|
88
|
+
end
|
89
|
+
|
90
|
+
def failure_code
|
91
|
+
params['pg_failure_code']
|
92
|
+
end
|
93
|
+
|
94
|
+
def failure_description
|
95
|
+
params['pg_failure_description']
|
96
|
+
end
|
97
|
+
|
98
|
+
def payment_date
|
99
|
+
params['pg_payment_date']
|
100
|
+
end
|
101
|
+
|
102
|
+
def salt
|
103
|
+
params['pg_salt']
|
104
|
+
end
|
105
|
+
|
106
|
+
def signature
|
107
|
+
@signature
|
108
|
+
end
|
109
|
+
|
110
|
+
def net_amount
|
111
|
+
params['pg_net_amount']
|
112
|
+
end
|
113
|
+
|
114
|
+
def ps_amount
|
115
|
+
params['pg_ps_amount']
|
116
|
+
end
|
117
|
+
|
118
|
+
def ps_full_amount
|
119
|
+
params['pg_ps_full_amount']
|
120
|
+
end
|
121
|
+
|
122
|
+
def amount
|
123
|
+
params['pg_amount']
|
124
|
+
end
|
125
|
+
|
126
|
+
def secret
|
127
|
+
@options[:secret]
|
128
|
+
end
|
129
|
+
|
130
|
+
def path
|
131
|
+
@options[:path]
|
132
|
+
end
|
133
|
+
|
134
|
+
def acknowledge(authcode = nil)
|
135
|
+
signature == Platron.generate_signature(params, path, secret)
|
136
|
+
end
|
137
|
+
|
138
|
+
def success_response(path,secret)
|
139
|
+
salt = rand(36**15).to_s(36)
|
140
|
+
xml = ""
|
141
|
+
doc = Builder::XmlMarkup.new(:target => xml)
|
142
|
+
sign = Platron.generate_signature({:pg_status => 'ok', :pg_salt => salt}, path, secret)
|
143
|
+
doc.response do
|
144
|
+
doc.pg_status 'ok'
|
145
|
+
doc.pg_salt salt
|
146
|
+
doc.pg_sig sign
|
147
|
+
end
|
148
|
+
xml
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|