tappay_ruby 0.10.0 → 0.11.0

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