adapay 1.0.1 → 1.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: f5ba15960bb5aea3717c3f4c92b09c6c7ce8a257ead3c9dcda6e25eef0085d1c
4
- data.tar.gz: 55639e78d29e8fca2a7ac7877e3e9fd8fb4a243d3a6441fce1d4a5ff1d070f63
3
+ metadata.gz: 413ba07cde882c6a880bb1e9b6743c770cf24063612694c50f541f7d5ec50216
4
+ data.tar.gz: 031d9ef98bd8c62d2e587dce4a10b24688ffb93bd9fe517068d4eaac8d31a2f5
5
5
  SHA512:
6
- metadata.gz: f87f24ea38a61a26d281a6abee1d37481d23a9f47b72310a7361c35f30abebaf8e0341f0d2e8bcfc264fa7653df966f8225061df1db969f0de28bf069859c42b
7
- data.tar.gz: 4ea17bdcae63d0944d17bc91bed72570e1f612cb42410ccef02138780dec08b83005d39a846a0cdcba4106b5c0953677a9c670a7f71ddedd6f357c1e3570ff03
6
+ metadata.gz: 68fdc0cdc902f471dd96d9ef62df263d02fbe0f59a5e76ff2c59ce241dfd4bcb9ff355cb1591dddc4963e2f644a550b6c1911d9664ea5c90262f3fb862c87aeb
7
+ data.tar.gz: dc3a89ad8e7b9882202311726970526c285ec4eb6b2a153746738214c67c7b974b7eab639a55c24de846dee6a0628b148c55c43667b969e99ee39b29127f84eb
data/.1024 ADDED
@@ -0,0 +1,9 @@
1
+ # .1024 Configuration file for project run commands, compilation and debug settings (optional);
2
+ # Any changes made will be auto-saved and take effect immediately.
3
+ # For more information, please refer to the documentation: https://docs.clacky.ai/clacky-workspace/configure
4
+
5
+ # Command to run when "Run" button clicked
6
+ run_command: 'bundle exec rspec'
7
+ # Command to install or update dependencies, will execute each time a new thread created to ensure dependencies up-to-date
8
+ dependency_command: 'bundle install'
9
+ linter_config: []
data/.gitignore CHANGED
@@ -9,3 +9,27 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ # Ruby build artifacts
14
+ *.gem
15
+
16
+ # Local environment files
17
+ .env
18
+
19
+ # Ruby version manager files
20
+ .ruby-version
21
+ .ruby-gemset
22
+
23
+ # Local bundle configurations
24
+ .bundle/
25
+
26
+ # Gem installation directories
27
+ vendor/bundle/
28
+
29
+ # Log files
30
+ log/
31
+
32
+ # Clacky-specific files
33
+ .1024*
34
+ !.1024
35
+ .breakpoints
data/Gemfile.lock CHANGED
@@ -1,13 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adapay (1.0.0)
4
+ adapay (1.0.1)
5
+ rest-client (~> 2.1)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  diff-lcs (1.5.0)
11
+ domain_name (0.6.20240107)
12
+ http-accept (1.7.0)
13
+ http-cookie (1.0.8)
14
+ domain_name (~> 0.5)
15
+ logger (1.7.0)
16
+ mime-types (3.7.0)
17
+ logger
18
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
19
+ mime-types-data (3.2025.0610)
20
+ netrc (0.11.0)
10
21
  rake (12.3.3)
22
+ rest-client (2.1.0)
23
+ http-accept (>= 1.7.0, < 2.0)
24
+ http-cookie (>= 1.0.2, < 2.0)
25
+ mime-types (>= 1.16, < 4.0)
26
+ netrc (~> 0.8)
11
27
  rspec (3.11.0)
12
28
  rspec-core (~> 3.11.0)
13
29
  rspec-expectations (~> 3.11.0)
data/README.md CHANGED
@@ -85,6 +85,88 @@ res = Adapay.create_refund(params.merge(app_id: Adapay.backup_app_id))
85
85
 
86
86
  This Gem can auto search the `backup_app_key` from `Adapay.id_key_map`. You can check the source code from [here](https://github.com/lanzhiheng/adapay/blob/master/lib/adapay.rb#L80).
87
87
 
88
+ ### 3. Create Corporate Member
89
+
90
+ To create a corporate member account, you need to provide required corporate information:
91
+
92
+ ``` ruby
93
+ params = {
94
+ member_id: 'corp_member_001', # Unique merchant member ID
95
+ order_no: 'order_no_001', # Unique order number
96
+ name: 'Test Company Ltd.', # Corporate name
97
+ prov_code: '310000', # Province code
98
+ city_code: '310100', # City code
99
+ district_code: '310101', # District code
100
+ address: '123 Business Road', # Business address
101
+ legal_person: '张三', # Legal representative name
102
+ cert_no: '310000198001010011', # ID card number
103
+ cert_type: '00', # ID card type
104
+ mobile: '13800000000', # Contact mobile
105
+ email: 'test@example.com' # Contact email
106
+ }
107
+
108
+ # Create corporate member without file attachment
109
+ response = Adapay.create_corp_member(params)
110
+ ```
111
+
112
+ #### Required Parameters
113
+
114
+ | Parameter | Description | Required |
115
+ |---------------|------------------------------------------|----------|
116
+ | member_id | Merchant's unique identifier | Yes |
117
+ | order_no | Unique order number | Yes |
118
+ | name | Corporate name | Yes |
119
+ | prov_code | Province code | Yes |
120
+ | city_code | City code | Yes |
121
+ | district_code | District code | Yes |
122
+ | address | Business address | Yes |
123
+ | legal_person | Legal representative name | Yes |
124
+ | cert_no | ID card number of legal representative | Yes |
125
+ | cert_type | ID card type | Yes |
126
+ | mobile | Contact mobile phone | Yes |
127
+ | email | Contact email | Yes |
128
+
129
+ #### File Upload
130
+
131
+ You can attach corporate documentation files (business license, etc.) when creating a member:
132
+
133
+ ``` ruby
134
+ # Path to attachment file
135
+ attach_file_path = '/path/to/business_license.jpg'
136
+
137
+ # Create corporate member with file attachment
138
+ response = Adapay.create_corp_member(params, attach_file_path)
139
+ ```
140
+
141
+ The file will be uploaded using multipart/form-data format. The system supports common image formats such as PNG, JPG, JPEG, etc.
142
+
143
+ #### Response Handling
144
+
145
+ ``` ruby
146
+ # Parse the JSON response
147
+ result = JSON.parse(response)
148
+
149
+ if result['result_code'] == '200' && result['biz_result_code'] == 'S'
150
+ # Success case
151
+ member_id = result['data']['member_id']
152
+ puts "Corporate member created successfully: #{member_id}"
153
+ else
154
+ # Error handling
155
+ error_code = result['biz_result_code']
156
+ error_msg = result['biz_msg']
157
+ puts "Failed to create corporate member: #{error_msg} (#{error_code})"
158
+ end
159
+ ```
160
+
161
+ #### Query Corporate Member
162
+
163
+ You can query a corporate member's information using its member_id:
164
+
165
+ ``` ruby
166
+ # Query corporate member details
167
+ response = Adapay.query_corp_member(member_id: 'corp_member_001')
168
+ ```
169
+
88
170
  ## Contributing
89
171
 
90
172
  Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/adapay. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/adapay/blob/master/CODE_OF_CONDUCT.md).
@@ -96,4 +178,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
96
178
 
97
179
  ## Code of Conduct
98
180
 
99
- Everyone interacting in the Adapay project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/adapay/blob/master/CODE_OF_CONDUCT.md).
181
+ Everyone interacting in the Adapay project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/adapay/blob/master/CODE_OF_CONDUCT.md).
data/adapay.gemspec CHANGED
@@ -28,4 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.bindir = 'exe'
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ['lib']
31
+
32
+ spec.add_runtime_dependency 'rest-client', '~> 2.1'
31
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Adapay
4
- VERSION = '1.0.1'
4
+ VERSION = '1.2.0'
5
5
  end
data/lib/adapay.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'adapay/version'
4
+ require 'rest-client'
5
+ require 'json'
6
+
7
+ # 汇付最新文档: https://doc.adapay.tech/document/api/#/member?id=%e5%88%9b%e5%bb%ba%e4%bc%81%e4%b8%9a%e7%94%a8%e6%88%b7%e5%af%b9%e8%b1%a1
4
8
 
5
9
  module Adapay
6
10
  class << self
@@ -164,6 +168,17 @@ module Adapay
164
168
  send_request(:post, path, params)
165
169
  end
166
170
 
171
+ # 必填:tel_no 用户手机号 user_name 用户姓名 cert_type 00-身份证 cert_id 证件号
172
+ def create_realname_member(params)
173
+ path = '/v1/members/realname'
174
+
175
+ params = {
176
+ app_id: app_id
177
+ }.merge(params)
178
+
179
+ send_request(:post, path, params)
180
+ end
181
+
167
182
  # https://docs.adapay.tech/api/trade.html#id39
168
183
  def query_member(params)
169
184
  member_id = params.delete(:member_id)
@@ -189,16 +204,14 @@ module Adapay
189
204
  end
190
205
 
191
206
  # https://docs.adapay.tech/api/trade.html#id42
192
- def query_member_list
207
+ def query_member_list(**params)
193
208
  path = '/v1/members/list'
194
209
 
195
- params = { app_id: app_id }
210
+ params = { app_id: app_id }.merge(params)
196
211
 
197
212
  send_request(:get, path, params)
198
213
  end
199
214
 
200
- ## ---
201
-
202
215
  def create_settle_account(params)
203
216
  path = '/v1/settle_accounts'
204
217
 
@@ -261,6 +274,40 @@ module Adapay
261
274
  send_request(:get, path, params)
262
275
  end
263
276
 
277
+ # -- 余额支付
278
+
279
+ def balance_pay(params)
280
+ path = '/v1/settle_accounts/balancePay'
281
+
282
+ params = {
283
+ app_id: app_id
284
+ }.merge(params)
285
+
286
+ send_request(:post, path, params)
287
+ end
288
+
289
+ def balance_refund(params)
290
+ path = '/v1/settle_accounts/balanceRefund'
291
+
292
+ params = {
293
+ app_id: app_id
294
+ }.merge(params)
295
+
296
+ send_request(:post, path, params)
297
+ end
298
+
299
+ # Adapay.balance_pay_list({ created_gte: (Date.yesterday.beginning_of_day.to_f * 1000).to_i,
300
+ # created_lte: (Date.yesterday.end_of_day.to_f * 1000).to_i })
301
+ def balance_pay_list(params)
302
+ path = '/v1/settle_accounts/balancePayList'
303
+
304
+ params = {
305
+ app_id: app_id
306
+ }.merge(params)
307
+
308
+ send_request(:get, path, params)
309
+ end
310
+
264
311
  # -- 钱包
265
312
 
266
313
  def cash(params)
@@ -303,10 +350,10 @@ module Adapay
303
350
  send_request(:get, path, params)
304
351
  end
305
352
 
306
- def query_payment_reverse_list
353
+ def query_payment_reverse_list(params)
307
354
  params = {
308
355
  app_id: app_id
309
- }
356
+ }.merge(params)
310
357
 
311
358
  path = '/v1/payments/reverse/list'
312
359
  send_request(:get, path, params)
@@ -364,6 +411,62 @@ module Adapay
364
411
  send_request(:get, path, params)
365
412
  end
366
413
 
414
+ def corp_picture_upload(params, attach_file)
415
+ required_fields = [:file_type]
416
+
417
+ raise ArgumentError, 'missing required parameters' if params.empty?
418
+
419
+ required_fields.each do |field|
420
+ raise ArgumentError, "#{field} is required" unless params.key?(field)
421
+ end
422
+
423
+ path = '/v1/corp/pictureUpload'
424
+
425
+ params = {
426
+ app_id: app_id
427
+ }.merge(params)
428
+
429
+ # 带文件上传的接口会比较特殊:https://docs.adapay.tech/help/console.html#generatecert
430
+ url = endpoint + path
431
+ headers = build_request_info(:get, url, params)
432
+ url += "?#{get_original_str(params)}"
433
+
434
+ payload = { attach_file: File.new(attach_file, 'rb') }
435
+ RestClient::Request.execute(method: :post, url: url, headers: headers, payload: payload)
436
+ end
437
+
438
+ # -- 企业用户
439
+
440
+ # https://docs.adapay.tech/api/trade.html#corp-member-create
441
+ def create_corp_member(params)
442
+ # Validate required parameters
443
+ required_fields = %i[member_id order_no name]
444
+ raise ArgumentError, 'missing required parameters' if params.empty?
445
+
446
+ required_fields.each do |field|
447
+ raise ArgumentError, "#{field} is required" unless params.key?(field)
448
+ end
449
+
450
+ path = '/v1/corp/createMembers'
451
+
452
+ params = {
453
+ app_id: app_id
454
+ }.merge(params)
455
+
456
+ send_request(:post, path, params)
457
+ end
458
+
459
+ # Query an existing corporate member
460
+ def query_corp_member(params)
461
+ path = "/v1/corp_members/#{params[:member_id]}"
462
+
463
+ params = {
464
+ app_id: app_id
465
+ }.merge(params)
466
+
467
+ send_request(:get, path, params)
468
+ end
469
+
367
470
  private
368
471
 
369
472
  def send_request(method, path, params)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adapay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - lanzhiheng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-28 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2025-06-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
13
27
  description: Gem for Adapay
14
28
  email:
15
29
  - lanzhihengrj@gmail.com
@@ -17,6 +31,7 @@ executables: []
17
31
  extensions: []
18
32
  extra_rdoc_files: []
19
33
  files:
34
+ - ".1024"
20
35
  - ".gitignore"
21
36
  - ".rspec"
22
37
  - ".travis.yml"