gp_webpay 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d9393b12417c6b8c3c33bde1c03741e07b8ddf19
4
- data.tar.gz: 62bf128bdd80b90297a68116a4ad7ed86cf3845d
3
+ metadata.gz: 3704468b1cb10f523a0c2de0d9215c6f84fa96fe
4
+ data.tar.gz: 0cef9ec7cb18b482bb5d73c7b8e1b1d468ee42cf
5
5
  SHA512:
6
- metadata.gz: d4591ae7e2150fcf4a4cc2d690090ce423ac4539802a0cafe646c4701fb035e87a666c8f62857d717f49220affbb0774fb44eaa0ff58461218ecb71c1a73b0ef
7
- data.tar.gz: 7deb8f6cf25c03badcef130d6186a54e04d6c0d6ea3c201392b3cc57d726179858df52fcbb5f25f0c50c64663a00c62ec6197cf77659216e0c2f01cdf074d728
6
+ metadata.gz: c0705d32a614169b52e050ed8d5c95467bc65ef368d27a9208eb697e36c53e8e6157831d583a10f2e6d4c979b81df8b612941946e728ae3bd071ec89cfb61280
7
+ data.tar.gz: 9999ec362e1348afd389dd48f80c9eb57a8089de7cd15fdd18332926904ef9e4caa6c38084cb8055d354283ffc998b2457c87aeed6b6e15d1320f43fe59a699b
data/README.md CHANGED
@@ -18,8 +18,13 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
+ Generate own certificate, put into your repository.
22
+
23
+ ### Initialize
24
+
25
+ config/initializers/gp_webpay.rb
26
+
21
27
  ```ruby
22
- # Configures global settings for Kaminari
23
28
  GpWebpay.configure do |config|
24
29
  config.merchant_number = ##########
25
30
  config.pem_path = 'my_cert.pem'
@@ -27,7 +32,36 @@ GpWebpay.configure do |config|
27
32
  end
28
33
  ```
29
34
 
30
- TODO: Write usage instructions here
35
+ ### Payment
36
+
37
+ ```ruby
38
+ class Payment
39
+ include GpWebpay::Payment
40
+
41
+ def order_number
42
+ id
43
+ end
44
+
45
+ def amount_in_cents
46
+ 100
47
+ end
48
+
49
+ def currency
50
+ 840 # USD
51
+ end
52
+ end
53
+ ```
54
+
55
+ ### Controller
56
+ ```ruby
57
+ class OrdersController
58
+ def create
59
+ ...
60
+ payment = Payment.create
61
+ redirect_to payment.pay_url(redirect_url: 'http://app/callback')
62
+ end
63
+ end
64
+ ```
31
65
 
32
66
  ## Development
33
67
 
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
2
3
 
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.pattern = "test/*_test.rb"
7
+ end
8
+
9
+ desc "Run tests"
10
+ task :default => :test
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDLzCCAhegAwIBAgIBAjANBgkqhkiG9w0BAQUFADBNMRgwFgYDVQQDEw9NZXNz
3
+ YWdlIFNpZ25pbmcxEDAOBgNVBAsTB1BheU1VWk8xEjAQBgNVBAoTCU1VWk8sYS5z
4
+ LjELMAkGA1UEBhMCQ1owHhcNMDQwNjExMTAyMzU5WhcNMTQwNzI5MTAyMzU5WjBN
5
+ MRgwFgYDVQQDEw9NZXNzYWdlIFNpZ25pbmcxEDAOBgNVBAsTB1BheU1VWk8xEjAQ
6
+ BgNVBAoTCU1VWk8sYS5zLjELMAkGA1UEBhMCQ1owggEiMA0GCSqGSIb3DQEBAQUA
7
+ A4IBDwAwggEKAoIBAQDimVN4A77p26u2yx6x+gC9nQ4bVqEuTk6Qj18EKPftws2W
8
+ hZavsQIZPK6Xq3mVkM5teTdn0To1EA2jr5gySkTeBPWEKTn3pqrcx1hgri/J9MnX
9
+ v+csD5ThAgW/IZKpfETxZqzF+1biX1/4tjWDOFi7VPrl1E+M5BTd8CSZn6ixfSDr
10
+ m2YLPIz5UbWk5GmqYH9u7kXLXx4oEhiWZkPVpjVoFm4b36Dof2UBXOECjRb1brmc
11
+ hTa1mfsvb8e0PbtxkRZUsf+/K3IG12E01qSdDIynBfK/dYpOq23tb0mREwpj/Ntr
12
+ foOX4YWjkF/PQjEA2Yl8FhVpYK2efvGJUGhv/gx1AgMBAAGjGjAYMAkGA1UdEwQC
13
+ MAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQARcUvHXzYh0J3kI8ii
14
+ v5zNltb0EPBNW5CC6nc3OicwsHkQUo6/KnueIXjnICG8RD3jAc3c2QIz8//Z2YrE
15
+ xjEQY3l6IM1NSjmFLq8xEkaFcgOcU/Wv372AtjrFuJeB2NXxxaJuWzPqcmZuDyX2
16
+ tP8lSqEhO+EKK/vgec3RiBvKiN/uDurj7EmVClux1nYVXS85BmuEx5p1IM04KyJd
17
+ 3lSle9jyjQI62ELorkMM7UVHv2nWQ076u+0piIHuvxRIwUM3IEPCLZ71Ss7yPxoK
18
+ YKBip/BA8mF4shRjXE+uYcLPMgF0tKBn1obIwSS718x2ykAWcTzVWczlupi8ornT
19
+ c1yE
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBSMR0wGwYDVQQDExRUZXN0
3
+ IE1lc3NhZ2UgU2lnbmluZzEQMA4GA1UECxMHUGF5TVVaTzESMBAGA1UEChMJTVVa
4
+ TyxhLnMuMQswCQYDVQQGEwJDWjAeFw0wNDA2MTExMDIxMTJaFw0xNDA3MjkxMDIx
5
+ MTJaMFIxHTAbBgNVBAMTFFRlc3QgTWVzc2FnZSBTaWduaW5nMRAwDgYDVQQLEwdQ
6
+ YXlNVVpPMRIwEAYDVQQKEwlNVVpPLGEucy4xCzAJBgNVBAYTAkNaMIIBIjANBgkq
7
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAukooJBqkgau4pjhxkDC35hDl0SHOn3Bo
8
+ nEU1ldz/l6886nJhypHNkLSHgBJRvhbLz/QdOD3mZShrupcxNRKTcA1oLzWWWOeL
9
+ lgmK0cSM5Xchy/vE6LVbij4+wKtujfPZWg4XIdJFpb4VBTj0mx3NX5nKshu2A987
10
+ uIZGYB6YapS3NGWPSJL5VPwdv5PRqV4U0v4/DuQl01A9v8fuqr3bs+AsqUXzWfLA
11
+ LHLnxxoCzaEzUC+EV2b7jcNyngjv9vDhOeGsxrojQA73w2Lf16BuaSQrlIUWDt4B
12
+ AhIc+L8ZM8pKGXtbwXP1NwBtxQ2FvtAqfHqwHdw4yrb/V2Q/QMaB8wIDAQABoxow
13
+ GDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEArLoK
14
+ QdCHoIEFdp2HLQOmyp/086NAB6jlh+/xwTpYeQcymKP0krO65N36WKEiA34N/zfn
15
+ 4pJRt6dk8PkWWs7f8C3twSwoP/gd9UC0u0EDIR2i0wxejfVmSDmn80uUOOWR4M9j
16
+ xsz5ik5nro7QR+oZuG4lHSGbKjtt4Gf5js1hjqX/NPXNUMnqhYrua+jsd/KdVpuo
17
+ 4emFhl7dd5eF7LvMLiS6r/tDOOQBtQ50Y3NDhFVQVXiSeQimsuv+tplFBf3/p31u
18
+ edm6ZG7g9Ws8a/Nl3tFkJ4CnnRwrkHMZHG95MlqM9twotEIXZ3tIs2k3ZUj99/M/
19
+ AhtX+V3MIyAWh2Dsow==
20
+ -----END CERTIFICATE-----
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.8"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "minitest", "~> 5.6.0"
26
+
25
27
  end
@@ -1,4 +1,5 @@
1
1
  require "gp_webpay/config"
2
+ require "gp_webpay/payment_attributes"
2
3
  require "gp_webpay/payment"
3
4
  require "gp_webpay/version"
4
5
 
@@ -21,19 +21,30 @@ module GpWebpay
21
21
  config_accessor :merchant_pem_path
22
22
  config_accessor :merchant_password
23
23
  config_accessor :gpe_pem_path
24
+ config_accessor :environment
24
25
 
25
26
  def param_name
26
27
  config.param_name.respond_to?(:call) ? config.param_name.call : config.param_name
27
28
  end
28
29
 
29
30
  def pay_url
30
- if Rails.env.production?
31
+ if production?
31
32
  'https://3dsecure.gpwebpay.com/kb/order.do'
32
33
  else
33
34
  'https://test.3dsecure.gpwebpay.com/kb/order.do'
34
35
  end
35
36
  end
36
37
 
38
+ def gpe_pem_path
39
+ file_name = production? ? 'muzo.signing_prod.pem' : 'muzo.signing_test.pem'
40
+
41
+ File.expand_path("../../../certs/#{file_name}", __FILE__)
42
+ end
43
+
44
+ def production?
45
+ config.environment == 'production'
46
+ end
47
+
37
48
  # define param_name writer (copied from AS::Configurable)
38
49
  writer, line = 'def param_name=(value); config.param_name = value; end', __LINE__
39
50
  singleton_class.class_eval writer, __FILE__, line
@@ -42,9 +53,9 @@ module GpWebpay
42
53
 
43
54
  # this is ugly. why can't we pass the default value to config_accessor...?
44
55
  configure do |config|
45
- config.merchant_number = nil
46
- config.merchant_pem_path = nil
47
- config.merchant_password = nil
48
- config.gpe_pem_path = 'certs/muzo.signing_test.pem'
56
+ config.merchant_number = nil
57
+ config.merchant_pem_path = nil
58
+ config.merchant_password = nil
59
+ config.environment = defined?(Rails) && Rails.env || 'test'
49
60
  end
50
61
  end
@@ -4,6 +4,16 @@ module GpWebpay
4
4
 
5
5
  included do
6
6
  attr_accessor :redirect_url
7
+
8
+ delegate :merchant_number, to: :config
9
+ end
10
+
11
+ def deposit_flag
12
+ 1
13
+ end
14
+
15
+ def operation
16
+ 'CREATE_ORDER'
7
17
  end
8
18
 
9
19
  def pay_url(options = {})
@@ -19,18 +29,6 @@ module GpWebpay
19
29
 
20
30
  private
21
31
 
22
- def order_number
23
- raise NotImplementedError
24
- end
25
-
26
- def payment_amount_in_cents
27
- raise NotImplementedError
28
- end
29
-
30
- def payment_currency
31
- raise NotImplementedError
32
- end
33
-
34
32
  def config
35
33
  GpWebpay.config
36
34
  end
@@ -54,15 +52,7 @@ module GpWebpay
54
52
  end
55
53
 
56
54
  def payment_attributes
57
- {
58
- 'MERCHANTNUMBER' => config.merchant_number,
59
- 'OPERATION' => 'CREATE_ORDER',
60
- 'ORDERNUMBER' => order_number,
61
- 'AMOUNT' => payment_amount_in_cents,
62
- 'CURRENCY' => payment_currency,
63
- 'DEPOSITFLAG' => 1,
64
- 'URL' => redirect_url
65
- }
55
+ @payment_attributes ||= PaymentAttributes.new(self).to_h
66
56
  end
67
57
 
68
58
  def payment_attributes_with_digest
@@ -0,0 +1,37 @@
1
+ module GpWebpay
2
+ class PaymentAttributes
3
+
4
+ KEYS = %w(MERCHANTNUMBER OPERATION ORDERNUMBER AMOUNT CURRENCY DEPOSITFLAG
5
+ MERORDERNUM URL DESCRIPTION MD)
6
+
7
+ OPTIONAL_KEYS = %w(MERORDERNUM DESCRIPTION MD)
8
+
9
+ TRANSITIONS = {
10
+ 'MERCHANTNUMBER' => :merchant_number,
11
+ 'ORDERNUMBER' => :order_number,
12
+ 'AMOUNT' => :amount_in_cents,
13
+ 'DEPOSITFLAG' => :deposit_flag,
14
+ 'MERORDERNUM' => :merchant_order_number,
15
+ 'URL' => :redirect_url,
16
+ 'MD' => :merchant_description
17
+ }
18
+
19
+ def initialize(payment)
20
+ @payment = payment
21
+ end
22
+
23
+ def to_h
24
+ KEYS.each_with_object({}) do |key, hash|
25
+ method = TRANSITIONS[key] || key.downcase.to_sym
26
+
27
+ if @payment.respond_to?(method)
28
+ hash[key] = @payment.public_send(method)
29
+ elsif !OPTIONAL_KEYS.include?(key)
30
+ method_missing(method)
31
+ end
32
+
33
+ hash
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,3 +1,3 @@
1
1
  module GpWebpay
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gp_webpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Magnusek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-29 00:00:00.000000000 Z
11
+ date: 2015-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 5.6.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 5.6.0
55
69
  description:
56
70
  email:
57
71
  - magnusekm@gmail.com
@@ -67,10 +81,13 @@ files:
67
81
  - Rakefile
68
82
  - bin/console
69
83
  - bin/setup
84
+ - certs/muzo.signing_prod.pem
85
+ - certs/muzo.signing_test.pem
70
86
  - gp_webpay.gemspec
71
87
  - lib/gp_webpay.rb
72
88
  - lib/gp_webpay/config.rb
73
89
  - lib/gp_webpay/payment.rb
90
+ - lib/gp_webpay/payment_attributes.rb
74
91
  - lib/gp_webpay/version.rb
75
92
  homepage: https://github.com/blueberryapps/gp_webpay
76
93
  licenses: