opay 1.2.0 → 1.2.1
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/README.md +23 -2
- data/app/controllers/opay/paypal_controller.rb +9 -4
- data/config/routes.rb +2 -2
- data/lib/generators/opay/templates/opay_config.rb +3 -0
- data/lib/opay/configuration.rb +5 -2
- data/lib/opay/helpers/form_helper.rb +19 -2
- data/lib/opay/helpers/paypal_helper.rb +3 -1
- data/lib/opay/providers/paypal.rb +4 -10
- data/lib/opay/version.rb +1 -1
- data/spec/dummy/config/initializers/opay_config.rb +3 -0
- data/spec/dummy/config/initializers/secret_token.rb +1 -1
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +1465 -0
- data/spec/dummy/log/test.log +6206 -0
- data/spec/fixtures/xml/paypal/payment_created.xml.erb +26 -0
- data/spec/lib/opay/helpers/form_helper_spec.rb +20 -0
- data/spec/lib/opay/helpers/paypal_helper_spec.rb +22 -0
- data/spec/lib/opay/helpers/payu_helper_spec.rb +3 -3
- data/spec/lib/opay/providers/paypal_spec.rb +47 -0
- metadata +10 -4
- data/spec/dummy/tmp/pids/server.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e8f928442b8ec8574bf991b8cb84f432db244dc
|
4
|
+
data.tar.gz: d2e823a50f0fb5bfeb025e85585cfd4c3092528b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bff5fbf5fcbe35af5d6d488a60db457da8ea020b5de434be6baae7254a4e36c5b1c43eea565b96a1a7c175eb6551e51fa58d37b6c46be741e4c8d81d50c2fc91
|
7
|
+
data.tar.gz: 4efcc5b64ec2b30ccac4158eef60cf6c72d2e67bf353a30393359ccb6ecca570c8ad9b335021808770779ee9ff38be7a0f964bbbc916981906b94a2c41e4cfd4
|
data/README.md
CHANGED
@@ -2,7 +2,11 @@
|
|
2
2
|
|
3
3
|
# Opay
|
4
4
|
|
5
|
-
Opay is a
|
5
|
+
Opay is a payment solution for Rails apps.
|
6
|
+
|
7
|
+
Currently supported engines:
|
8
|
+
* payu
|
9
|
+
* paypal express payment
|
6
10
|
|
7
11
|
## Installation
|
8
12
|
|
@@ -28,6 +32,9 @@ then add the following to your routes.rb file:
|
|
28
32
|
|
29
33
|
``` ruby
|
30
34
|
# config/routes.rb
|
35
|
+
get 'success' => 'controller#success', as: :success_payment
|
36
|
+
get 'cancel' => 'controller#cancel', as: :cancel_payment
|
37
|
+
|
31
38
|
mount Opay::Engine => '/opay'
|
32
39
|
```
|
33
40
|
|
@@ -36,15 +43,29 @@ declare which of your models recive payments
|
|
36
43
|
``` ruby
|
37
44
|
class ModelName < ActiveRecord::Base
|
38
45
|
include Opay::Payable
|
46
|
+
|
47
|
+
after_payment do
|
48
|
+
# optional after payment callback
|
49
|
+
end
|
50
|
+
|
51
|
+
def amount
|
52
|
+
100
|
53
|
+
def
|
39
54
|
end
|
40
55
|
```
|
41
56
|
|
42
57
|
create payment form
|
43
58
|
|
44
59
|
``` haml
|
45
|
-
= opay_form_for(@model_name) do |f|
|
60
|
+
= opay_form_for(@model_name, provider: :payu) do |f|
|
46
61
|
= f.payment_info first_name: 'Jan', last_name: 'Kowalski', email: 'kowalski@gmail.com', desc: 'Payment description'
|
47
62
|
= f.submit 'pay with payu'
|
48
63
|
```
|
49
64
|
|
65
|
+
``` haml
|
66
|
+
= opay_form_for(@model_name, provider: :paypal) do |f|
|
67
|
+
= f.payment_info desc: 'Test payment', client_ip: '127.0.0.1'
|
68
|
+
= f.submit 'pay with payu'
|
69
|
+
```
|
70
|
+
|
50
71
|
set up online url in payu.pl to: `/opay/payu/online`
|
@@ -4,15 +4,20 @@ module Opay
|
|
4
4
|
class PaypalController < ApplicationController
|
5
5
|
def new
|
6
6
|
unless Opay.config.process_payments_localy
|
7
|
-
redirect_to Providers::Paypal.create_payment(
|
7
|
+
redirect_to Providers::Paypal.create_payment(
|
8
|
+
params[:session_id],
|
9
|
+
params[:desc],
|
10
|
+
params[:client_ip],
|
11
|
+
params[:confirm_url],
|
12
|
+
params[:cancel_url],
|
13
|
+
)
|
8
14
|
end
|
9
15
|
end
|
10
16
|
|
11
|
-
def
|
12
|
-
if Providers::Paypal.
|
17
|
+
def confirm
|
18
|
+
if Providers::Paypal.process(params[:token], params[:PayerID], request.remote_ip)
|
13
19
|
redirect_to main_app.root_path, notice: I18n.t('opay.payment.success')
|
14
20
|
end
|
15
|
-
# render text: Providers::Payu.process(params[:pos_id], params[:session_id], params[:ts], params[:sig]) ? 'OK' : ''
|
16
21
|
end
|
17
22
|
end
|
18
23
|
end
|
data/config/routes.rb
CHANGED
@@ -11,8 +11,8 @@ Opay::Engine.routes.draw do
|
|
11
11
|
|
12
12
|
# paypal
|
13
13
|
scope 'paypal' do
|
14
|
-
patch 'new' => 'paypal#new', as: :
|
15
|
-
get '
|
14
|
+
patch 'new' => 'paypal#new', as: :paypal_new_payment
|
15
|
+
get 'confirm' => 'paypal#confirm', as: :paypal_confirm_payment
|
16
16
|
end
|
17
17
|
|
18
18
|
if Opay.config.process_payments_localy
|
@@ -4,6 +4,9 @@ Opay.configure do |config|
|
|
4
4
|
config.test_mode = true
|
5
5
|
# config.process_payments_localy = true if Rails.env.development?
|
6
6
|
|
7
|
+
config.success_url = :success_payment_url
|
8
|
+
config.cancel_url = :cancel_payment_url
|
9
|
+
|
7
10
|
# payu configuration
|
8
11
|
config.payu_pos_id = ENV['PAYU_POS_ID']
|
9
12
|
config.payu_pos_auth_key = ENV['PAYU_POS_AUTH_KEY']
|
data/lib/opay/configuration.rb
CHANGED
@@ -21,8 +21,8 @@ module Opay
|
|
21
21
|
config_accessor :test_mode
|
22
22
|
config_accessor :process_payments_localy
|
23
23
|
|
24
|
-
config_accessor :
|
25
|
-
config_accessor :
|
24
|
+
config_accessor :success_url
|
25
|
+
config_accessor :cancel_url
|
26
26
|
|
27
27
|
reset_config
|
28
28
|
end
|
@@ -38,6 +38,9 @@ module Opay
|
|
38
38
|
configure do |config|
|
39
39
|
config.providers = [:payu, :paypal]
|
40
40
|
|
41
|
+
config.success_url = :success_payment_url
|
42
|
+
config.cancel_url = :cancel_payment_url
|
43
|
+
|
41
44
|
# payu configuration
|
42
45
|
config.payu_pos_id = ENV['PAYU_POS_ID']
|
43
46
|
config.payu_pos_auth_key = ENV['PAYU_POS_AUTH_KEY']
|
@@ -5,11 +5,28 @@ module Opay
|
|
5
5
|
|
6
6
|
def opay_form_for(record, options = {}, &block)
|
7
7
|
# for future purposes
|
8
|
-
|
8
|
+
@payment_provider = options[:provider]
|
9
|
+
|
10
|
+
raise ArgumentError, 'Empty payment provider' if @payment_provider.blank? || Opay.config.providers.include?(@payment_provider) == false
|
11
|
+
|
12
|
+
case @payment_provider
|
13
|
+
when :payu
|
14
|
+
return payu_form_for(record, options, &block)
|
15
|
+
when :paypal
|
16
|
+
return paypal_form_for(record, options, &block)
|
17
|
+
end
|
18
|
+
|
9
19
|
end
|
10
20
|
|
11
21
|
def payment_info(options = {})
|
12
|
-
|
22
|
+
raise ArgumentError, 'Empty payment provider' if @options[:provider].blank? || Opay.config.providers.include?(@options[:provider]) == false
|
23
|
+
|
24
|
+
case @options[:provider]
|
25
|
+
when :payu
|
26
|
+
payu_payment_info(options)
|
27
|
+
when :paypal
|
28
|
+
paypal_payment_info(options)
|
29
|
+
end
|
13
30
|
end
|
14
31
|
|
15
32
|
end
|
@@ -7,13 +7,15 @@ module Opay
|
|
7
7
|
record.prepare_payment
|
8
8
|
|
9
9
|
options[:builder] ||= Opay::FormBuilder
|
10
|
-
options[:url] = opay.
|
10
|
+
options[:url] = opay.paypal_new_payment_path
|
11
11
|
options[:html] = { id: "paypal_payment_form_#{record.id}", class: 'opay-form opay-paypal-form' }
|
12
12
|
|
13
13
|
form_for(record, options, &block)
|
14
14
|
end
|
15
15
|
|
16
16
|
def paypal_payment_info(options = {})
|
17
|
+
options[:confirm_url] ||= @template.opay.paypal_confirm_payment_url
|
18
|
+
options[:cancel_url] ||= @template.main_app.send(Opay.config.cancel_url)
|
17
19
|
options[:session_id] ||= object.payment_session_id
|
18
20
|
options[:amount] ||= object.amount
|
19
21
|
|
@@ -2,20 +2,14 @@ module Opay
|
|
2
2
|
module Providers
|
3
3
|
|
4
4
|
class Paypal
|
5
|
-
|
6
|
-
|
7
|
-
def self.process(pos_id, session_id, ts, sig)
|
8
|
-
return false
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.create_payment(session_id, description, ip)
|
5
|
+
def self.create_payment(session_id, description, ip, confirm_url, cancel_url)
|
12
6
|
# for future items list
|
13
7
|
payment = Opay::Payment.where(session_id: session_id).first!
|
14
8
|
|
15
9
|
response = geteway.setup_purchase(payment.amount.to_i,
|
16
10
|
ip: ip,
|
17
|
-
return_url:
|
18
|
-
cancel_return_url:
|
11
|
+
return_url: confirm_url,
|
12
|
+
cancel_return_url: cancel_url,
|
19
13
|
order_id: session_id,
|
20
14
|
items: [{
|
21
15
|
name: description,
|
@@ -31,7 +25,7 @@ module Opay
|
|
31
25
|
end
|
32
26
|
end
|
33
27
|
|
34
|
-
def self.
|
28
|
+
def self.process(token, payer_id, ip)
|
35
29
|
payment = Opay::Payment.where(session_id: token).first!
|
36
30
|
|
37
31
|
if Opay.config.process_payments_localy
|
data/lib/opay/version.rb
CHANGED
@@ -4,4 +4,4 @@
|
|
4
4
|
# If you change this key, all old signed cookies will become invalid!
|
5
5
|
# Make sure the secret is at least 30 characters and all random,
|
6
6
|
# no regular words or you'll be exposed to dictionary attacks.
|
7
|
-
Dummy::Application.config.
|
7
|
+
Dummy::Application.config.secret_key_base = '208a3c5620024393a948003c0ac3e620bb8c623adc1b6bbe6921584a4c3fd358712c5cea0e56451b71c811dcd3b8fd5bbf5327c062c9b45f5540b897991bd4c2'
|
data/spec/dummy/config/routes.rb
CHANGED
Binary file
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|