newebpay 0.1.0 → 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
  SHA256:
3
- metadata.gz: f3730eac0af30958cd35056dbc7c1a2f4b11e2cf9c5d4dd654ebfff9a6d71880
4
- data.tar.gz: db78aff9e048fe204436b0c426272354dc6c54a55cc03f211cebdff2116bc6e9
3
+ metadata.gz: c6626a7b6e1890e170bf753cb672da37c18cf31f16d242dc50f426a4ee406bff
4
+ data.tar.gz: 223d12185ed1a3f7526fed95f0d881256fcc456698dd322acbed3d05c387c44b
5
5
  SHA512:
6
- metadata.gz: a0978a434968547d8c25e51a7b38a8053e7feb24a5128e94807dd3b8c6d06a7f7e0c3234ad57da5da70b9acd7142554d44481c936da9d1155326e125b93122cc
7
- data.tar.gz: d9ab6de1f4b95ff527be847e6fca79c7fb1f700fa6c2ed9ce81d5ea21924053e07571a4ed2add4d5dba206a0f0f5b70e03cbdcfbc8eb453d03f83ce4f51e82b9
6
+ metadata.gz: a4fc9a75905e1d69c7d8092fc005d18bb60670efb494f5d0e5fc4f9a8125eb2d80a57b4e5a596c1f675a984ea287d8d0828a362ca69697e9bf87b441761cc8ef
7
+ data.tar.gz: 3d89871e1ccb71222c90f45423c8a38d87079e731262c087eb8163d97e3806133aa12eae99710e5942d6f2d5cbf618755c80961e2e143ccec4f7a4718689b124
@@ -3,4 +3,13 @@ language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
5
  - 2.6.6
6
+ - 2.7.0
6
7
  before_install: gem install bundler -v 2.1.4
8
+ before_script:
9
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
+ - chmod +x ./cc-test-reporter
11
+ - ./cc-test-reporter before-build
12
+ script:
13
+ - bundle exec rspec
14
+ after_script:
15
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- newebpay (0.1.0)
4
+ newebpay (0.2.0)
5
5
  offsite_payments (>= 2.7.26)
6
6
 
7
7
  GEM
@@ -38,18 +38,20 @@ GEM
38
38
  concurrent-ruby (1.1.7)
39
39
  crass (1.0.6)
40
40
  diff-lcs (1.4.4)
41
- docile (1.3.3)
41
+ docile (1.3.5)
42
42
  erubi (1.10.0)
43
43
  i18n (1.8.7)
44
44
  concurrent-ruby (~> 1.0)
45
45
  iniparse (1.5.0)
46
- loofah (2.8.0)
46
+ loofah (2.9.0)
47
47
  crass (~> 1.0.2)
48
48
  nokogiri (>= 1.5.9)
49
+ mini_portile2 (2.5.0)
49
50
  minitest (5.14.3)
50
51
  money (6.13.8)
51
52
  i18n (>= 0.6.4, <= 2)
52
- nokogiri (1.11.1-x86_64-darwin)
53
+ nokogiri (1.11.1)
54
+ mini_portile2 (~> 2.5.0)
53
55
  racc (~> 1.4)
54
56
  offsite_payments (2.7.26)
55
57
  actionpack (>= 5.2.3)
@@ -108,7 +110,7 @@ GEM
108
110
  rubocop (~> 1.0)
109
111
  rubocop-ast (>= 1.1.0)
110
112
  ruby-progressbar (1.11.0)
111
- simplecov (0.20.0)
113
+ simplecov (0.21.2)
112
114
  docile (~> 1.1)
113
115
  simplecov-html (~> 0.11)
114
116
  simplecov_json_formatter (~> 0.1)
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  NewebPay
2
2
  ===
3
3
 
4
+ [![Build Status](https://travis-ci.com/elct9620/newebpay-ruby.svg?branch=main)](https://travis-ci.com/elct9620/newebpay-ruby) [![Test Coverage](https://api.codeclimate.com/v1/badges/1a88b3fee47e70bb5d26/test_coverage)](https://codeclimate.com/github/elct9620/newebpay-ruby/test_coverage) [![Maintainability](https://api.codeclimate.com/v1/badges/1a88b3fee47e70bb5d26/maintainability)](https://codeclimate.com/github/elct9620/newebpay-ruby/maintainability)
5
+
4
6
  The [Offsite Payments](https://github.com/activemerchant/offsite_payments) implement for NewebPay(藍新金流)
5
7
 
6
8
  ## Installation
@@ -21,6 +23,33 @@ Or install it yourself as:
21
23
 
22
24
  ## Usage
23
25
 
26
+ ### Configure Newebpay
27
+
28
+ ```ruby
29
+ # config/initializes/newebpay.rb
30
+
31
+ # Set to test mode if under development
32
+ OffsitePayments.mode = :test
33
+
34
+ Newebpay::Config.config do |c|
35
+ c.hash_key = ''
36
+ c.hash_iv = ''
37
+ end
38
+ ```
39
+
40
+ ### Temporary switch config
41
+
42
+ ```ruby
43
+ config = Newebpay::Config.new do |c|
44
+ c.hash_key = 'A' * 32
45
+ c.hash_iv = 'B' * 16
46
+ end
47
+
48
+ Newebpay.use(config) do
49
+ Newebpay::Config.current == config # => true
50
+ end
51
+ ```
52
+
24
53
  ### Create payment button
25
54
 
26
55
  In your controller
@@ -33,9 +62,11 @@ options = {
33
62
  notify_url: newebpay_notify_url
34
63
  }
35
64
 
36
- @helper = OffsitePayments.integration('newebpay').helper(order_id, merchant_id, options)
65
+ @helper = Newebpay.helper(order_id, merchant_id, options)
37
66
  ```
38
67
 
68
+ > The `Newebpay.helper` is an alias to `OffsitePayment::Integrations::Newebpay::Helper.new`
69
+
39
70
  In your view
40
71
 
41
72
  ```erb
@@ -56,7 +87,7 @@ In your view
56
87
  In your controller
57
88
 
58
89
  ```ruby
59
- @return = OffsitePayments.integration('newebpay').return(request.body.read)
90
+ @return = Newebpay.return(request.body.read)
60
91
  @return.trade_info # The decrypted TradeInfo from NewebPay
61
92
  ```
62
93
 
@@ -67,13 +98,17 @@ In your controller
67
98
  In you controller
68
99
 
69
100
  ```ruby
70
- @notification = OffsitePayments.integration('newebpay').notification(request.body.read)
101
+ @notification = Newebpay.notification(request.body.read)
71
102
  @notification.trade_info # The decrypted TradeInfo from NewebPay
72
103
  ```
73
104
 
74
105
  ## Roadmap
75
106
 
76
107
  * [x] MPG Support
108
+ * [x] Allow switch config
109
+ * [ ] Refund API
110
+ * [ ] Unauthorized API
111
+ * [ ] Order Status API
77
112
  * [ ] Rails Support
78
113
  * [ ] Form Object
79
114
  * [ ] Form Helper
@@ -1,12 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'forwardable'
4
+
3
5
  require 'newebpay/version'
4
6
  require 'newebpay/config'
5
7
  require 'newebpay/cipher'
6
8
 
7
9
  require 'offsite_payments/integrations/newebpay'
8
10
 
11
+ # NewebPay
12
+ #
13
+ # @since 0.1.0
9
14
  module Newebpay
10
15
  class Error < StandardError; end
11
- # Your code goes here...
16
+
17
+ class << self
18
+ extend Forwardable
19
+
20
+ delegate %i[service_url helper return notification] => OffsitePayments::Integrations::Newebpay
21
+
22
+ # Use specify config
23
+ #
24
+ # @param [Newebpay::Config] the config to switch
25
+ # @param [Proc] the block to use temporary config
26
+ #
27
+ # @since 0.2.0
28
+ def use(config, &block)
29
+ Config.switch(config, &block)
30
+ end
31
+ end
12
32
  end
@@ -10,11 +10,34 @@ module Newebpay
10
10
  class << self
11
11
  extend Forwardable
12
12
 
13
+ # @since 0.1.0
14
+ LOCK = Mutex.new
15
+
13
16
  # Current activate config
14
17
  #
15
18
  # @since 0.1.0
16
19
  def current
17
- @current ||= new
20
+ return @current if @current
21
+
22
+ LOCK.synchronize do
23
+ return @current if @current
24
+
25
+ @current ||= new
26
+ end
27
+
28
+ @current
29
+ end
30
+
31
+ # Temporary switch to another config
32
+ #
33
+ # @since 0.2.0
34
+ def switch(config, &_block)
35
+ LOCK.synchronize do
36
+ temp = @current
37
+ @current = config
38
+ yield @current if defined?(yield)
39
+ @current = temp
40
+ end
18
41
  end
19
42
 
20
43
  delegate %i[hash_key hash_iv config] => :current
@@ -23,6 +46,17 @@ module Newebpay
23
46
  # @since 0.1.0
24
47
  attr_accessor :hash_key, :hash_iv
25
48
 
49
+ # Initialize
50
+ #
51
+ # @since 0.2.0
52
+ def initialize(attributes = {}, &block)
53
+ attributes.each do |name, value|
54
+ send("#{name}=", value) if respond_to?("#{name}=")
55
+ end
56
+
57
+ config(&block) if defined?(yield)
58
+ end
59
+
26
60
  # Update current config
27
61
  #
28
62
  # @since 0.1.0
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Newebpay
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newebpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aotokitsuruya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-16 00:00:00.000000000 Z
11
+ date: 2021-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: offsite_payments