offsite_payments 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|