rock_fintech 0.1.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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +55 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +63 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +43 -0
  8. data/Rakefile +12 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/rock_fintech/api/account/account_balance.rb +40 -0
  12. data/lib/rock_fintech/api/account/find_account_by_id.rb +42 -0
  13. data/lib/rock_fintech/api/account/find_account_by_mobile.rb +41 -0
  14. data/lib/rock_fintech/api/account/unbind_bank_card.rb +46 -0
  15. data/lib/rock_fintech/api/api_helper.rb +53 -0
  16. data/lib/rock_fintech/api/asset/.gitkeep +0 -0
  17. data/lib/rock_fintech/api/asset/asset_query.rb +48 -0
  18. data/lib/rock_fintech/api/asset/assets_enroll.rb +62 -0
  19. data/lib/rock_fintech/api/asset/assets_revoke.rb +48 -0
  20. data/lib/rock_fintech/api/batch/.gitkeep +0 -0
  21. data/lib/rock_fintech/api/batch/batch_end_credit_b.rb +59 -0
  22. data/lib/rock_fintech/api/batch/batch_payment_b.rb +76 -0
  23. data/lib/rock_fintech/api/batch/batch_repayment_b.rb +78 -0
  24. data/lib/rock_fintech/api/enterprise/.gitkeep +0 -0
  25. data/lib/rock_fintech/api/money/bank_recharge.rb +50 -0
  26. data/lib/rock_fintech/api/money/coupon_recharge.rb +40 -0
  27. data/lib/rock_fintech/api/money/coupon_withdraw.rb +40 -0
  28. data/lib/rock_fintech/api/platform/.gitkeep +0 -0
  29. data/lib/rock_fintech/api/query/.gitkeep +0 -0
  30. data/lib/rock_fintech/api/trade/.gitkeep +0 -0
  31. data/lib/rock_fintech/api/trade/auto_bid_apply.rb +61 -0
  32. data/lib/rock_fintech/api/trade/revoke_auto_bid.rb +44 -0
  33. data/lib/rock_fintech/client.rb +45 -0
  34. data/lib/rock_fintech/encrypt/rsa.rb +29 -0
  35. data/lib/rock_fintech/extensions.rb +7 -0
  36. data/lib/rock_fintech/form/account/bind_bank_card_p.rb +43 -0
  37. data/lib/rock_fintech/form/account/create_account_p.rb +52 -0
  38. data/lib/rock_fintech/form/account/set_password_p.rb +52 -0
  39. data/lib/rock_fintech/form/asset/.gitkeep +0 -0
  40. data/lib/rock_fintech/form/batch/.gitkeep +0 -0
  41. data/lib/rock_fintech/form/enterprise/.gitkeep +0 -0
  42. data/lib/rock_fintech/form/money/recharge_p.rb +59 -0
  43. data/lib/rock_fintech/form/money/sign_borrower_p.rb +48 -0
  44. data/lib/rock_fintech/form/money/sign_transfer_p.rb +44 -0
  45. data/lib/rock_fintech/form/money/withdraw_p.rb +58 -0
  46. data/lib/rock_fintech/form/platform/.gitkeep +0 -0
  47. data/lib/rock_fintech/form/query/.gitkeep +0 -0
  48. data/lib/rock_fintech/form/trade/.gitkeep +0 -0
  49. data/lib/rock_fintech/form/trade/bid_apply_p.rb +58 -0
  50. data/lib/rock_fintech/form/trade/sign_auto_bid_p.rb +46 -0
  51. data/lib/rock_fintech/http/error_code/account.rb +34 -0
  52. data/lib/rock_fintech/http/error_code/asset.rb +20 -0
  53. data/lib/rock_fintech/http/error_code/batch.rb +20 -0
  54. data/lib/rock_fintech/http/error_code/money.rb +37 -0
  55. data/lib/rock_fintech/http/error_code/trade.rb +23 -0
  56. data/lib/rock_fintech/http/request.rb +103 -0
  57. data/lib/rock_fintech/http/response.rb +54 -0
  58. data/lib/rock_fintech/railtie.rb +7 -0
  59. data/lib/rock_fintech/sign/md5.rb +18 -0
  60. data/lib/rock_fintech/utils.rb +75 -0
  61. data/lib/rock_fintech/version.rb +3 -0
  62. data/lib/rock_fintech.rb +51 -0
  63. data/rock_fintech.gemspec +41 -0
  64. metadata +223 -0
File without changes
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Api
4
+ module Money
5
+ module BankRecharge
6
+ # 网关充值
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ # * :url [String] 支付 url
16
+ # * :order_no [String] 订单号
17
+ # * :amount [Number] 金额
18
+ #
19
+ def bank_recharge(card_no, bank_type, callback_url, customer_no, redirect_url,
20
+ product_name, product_detail, order_no, bank_name, bank_id_no, amount,
21
+ devise='000001', remark='')
22
+ service = 'bank_recharge'
23
+
24
+ params = {
25
+ card_no: card_no,
26
+ bank_type: bank_type,
27
+ callback_url: callback_url,
28
+ customer_no: customer_no,
29
+ redirect_url: redirect_url,
30
+ product_name: product_name,
31
+ product_detail: product_detail,
32
+ order_no: order_no,
33
+ bank_name: bank_name,
34
+ bank_id_no: bank_id_no,
35
+ amount: amount,
36
+ client: devise,
37
+ custom: remark,
38
+ }
39
+
40
+ res = operate_post(:operate, service, params, Http::ErrorCode.bank_recharge, ['RD000000'])
41
+
42
+ RockFintech.logger.info res
43
+
44
+ res
45
+ end
46
+
47
+ end # module
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Api
4
+ module Money
5
+ module CouponRecharge
6
+ # 营销账户充值
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ # * :serial_no [String] 交易流水号
16
+ # * :order_no [String] 订单号
17
+ # * :amount [Number] 金额
18
+ # * :balance [Number] 操作后账户余额
19
+ #
20
+ def coupon_recharge(amount, serial_no, devise='000001', remark='')
21
+ service = 'coupon_recharge'
22
+
23
+ params = {
24
+ amount: amount,
25
+ serial_no: serial_no,
26
+ client: devise,
27
+ custom: remark,
28
+ }
29
+
30
+ res = operate_post(:operate, service, params, Http::ErrorCode.coupon_recharge, ['RD000000'])
31
+
32
+ RockFintech.logger.info res
33
+
34
+ res
35
+ end
36
+
37
+ end # module
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Api
4
+ module Money
5
+ module CouponWithdraw
6
+ # 营销账户提现
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ # * :serial_no [String] 交易流水号
16
+ # * :order_no [String] 订单号
17
+ # * :amount [Number] 金额
18
+ # * :balance [Number] 操作后账户余额
19
+ #
20
+ def coupon_withdraw(amount, serial_no, devise='000001', remark='')
21
+ service = 'coupon_withdraw'
22
+
23
+ params = {
24
+ amount: amount,
25
+ serial_no: serial_no,
26
+ client: devise,
27
+ custom: remark,
28
+ }
29
+
30
+ res = operate_post(:operate, service, params, Http::ErrorCode.coupon_withdraw, ['RD000000'])
31
+
32
+ RockFintech.logger.info res
33
+
34
+ res
35
+ end
36
+
37
+ end # module
38
+ end
39
+ end
40
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Api
4
+ module Trade
5
+ module AutoBidApply
6
+
7
+ # 一键投标
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :result [String] "S"/"F"/"P"
11
+ # * :request_params [Hash] 请求参数
12
+ # * :response [Object] 请求返回对象
13
+ # * :code [String] 结果代码
14
+ # * :msg [String] 结果信息
15
+ # * :data: 具体业务返回信息
16
+ # * :out_serial_no [String] 申请流水号
17
+ # * :card_no [String] 电子账号
18
+ # * :name [String] 姓名
19
+ # * :bid_amount [String] 投标金额
20
+ # * :forcast_income [String] 预期收益
21
+ # * :buy_date [String] 投标日期
22
+ # * :state [String] 记录状态 (1: 投标中, 2: 计息中, 3: 到期待返还, 4: 本息已返还)
23
+ # * :auth_code [String] 投标申请授权码
24
+ #
25
+ def auto_bid_apply(card_no, out_serial_no, amount,
26
+ use_bonus, bonus_amount, auth_code,
27
+ asset_no, interest_date, interest_type,
28
+ interest_day, end_date, interest_rate,
29
+ frozen_flag, frozen_no="",
30
+ devise='000001', remark='')
31
+
32
+ service = 'auto_bid_apply'
33
+
34
+ params = {
35
+ card_no: card_no,
36
+ out_serial_no: out_serial_no,
37
+ amount: amount,
38
+ use_bonus: use_bonus,
39
+ bonus_amount: bonus_amount,
40
+ auth_code: auth_code,
41
+ asset_no: asset_no,
42
+ interest_date: interest_date,
43
+ interest_type: interest_type,
44
+ interest_day: interest_day,
45
+ end_date: end_date,
46
+ interest_rate: interest_rate,
47
+ frozen_flag: frozen_flag,
48
+ frozen_no: frozen_no,
49
+ client: devise,
50
+ custom: remark,
51
+ }
52
+
53
+ res = operate_post(:operate, service, params, Http::ErrorCode.auto_bid_apply, ['RD000000'])
54
+
55
+ res
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Api
4
+ module Trade
5
+ module RevokeAutoBid
6
+
7
+ # 撤销自动投标签约
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :result [String] "S"/"F"/"P"
11
+ # * :request_params [Hash] 请求参数
12
+ # * :response [Object] 请求返回对象
13
+ # * :code [String] 结果代码
14
+ # * :msg [String] 结果信息
15
+ # * :data: 具体业务返回信息
16
+ # * :out_serial_no [String] 申请流水号
17
+ # * :card_no [String] 电子账号
18
+ # * :name [String] 持卡人姓名
19
+ # * :sign_flag [String] 签约状态 "having(已签约), revoking(已撤销)"
20
+ # * :sign_date [String] 签约日期
21
+ # * :sign_time [String] 签约时间
22
+ #
23
+ def revoke_auto_bid(card_no, out_serial_no, origin_serial_no="",
24
+ devise='000001', remark='')
25
+
26
+ service = 'revoke_auto_bid'
27
+
28
+ params = {
29
+ card_no: card_no,
30
+ out_serial_no: out_serial_no,
31
+ origin_serial_no: origin_serial_no,
32
+ client: devise,
33
+ custom: remark,
34
+ }
35
+
36
+ res = operate_post(:operate, service, params, Http::ErrorCode.revoke_auto_bid, ['RD000000'])
37
+
38
+ res
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,45 @@
1
+ # coding: utf-8
2
+ # 客户端
3
+
4
+ module RockFintech
5
+ class Client
6
+
7
+ attr_accessor :config
8
+
9
+ def initialize(options_arg)
10
+ options = Utils.symbolize_keys(options_arg)
11
+ @config = {
12
+ uri: options[:url],
13
+ rft_token: options[:rft_token],
14
+ rft_org: options[:rft_org],
15
+ rft_key: options[:rft_key],
16
+ rft_secret: options[:rft_secret],
17
+ private_key: OpenSSL::PKey::RSA.new(options[:private_key]),
18
+ public_key: OpenSSL::PKey::RSA.new(options[:public_key]),
19
+ }
20
+
21
+ # 自动 include api 下的模块
22
+ recursive_include_api('RockFintech::Api')
23
+
24
+ # 自动 include form 下的模块
25
+ recursive_include_api('RockFintech::Form')
26
+ end
27
+
28
+ def decode_notify_data(encryptkey, data)
29
+ # ::RockFintech::Http::Decode.decode_notify_data(encryptkey, data, @config)
30
+ end
31
+
32
+ private
33
+
34
+ def recursive_include_api(module_chain)
35
+ modules = eval("#{module_chain}.constants").each{ |constant| eval("#{module_chain}::#{constant}").class.kind_of?(Module) }
36
+
37
+ if modules.empty?
38
+ self.class.send(:include, eval(module_chain))
39
+ else
40
+ modules.each{ |constant| recursive_include_api("#{module_chain}::#{constant}") }
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Encrypt
4
+ module RSA
5
+
6
+ def self.encrypt(content, public_key)
7
+ content_str = ''
8
+ content.scan(/.{1,100}/).each{ |str|
9
+ content_str += public_key.public_encrypt(str)
10
+ }
11
+ Base64.strict_encode64(content_str)
12
+ end
13
+
14
+ def self.decrypt(content, private_key)
15
+ content_str = Base64.strict_decode64(content)
16
+
17
+ result_str = ''
18
+ count = content_str.length / 256
19
+ count.times.each{ |i|
20
+ str = content_str[256*i, 256]
21
+ result_str += private_key.private_decrypt(str)
22
+ }
23
+
24
+ result_str
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ module NilClassExtension
2
+ def to_d
3
+ 0.to_d
4
+ end
5
+ end
6
+
7
+ NilClass.send(:include, NilClassExtension)
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Form
4
+ module Account
5
+ module BindBankCardP
6
+ # 绑卡网关接口
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ # * :out_serial_no [String] 申请流水号
16
+ # * :order_id [String] 订单号
17
+ # * :url [String] 页面跳转 url
18
+ #
19
+ def bind_bank_card_p(card_type, flow_id,
20
+ success_url, fail_url, callback_url,
21
+ card_no, devise='000001', remark='')
22
+ service = 'bind_bank_card_p'
23
+
24
+ params = {
25
+ card_type: card_type,
26
+ out_serial_no: flow_id,
27
+ success_url: success_url,
28
+ fail_url: fail_url,
29
+ callback_url: callback_url,
30
+ card_no: card_no,
31
+ client: devise,
32
+ custom: remark,
33
+ }
34
+
35
+ res = operate_post(:operate, service, params, Http::ErrorCode.bind_bank_card_p, ['RD000000'])
36
+
37
+ res
38
+ end
39
+
40
+ end # module
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,52 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Form
4
+ module Account
5
+ module CreateAccountP
6
+ # 开户
7
+ #
8
+ # @param flow_id [ String ] 申请流水号
9
+ # @param account_type [ String ] 账户类型 普通户200201,企业户200204
10
+ # @param role_type [ String ] 用户角色 1:出借角色,2:借款角色,3:代偿角色
11
+ # @param success_url [ String ] 成功 url
12
+ # @param fail_url [ String ] 失败 url
13
+ # @param callback_url [String] 回调 url
14
+ # @param devise [ String ] 交易终端,默认手机 000001手机APP 000002网页 000003微信 000004柜面
15
+ # @param remark [ String ] 备注,默认为空
16
+ #
17
+ # @return [ Hash ] 结果集
18
+ # * :result [String] "S"/"F"/"P"
19
+ # * :request_params [Hash] 请求参数
20
+ # * :response [Object] 请求返回对象
21
+ # * :code [String] 结果代码
22
+ # * :msg [String] 结果信息
23
+ # * :data: 具体业务返回信息
24
+ # * :out_serial_no [String] 申请流水号
25
+ # * :order_id [String] 订单号
26
+ # * :url [String] 页面跳转 url
27
+ #
28
+ def create_account_p(flow_id, account_type, role_type,
29
+ success_url, fail_url, callback_url,
30
+ devise='000001', remark='')
31
+ service = 'create_account_p'
32
+
33
+ params = {
34
+ out_serial_no: flow_id,
35
+ account_type: account_type,
36
+ role_type: role_type,
37
+ success_url: success_url,
38
+ fail_url: fail_url,
39
+ callback_url: callback_url,
40
+ client: devise,
41
+ custom: remark,
42
+ }
43
+
44
+ res = operate_post(:operate, service, params, Http::ErrorCode.create_account_p, ['RD000000'])
45
+
46
+ res
47
+ end
48
+
49
+ end # module
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,52 @@
1
+ # coding: utf-8
2
+ module RockFintech
3
+ module Form
4
+ module Account
5
+ module SetPasswordP
6
+ # 重置密码
7
+ #
8
+ # @param flow_id [ String ] 申请流水号
9
+ # @param customer_no [ String ] 客户号
10
+ # @param card_no [ String ] 电子账户
11
+ # @param success_url [ String ] 成功 url
12
+ # @param fail_url [ String ] 失败 url
13
+ # @param callback_url [String] 回调 url
14
+ # @param devise [ String ] 交易终端,默认手机 000001手机APP 000002网页 000003微信 000004柜面
15
+ # @param remark [ String ] 备注,默认为空
16
+ #
17
+ # @return [ Hash ] 结果集
18
+ # * :result [String] "S"/"F"/"P"
19
+ # * :request_params [Hash] 请求参数
20
+ # * :response [Object] 请求返回对象
21
+ # * :code [String] 结果代码
22
+ # * :msg [String] 结果信息
23
+ # * :data: 具体业务返回信息
24
+ # * :out_serial_no [String] 申请流水号
25
+ # * :order_id [String] 订单号
26
+ # * :url [String] 页面跳转 url
27
+ #
28
+ def set_password_p(flow_id, customer_no, card_no,
29
+ success_url, fail_url, callback_url,
30
+ devise='000001', remark='')
31
+ service = 'set_password_p'
32
+
33
+ params = {
34
+ out_serial_no: flow_id,
35
+ customer_no: customer_no,
36
+ card_no: card_no,
37
+ success_url: success_url,
38
+ fail_url: fail_url,
39
+ callback_url: callback_url,
40
+ client: devise,
41
+ custom: remark,
42
+ }
43
+
44
+ res = operate_post(:operate, service, params, Http::ErrorCode.set_password_p, ['RD000000'])
45
+
46
+ res
47
+ end
48
+
49
+ end # module
50
+ end
51
+ end
52
+ end