Module: Adapay

Defined in:
lib/adapay.rb,
lib/adapay/version.rb

Overview

Constant Summary collapse

VERSION =
'1.2.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.app_idObject

Returns the value of attribute app_id.



11
12
13
# File 'lib/adapay.rb', line 11

def app_id
  @app_id
end

.app_keyObject

Returns the value of attribute app_key.



11
12
13
# File 'lib/adapay.rb', line 11

def app_key
  @app_key
end

.backup_app_idObject

Returns the value of attribute backup_app_id.



11
12
13
# File 'lib/adapay.rb', line 11

def backup_app_id
  @backup_app_id
end

.backup_app_keyObject

Returns the value of attribute backup_app_key.



11
12
13
# File 'lib/adapay.rb', line 11

def backup_app_key
  @backup_app_key
end

.merchant_private_keyObject

Returns the value of attribute merchant_private_key.



12
13
14
# File 'lib/adapay.rb', line 12

def merchant_private_key
  @merchant_private_key
end

.platform_public_keyObject

Returns the value of attribute platform_public_key.



12
13
14
# File 'lib/adapay.rb', line 12

def platform_public_key
  @platform_public_key
end

Class Method Details

.balance_pay(params) ⇒ Object

– 余额支付



279
280
281
282
283
284
285
286
287
# File 'lib/adapay.rb', line 279

def balance_pay(params)
  path = '/v1/settle_accounts/balancePay'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.balance_pay_list(params) ⇒ Object

Adapay.balance_pay_list({ created_gte: (Date.yesterday.beginning_of_day.to_f * 1000).to_i,

created_lte: (Date.yesterday.end_of_day.to_f * 1000).to_i })


301
302
303
304
305
306
307
308
309
# File 'lib/adapay.rb', line 301

def balance_pay_list(params)
  path = '/v1/settle_accounts/balancePayList'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.balance_refund(params) ⇒ Object



289
290
291
292
293
294
295
296
297
# File 'lib/adapay.rb', line 289

def balance_refund(params)
  path = '/v1/settle_accounts/balanceRefund'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.build_request_info(method, url, params) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/adapay.rb', line 91

def build_request_info(method, url, params)
  headers = build_common_headers(params[:app_id])

  if method.to_s.downcase == 'post'
    plain_text = url + params.to_json
    signature = sign(plain_text)

    headers.merge({
                    'Content-type' => 'application/json',
                    signature: signature
                  })
  else
    plain_text = url + get_original_str(params)
    signature = sign(plain_text)

    headers.merge({
                    signature: signature
                  })
  end
end

.cash(params) ⇒ Object

– 钱包



313
314
315
316
317
318
319
320
321
# File 'lib/adapay.rb', line 313

def cash(params)
  path = '/v1/cashs'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.close_payment(params) ⇒ Object



136
137
138
139
140
141
# File 'lib/adapay.rb', line 136

def close_payment(params)
  payment_id = params.delete(:payment_id)
  path = "/v1/payments/#{payment_id}/close"

  send_request(:post, path, params)
end

.corp_picture_upload(params, attach_file) ⇒ Object

Raises:

  • (ArgumentError)


414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
# File 'lib/adapay.rb', line 414

def corp_picture_upload(params, attach_file)
  required_fields = [:file_type]

  raise ArgumentError, 'missing required parameters' if params.empty?

  required_fields.each do |field|
    raise ArgumentError, "#{field} is required" unless params.key?(field)
  end

  path = '/v1/corp/pictureUpload'

  params = {
    app_id: app_id
  }.merge(params)

  # 带文件上传的接口会比较特殊:https://docs.adapay.tech/help/console.html#generatecert
  url = endpoint + path
  headers = build_request_info(:get, url, params)
  url += "?#{get_original_str(params)}"

  payload = { attach_file: File.new(attach_file, 'rb') }
  RestClient::Request.execute(method: :post, url: url, headers: headers, payload: payload)
end

.create_corp_member(params) ⇒ Object

Raises:

  • (ArgumentError)


441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
# File 'lib/adapay.rb', line 441

def create_corp_member(params)
  # Validate required parameters
  required_fields = %i[member_id order_no name]
  raise ArgumentError, 'missing required parameters' if params.empty?

  required_fields.each do |field|
    raise ArgumentError, "#{field} is required" unless params.key?(field)
  end

  path = '/v1/corp/createMembers'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.create_member(params) ⇒ Object



161
162
163
164
165
166
167
168
169
# File 'lib/adapay.rb', line 161

def create_member(params)
  path = '/v1/members'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.create_payment(params) ⇒ Object



128
129
130
131
132
133
134
# File 'lib/adapay.rb', line 128

def create_payment(params)
  path = '/v1/payments'

  params = { app_id: app_id }.merge(params)

  send_request(:post, path, params)
end

.create_payment_confirm(params) ⇒ Object



364
365
366
367
368
369
370
371
# File 'lib/adapay.rb', line 364

def create_payment_confirm(params)
  params = {
    app_id: app_id
  }.merge(params)

  path = '/v1/payments/confirm'
  send_request(:post, path, params)
end

.create_payment_reverse(params) ⇒ Object



336
337
338
339
340
341
342
343
344
# File 'lib/adapay.rb', line 336

def create_payment_reverse(params)
  path = '/v1/payments/reverse'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.create_realname_member(params) ⇒ Object

必填:tel_no 用户手机号 user_name 用户姓名 cert_type 00-身份证 cert_id 证件号



172
173
174
175
176
177
178
179
180
# File 'lib/adapay.rb', line 172

def create_realname_member(params)
  path = '/v1/members/realname'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.create_refund(params) ⇒ Object



112
113
114
115
116
117
# File 'lib/adapay.rb', line 112

def create_refund(params)
  payment_id = params.delete(:payment_id)
  path = "/v1/payments/#{payment_id}/refunds"

  send_request(:post, path, params)
end

.create_settle_account(params) ⇒ Object



215
216
217
218
219
220
221
222
223
# File 'lib/adapay.rb', line 215

def (params)
  path = '/v1/settle_accounts'

  params = {
    app_id: app_id,
    channel: 'bank_account'
  }.merge(params)
  send_request(:post, path, params)
end

.delete_settle_account(params) ⇒ Object



238
239
240
241
242
243
244
245
246
# File 'lib/adapay.rb', line 238

def (params)
  path = '/v1/settle_accounts/delete'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.endpointObject



50
51
52
# File 'lib/adapay.rb', line 50

def endpoint
  'https://api.adapay.tech'
end

.extra_data_from_body(body) ⇒ Object



18
19
20
21
# File 'lib/adapay.rb', line 18

def extra_data_from_body(body)
  data = JSON.parse(body)['data']
  JSON.parse(data)
end

.extra_data_from_response(response) ⇒ Object



14
15
16
# File 'lib/adapay.rb', line 14

def extra_data_from_response(response)
  extra_data_from_body(response.body)
end

.id_key_mapObject



84
85
86
87
88
89
# File 'lib/adapay.rb', line 84

def id_key_map
  {
    app_id => app_key,
    backup_app_id => backup_app_key
  }
end

.merchant_public_keyObject



58
59
60
# File 'lib/adapay.rb', line 58

def merchant_public_key
  merchant_private_key.public_key
end

.merchant_verify(sign, content) ⇒ Object



79
80
81
82
# File 'lib/adapay.rb', line 79

def merchant_verify(sign, content)
  sign_string = Base64.strict_decode64(sign)
  merchant_public_key.public_key.verify('SHA1', sign_string, content)
end

.page_endpointObject



54
55
56
# File 'lib/adapay.rb', line 54

def page_endpoint
  'https://page.adapay.tech'
end

.payment_confirm_reverse(params) ⇒ Object



373
374
375
376
377
378
379
380
# File 'lib/adapay.rb', line 373

def payment_confirm_reverse(params)
  params = {
    app_id: app_id
  }.merge(params)

  path = '/v1/payments/confirm/reverse'
  send_request(:post, path, params)
end

.query_cash(params) ⇒ Object



323
324
325
326
327
328
329
330
331
# File 'lib/adapay.rb', line 323

def query_cash(params)
  path = '/v1/cashs/stat'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_corp_member(params) ⇒ Object

Query an existing corporate member



460
461
462
463
464
465
466
467
468
# File 'lib/adapay.rb', line 460

def query_corp_member(params)
  path = "/v1/corp_members/#{params[:member_id]}"

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_member(params) ⇒ Object



183
184
185
186
187
188
189
190
191
192
193
# File 'lib/adapay.rb', line 183

def query_member(params)
  member_id = params.delete(:member_id)

  params = {
    app_id: app_id
  }.merge(params)

  path = "/v1/members/#{member_id}"

  send_request(:get, path, params)
end

.query_member_list(**params) ⇒ Object



207
208
209
210
211
212
213
# File 'lib/adapay.rb', line 207

def query_member_list(**params)
  path = '/v1/members/list'

  params = { app_id: app_id }.merge(params)

  send_request(:get, path, params)
end

.query_payment(params) ⇒ Object



151
152
153
154
155
156
# File 'lib/adapay.rb', line 151

def query_payment(params)
  payment_id = params.delete(:payment_id)
  path = "/v1/payments/#{payment_id}"

  send_request(:get, path, params)
end

.query_payment_confirm(params) ⇒ Object



392
393
394
395
396
397
398
399
400
401
402
# File 'lib/adapay.rb', line 392

def query_payment_confirm(params)
  payment_confirm_id = params.delete(:payment_confirm_id)

  path = "/v1/payments/confirm/#{payment_confirm_id}"

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_payment_confirm_list(params) ⇒ Object



404
405
406
407
408
409
410
411
412
# File 'lib/adapay.rb', line 404

def query_payment_confirm_list(params)
  path = '/v1/payments/confirm/list'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_payment_confirm_reverse_detail(params) ⇒ Object



382
383
384
385
386
387
388
389
# File 'lib/adapay.rb', line 382

def query_payment_confirm_reverse_detail(params)
  params = {
    app_id: app_id
  }.merge(params)

  path = '/v1/payments/confirm/reverse/details'
  send_request(:get, path, params)
end

.query_payment_listObject



143
144
145
146
147
148
149
# File 'lib/adapay.rb', line 143

def query_payment_list
  path = '/v1/payments/list'

  params = { app_id: app_id }

  send_request(:get, path, params)
end

.query_payment_reverse(params) ⇒ Object



346
347
348
349
350
351
# File 'lib/adapay.rb', line 346

def query_payment_reverse(params)
  reverse_id = params.delete(:reverse_id)

  path = "/v1/payments/reverse/#{reverse_id}"
  send_request(:get, path, params)
end

.query_payment_reverse_list(params) ⇒ Object



353
354
355
356
357
358
359
360
# File 'lib/adapay.rb', line 353

def query_payment_reverse_list(params)
  params = {
    app_id: app_id
  }.merge(params)

  path = '/v1/payments/reverse/list'
  send_request(:get, path, params)
end

.query_refund(params) ⇒ Object



120
121
122
123
124
125
126
# File 'lib/adapay.rb', line 120

def query_refund(params)
  path = '/v1/payments/refunds'

  params = { app_id: app_id }.merge(params)

  send_request(:get, path, params)
end

.query_settle_account(params) ⇒ Object



225
226
227
228
229
230
231
232
233
234
235
# File 'lib/adapay.rb', line 225

def (params)
   = params.delete(:settle_account_id)

  path = "/v1/settle_accounts/#{}"

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_settle_account_balance(params) ⇒ Object



267
268
269
270
271
272
273
274
275
# File 'lib/adapay.rb', line 267

def (params)
  path = '/v1/settle_accounts/balance'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.query_settle_account_detail(params) ⇒ Object



258
259
260
261
262
263
264
265
# File 'lib/adapay.rb', line 258

def (params)
  path = '/v1/settle_accounts/settle_details'
  params = {
    app_id: app_id
  }.merge(params)

  send_request(:get, path, params)
end

.sdk_versionObject



46
47
48
# File 'lib/adapay.rb', line 46

def sdk_version
  "ruby_#{VERSION}"
end

.sign(content) ⇒ Object



70
71
72
# File 'lib/adapay.rb', line 70

def sign(content)
  Base64.strict_encode64(merchant_private_key.sign('SHA1', content))
end

.update_member(params) ⇒ Object



196
197
198
199
200
201
202
203
204
# File 'lib/adapay.rb', line 196

def update_member(params)
  path = '/v1/members/update'

  params = {
    app_id: app_id
  }.merge(params)

  send_request(:post, path, params)
end

.update_settle_account(params) ⇒ Object



249
250
251
252
253
254
255
256
# File 'lib/adapay.rb', line 249

def (params)
  path = '/v1/settle_accounts/modify'

  params = {
    app_id: app_id
  }.merge(params)
  send_request(:post, path, params)
end

.valid_channelsObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/adapay.rb', line 23

def valid_channels
  # https://docs.adapay.tech/api/appendix.html#id2
  %i[
    alipay
    alipay_qr
    alipay_wap
    alipay_lite
    alipay_pub
    alipay_scan
    wx_pub
    wx_lite
    wx_scan
    union
    union_qr
    union_wap
    union_scan
    union_online
    fast_pay
    b2c
    b2b
  ]
end

.verify(sign, content) ⇒ Object



74
75
76
77
# File 'lib/adapay.rb', line 74

def verify(sign, content)
  sign_string = Base64.strict_decode64(sign)
  platform_public_key.public_key.verify('SHA1', sign_string, content)
end