tappay_ruby 0.10.0 → 0.11.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: 4ce90cd2b717fd362fe27f9823797cbda3d53aaf94edae8d57ec012d4bcceaea
4
- data.tar.gz: 550b70b62f2c0d02414cbbce136900610badb978cec8b68ee36511daa4f23255
3
+ metadata.gz: 920fd5c582914989062cb76fc47306e6ec3b4714b2558e2d4f04e2e43c4c11a0
4
+ data.tar.gz: 85a9f5331b47bdfbb78f81da3236d5123086f873e1260fb68b5c757bb7984e1d
5
5
  SHA512:
6
- metadata.gz: c66bade29b78ca9518fd519d4cbcf91916af5d9cd20c04e96294ea6ad9967f409199b1af700e0e8011490a05cce4056d25c9ce1c351bd3b327acc6713b8bf7f5
7
- data.tar.gz: eb409d49cab817ad4cb31af5fc63184ee4c6458b817026d1953ef71a71e43fd8eefd2086c269393c3f6338a3bf4dda70021be74250ef0cf377d763620fbdc4ba
6
+ metadata.gz: 9fb651e7b40a652a725896d697a75a3e47484f58bc64102b057bfa2a8b049f0427b8c1bdb0dcaa229d84f999898e291b9bfd36548e0ce012fdff4cb706201b03
7
+ data.tar.gz: 62b665b0e9d15c07966cc61998d215ff2e531a1664d5dffd824b9fc116db93a4c031f1f5271e5701cc445793056bd167ca561c6688064a281707dcba17e27839
data/README.md CHANGED
@@ -10,12 +10,13 @@ A Ruby library for integrating with TapPay payment services. This gem provides a
10
10
 
11
11
  - Multiple payment methods:
12
12
  - Credit card payments (one-time and tokenized)
13
- - Instalment payments (3, 6, 12, 24 and 36 months)
13
+ - Instalment payments (3, 6, 12, 18, 24, 30 months)
14
14
  - Line Pay
15
15
  - JKO Pay
16
16
  - Flexible merchant identification:
17
17
  - Support for both `merchant_id` and `merchant_group_id`
18
18
  - Automatic fallback handling
19
+ - Priority-based merchant ID resolution
19
20
  - Refund processing
20
21
  - Transaction status queries
21
22
  - Comprehensive error handling
@@ -53,91 +54,37 @@ The simplest way to configure the gem:
53
54
 
54
55
  ```ruby
55
56
  Tappay.configure do |config|
56
- # Environment settings
57
- config.mode = Rails.env.production? ? :production : :sandbox
58
-
59
- # Common settings
60
- config.partner_key = 'your_partner_key'.freeze
61
- config.app_id = 'your_app_id'.freeze
57
+ config.partner_key = 'YOUR_PARTNER_KEY'
62
58
 
63
- # Merchant settings (use either merchant_id or merchant_group_id, not both)
64
- config.merchant_id = 'your_merchant_id'.freeze
59
+ # Primary merchant identification
60
+ # You can use either merchant_id or merchant_group_id
61
+ config.merchant_id = 'YOUR_MERCHANT_ID'
65
62
  # OR
66
- config.merchant_group_id = 'your_merchant_group_id'.freeze
63
+ config.merchant_group_id = 'YOUR_MERCHANT_GROUP_ID'
67
64
 
68
- # Payment-specific merchant IDs
69
- config.instalment_merchant_id = 'your_instalment_merchant_id'.freeze
70
- config.line_pay_merchant_id = 'your_line_pay_merchant_id'.freeze
71
- config.jko_pay_merchant_id = 'your_jko_pay_merchant_id'.freeze
65
+ # Optional merchant IDs for specific payment methods
66
+ # Note: These will be ignored if merchant_group_id is set
67
+ config.jko_pay_merchant_id = 'YOUR_JKO_PAY_MERCHANT_ID'
68
+ config.line_pay_merchant_id = 'YOUR_LINE_PAY_MERCHANT_ID'
69
+ config.instalment_merchant_id = 'YOUR_INSTALMENT_MERCHANT_ID'
72
70
 
73
- config.currency = 'TWD'.freeze
74
- config.vat_number = 'your_vat_number'.freeze
71
+ config.mode = :sandbox # or :production
75
72
  end
76
73
  ```
77
74
 
78
- Note: When both `merchant_id` and `merchant_group_id` are provided, `merchant_group_id` will be used for payment processing.
79
-
80
- ### Merchant ID Configuration
81
-
82
- The gem supports flexible merchant ID configuration:
83
-
84
- 1. Global merchant ID:
85
- - `merchant_id`: Default merchant ID for all payments
86
- - `merchant_group_id`: Group merchant ID (mutually exclusive with merchant_id)
87
-
88
- 2. Payment-specific merchant IDs:
89
- - `instalment_merchant_id`: Specific merchant ID for instalment payments
90
- - `line_pay_merchant_id`: Specific merchant ID for Line Pay transactions
91
- - `jko_pay_merchant_id`: Specific merchant ID for JKO Pay transactions
92
-
93
- Merchant ID Priority:
94
- 1. Payment options merchant ID (if provided in the payment call)
95
- 2. Payment-specific merchant ID (if configured)
96
- 3. Global merchant ID
97
-
98
- Example of merchant ID usage:
99
- ```ruby
100
- # Using default merchant ID
101
- result = Tappay::CreditCard::Pay.by_prime(
102
- prime: 'prime_from_tappay_sdk',
103
- amount: 100,
104
- order_number: 'ORDER-123'
105
- )
106
-
107
- # Using payment-specific merchant ID
108
- # This will automatically use line_pay_merchant_id if configured
109
- result = Tappay::LinePay::Pay.new(
110
- prime: 'line_pay_prime',
111
- amount: 100,
112
- frontend_redirect_url: 'https://example.com/line_pay/result',
113
- backend_notify_url: 'https://example.com/line_pay/notify'
114
- ).execute
115
-
116
- # Overriding merchant ID in payment options
117
- result = Tappay::CreditCard::Pay.by_prime(
118
- prime: 'prime_from_tappay_sdk',
119
- amount: 100,
120
- merchant_id: 'override_merchant_id', # This takes highest priority
121
- order_number: 'ORDER-123'
122
- )
123
- ```
75
+ ### Merchant ID Resolution
124
76
 
125
- ### 2. Using Environment Variables
77
+ The gem uses the following priority order when resolving merchant IDs:
126
78
 
127
- For better security, you can use environment variables:
79
+ 1. If `merchant_group_id` is set (either in configuration or options):
80
+ - Uses `merchant_group_id` for all payment types
81
+ - Ignores all other merchant IDs (including specific ones for Line Pay, JKO Pay, etc.)
128
82
 
129
- ```ruby
130
- Tappay.configure do |config|
131
- config.mode = Rails.env.production? ? :production : :sandbox
132
- config.partner_key = ENV['TAPPAY_PARTNER_KEY'].freeze
133
- config.app_id = ENV['TAPPAY_APP_ID'].freeze
134
- config.merchant_id = ENV['TAPPAY_MERCHANT_ID'].freeze
135
- config.line_pay_merchant_id = ENV['TAPPAY_LINE_PAY_MERCHANT_ID'].freeze
136
- config.instalment_merchant_id = ENV['TAPPAY_INSTALMENT_MERCHANT_ID'].freeze
137
- config.jko_pay_merchant_id = ENV['TAPPAY_JKO_PAY_MERCHANT_ID'].freeze
138
- # ... other configurations
139
- end
140
- ```
83
+ 2. If `merchant_group_id` is not set:
84
+ - For Line Pay: Uses `line_pay_merchant_id` if set, otherwise falls back to `merchant_id`
85
+ - For JKO Pay: Uses `jko_pay_merchant_id` if set, otherwise falls back to `merchant_id`
86
+ - For Instalments: Uses `instalment_merchant_id` if set, otherwise falls back to `merchant_id`
87
+ - For other payment types: Uses `merchant_id`
141
88
 
142
89
  ## Usage
143
90
 
@@ -34,6 +34,10 @@ module Tappay
34
34
  private
35
35
 
36
36
  def get_merchant_id
37
+ # If merchant_group_id is set, it takes precedence
38
+ return nil if Tappay.configuration.merchant_group_id
39
+
40
+ # Otherwise, use instalment_merchant_id or fall back to default merchant_id
37
41
  Tappay.configuration.instalment_merchant_id || super
38
42
  end
39
43
 
@@ -75,6 +79,10 @@ module Tappay
75
79
  private
76
80
 
77
81
  def get_merchant_id
82
+ # If merchant_group_id is set, it takes precedence
83
+ return nil if Tappay.configuration.merchant_group_id
84
+
85
+ # Otherwise, use instalment_merchant_id or fall back to default merchant_id
78
86
  Tappay.configuration.instalment_merchant_id || super
79
87
  end
80
88
 
@@ -15,6 +15,10 @@ module Tappay
15
15
  private
16
16
 
17
17
  def get_merchant_id
18
+ # If merchant_group_id is set, it takes precedence
19
+ return nil if Tappay.configuration.merchant_group_id
20
+
21
+ # Otherwise, use jko_pay_merchant_id or fall back to default merchant_id
18
22
  Tappay.configuration.jko_pay_merchant_id || super
19
23
  end
20
24
 
@@ -23,6 +23,10 @@ module Tappay
23
23
  private
24
24
 
25
25
  def get_merchant_id
26
+ # If merchant_group_id is set, it takes precedence
27
+ return nil if Tappay.configuration.merchant_group_id
28
+
29
+ # Otherwise, use line_pay_merchant_id or fall back to default merchant_id
26
30
  Tappay.configuration.line_pay_merchant_id || super
27
31
  end
28
32
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Tappay
4
4
  class PaymentBase < Client
5
- VALID_INSTALMENT_VALUES = [0, 3, 6, 12, 24, 30].freeze
5
+ VALID_INSTALMENT_VALUES = [0, 3, 6, 12, 18, 24, 30].freeze
6
6
 
7
7
  def initialize(options = {})
8
8
  super
@@ -81,6 +81,10 @@ module Tappay
81
81
  end
82
82
 
83
83
  def get_merchant_id
84
+ # If merchant_group_id is set, it takes precedence over all other merchant IDs
85
+ return nil if Tappay.configuration.merchant_group_id
86
+
87
+ # Otherwise, return the default merchant_id
84
88
  Tappay.configuration.merchant_id
85
89
  end
86
90
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tappay
4
- VERSION = "0.10.0"
4
+ VERSION = "0.11.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tappay_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zac