reapal 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/lib/reapal.rb +2 -0
  4. data/lib/reapal/api/asset/tender_all_cancel.rb +64 -0
  5. data/lib/reapal/api/asset/tender_apply.rb +81 -0
  6. data/lib/reapal/api/asset/tender_auth_cancel.rb +66 -0
  7. data/lib/reapal/api/asset/tender_auth_query.rb +64 -0
  8. data/lib/reapal/api/asset/tender_finish.rb +78 -0
  9. data/lib/reapal/api/asset/tender_repayment_complete.rb +75 -0
  10. data/lib/reapal/api/asset/tender_repayment_project.rb +70 -0
  11. data/lib/reapal/api/error_codes.rb +46 -0
  12. data/lib/reapal/api/money/.keep +0 -0
  13. data/lib/reapal/api/order/.keep +0 -0
  14. data/lib/reapal/api/user/balance_query.rb +61 -0
  15. data/lib/reapal/api/user/bank_card_add_sms.rb +71 -0
  16. data/lib/reapal/api/user/bank_card_add_sms_again.rb +62 -0
  17. data/lib/reapal/api/user/bank_card_add_sms_confirm.rb +61 -0
  18. data/lib/reapal/api/user/bind_card_query.rb +67 -0
  19. data/lib/reapal/api/user/contract_query.rb +18 -0
  20. data/lib/reapal/api/user/mobile_query.rb +56 -0
  21. data/lib/reapal/api/{trust → user}/onekey_batch_contract.rb +8 -26
  22. data/lib/reapal/api/user/onekey_contract.rb +61 -0
  23. data/lib/reapal/api/user/undo_bind_bank_card.rb +60 -0
  24. data/lib/reapal/client.rb +6 -0
  25. data/lib/reapal/form/business_auth_form.rb +61 -0
  26. data/lib/reapal/form/find_trade_password_form.rb +48 -0
  27. data/lib/reapal/form/mobile_modify_form.rb +50 -0
  28. data/lib/reapal/form/signle_tender_transfer_form.rb +72 -0
  29. data/lib/reapal/form/tender_invest_form.rb +62 -0
  30. data/lib/reapal/form/tender_refund_form.rb +84 -0
  31. data/lib/reapal/form/withdraw_apply_form.rb +54 -0
  32. data/lib/reapal/http/communicate.rb +45 -20
  33. data/lib/reapal/http/response.rb +21 -0
  34. data/lib/reapal/utils.rb +16 -0
  35. data/lib/reapal/version.rb +1 -1
  36. metadata +29 -9
  37. data/lib/reapal/api/trust/balance_query.rb +0 -58
  38. data/lib/reapal/api/trust/contract_query.rb +0 -35
  39. data/lib/reapal/api/trust/find_trade_password.rb +0 -41
  40. data/lib/reapal/api/trust/mobile_modify.rb +0 -42
  41. data/lib/reapal/api/trust/onekey_contract.rb +0 -77
  42. data/lib/reapal/api/trust/withdraw_apply.rb +0 -44
@@ -0,0 +1,18 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Api
5
+ module User
6
+ module ContractQuery
7
+
8
+ # 1.5 签约查询,支持个人和企业(API)
9
+ #
10
+ def contract_query(ori_flow_id)
11
+ # TODO(tony): 目前我们只用个人签约,个人签约都是同步返回,所以先不做实现
12
+ raise "Not Implement"
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,56 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Api
5
+ module User
6
+ module MobileQuery
7
+
8
+ # 1.8 手机号查询
9
+ #
10
+ # @param contracts [ String ] 用户协议号
11
+ #
12
+ # @return [ Hash ] 结果集
13
+ # * :result [String] 业务结果:'S/F/P'
14
+ # * :request_params [Hash] 请求参数
15
+ # * :response [Object] 请求返回对象
16
+ # * :error_code [String] 错误代号
17
+ # * :error_msg [String] 错误信息
18
+ # * :data: 具体业务返回信息
19
+ # * :contracts [String] 用户协议号
20
+ # * :mobile [String] 用户手机号
21
+ #
22
+
23
+
24
+ def mobile_query(contracts)
25
+ service = 'reapal.trust.mobileQuery'
26
+ post_path = '/reagw/user/restApi.htm'
27
+
28
+ params = {
29
+ contracts: contracts,
30
+ queryTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
31
+ }
32
+
33
+ response = Http.post(service, params, @config, post_path)
34
+
35
+ res = Reapal::Utils.api_result(params, response)
36
+
37
+ if Api::ErrorCode.mobile.include?(response.data[:errorcode])
38
+ res[:result] = 'F'
39
+ return res
40
+ end
41
+
42
+ # 查询类 api,http 没成功都返回 pending
43
+ return res unless response.http_success?
44
+
45
+ # 其余 api 错误不知道
46
+ return res unless response.data[:errorCode].nil?
47
+
48
+ res[:result] = "S"
49
+
50
+ res
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Reapal
4
4
  module Api
5
- module Trust
5
+ module User
6
6
  module OnekeyBatchContract
7
7
 
8
8
  # 1.1 个人一键签约(API)新版本,迁移老数据
@@ -44,37 +44,19 @@ module Reapal
44
44
 
45
45
  response = Http.post(service, params, @config, post_path)
46
46
 
47
- error_result = {
48
- data: nil,
49
- result: "F",
50
- error_msg: "未知错误",
51
- }
47
+ res = Reapal::Utils.api_result(params, response)
52
48
 
53
- # 如果数据不合法
54
- unless response.data_valid
55
- error_result[:error_msg] = "返回数据不合法"
56
- return error_result
57
- end
58
-
59
- # 如果网络出错,包括超时或者非200类数据
60
- unless response.http_response.kind_of?(Net::HTTPSuccess)
61
- error_result[:error_msg] = "网络出错"
62
- return error_result
63
- end
49
+ return res if response.http_pending?
64
50
 
65
51
  # 个人签约只有返回码是 '0000', '0007' 才成功
66
52
  if ['0000', '0007'].include?(response.data[:resultCode])
67
- return {
68
- data: response.data,
69
- result: "S",
70
- error_msg: nil,
71
- }
53
+ res[:result] = 'S'
54
+ res[:data] = response.data
72
55
  else
73
- # 普通错误
74
- error_result[:error_code] = response.data[:errorCode]
75
- error_result[:error_msg] = response.data[:errorMsg]
76
- return error_result
56
+ res[:result] = 'F'
77
57
  end
58
+
59
+ res
78
60
  end
79
61
 
80
62
  end # module Agree
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Api
5
+ module User
6
+ module OnekeyContract
7
+
8
+ # 1.2 个人一键签约(API)
9
+ #
10
+ # @param flow_id [ String ] 订单号
11
+ # @param true_name [ String ] 真实姓名
12
+ # @param identity_id [ String ] 身份证号
13
+ # @param phone [ String ] 手机号
14
+ # @param bus_way [ String ] 00:PC端;01:手机端;02:Pad端;03:其它
15
+ #
16
+ # @return [ Hash ] 结果集
17
+ # * :result [String] 业务结果:'S/F/P'
18
+ # * :request_params [Hash] 请求参数
19
+ # * :response [Object] 请求返回对象
20
+ # * :error_code [String] 错误代号
21
+ # * :error_msg [String] 错误信息
22
+ # * :data: 具体业务返回信息
23
+ # * :contracts [String] 用户签约协议号
24
+ # * :userName [String] 姓名
25
+ # * :userIdentity [String] 身份证
26
+ # * :userMobile [String] 手机号
27
+ #
28
+ def onekey_contract(flow_id, true_name, identity_id, phone, bus_way='01')
29
+ service = 'reapal.trust.onekeyContract'
30
+ post_path = '/reagw/agreement/agree.htm'
31
+
32
+ params = {
33
+ orderNo: flow_id,
34
+ userName: true_name,
35
+ userIdentity: identity_id,
36
+ userMobile: phone,
37
+ busway: bus_way,
38
+ remark: '',
39
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
40
+ }
41
+
42
+ response = Http.post(service, params, @config, post_path)
43
+
44
+ res = Reapal::Utils.api_result(params, response)
45
+
46
+ return res if response.http_pending? # 比如超时等操作
47
+
48
+ # 个人签约只有返回码是 '0000', '0007' 才成功
49
+ if ['0000', '0007'].include?(response.data[:resultCode])
50
+ res[:result] = 'S'
51
+ else
52
+ res[:result] = 'F'
53
+ end
54
+
55
+ res
56
+ end
57
+
58
+ end # module
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,60 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Api
5
+ module User
6
+ module UndoBindBankCard
7
+
8
+ # 1.13 撤销绑卡 (API)
9
+ #
10
+ # @param order_no [ String ] 订单号
11
+ # @param contract [ String ] 用户协议号
12
+ # @param bank_account_no [ String ] 银行卡信息(卡号后四位)
13
+ #
14
+ # @return [ Hash ] 结果集
15
+ # * :result [String] 业务结果:'S/F/P'
16
+ # * :request_params [Hash] 请求参数
17
+ # * :response [Object] 请求返回对象
18
+ # * :error_code [String] 错误代号
19
+ # * :error_msg [String] 错误信息
20
+ # * :data: 具体业务返回信息
21
+ # * :orderNo [String] 订单号
22
+ # * :resultCode [String] 结果代码 0000:撤销绑卡成功
23
+ #
24
+ def undo_bind_bank_card(order_no, contracts, bank_account_no)
25
+ service = 'reapal.trust.undoBindBankCard'
26
+ post_path = '/reagw/bankcard/undoBindBankApi.htm'
27
+
28
+ params = {
29
+ orderNo: order_no,
30
+ contracts: contracts,
31
+ bankAccountNo: bank_account_no,
32
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
33
+ }
34
+
35
+ response = Http.post(service, params, @config, post_path)
36
+
37
+ res = Reapal::Utils.api_result(params, response)
38
+
39
+ return res if response.http_pending? # 比如超时等操作
40
+
41
+ # 1,明确失败的
42
+ if Api::ErrorCode.bind_card.include?(response.data[:errorCode])
43
+ res[:result] = 'F'
44
+ return res
45
+ end
46
+
47
+ # 2. 明确正确的
48
+ if ['0000'].include?(response.data[:resultCode])
49
+ res[:result] = 'S'
50
+ return res
51
+ end
52
+
53
+ # 3. 其他错误 pending
54
+ res
55
+ end
56
+
57
+ end # module
58
+ end
59
+ end
60
+ end
@@ -19,6 +19,12 @@ module Reapal
19
19
 
20
20
  # 自动 include api 下的模块
21
21
  recursive_include_api('Reapal::Api')
22
+ # 自动 include form 下的模块
23
+ recursive_include_api('Reapal::Form')
24
+ end
25
+
26
+ def decode_data(encryptkey, data)
27
+ ::Reapal::Http::decode_data(encryptkey, data, @config)
22
28
  end
23
29
 
24
30
  private
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Form
5
+ module BusinessAuth
6
+
7
+ # 3.20 标的授权 (Form)
8
+ #
9
+ # @param flow_id [String] 业务订单号
10
+ # @param contracts [String] 用户协议号
11
+ # @param services [String] 授权服务 02一键投标 ,03 为一键还款 04 一键债转
12
+ # @param busway [String] 00:PC端;01:手机端;02:Pad端;03:其它
13
+ # @param auth_limit [String] 授权期限日期 YYYYMMDD
14
+ # @param tender_no [String] 标的号,授权为一键还款时必填
15
+ # @param return_url [String] 回调 url
16
+ # @param notify_url [String] 通知 url
17
+ #
18
+
19
+ # @return [ Hash ] 结果集
20
+ # * form_method
21
+ # * url
22
+ # * method
23
+ # * form_data
24
+ # * :merchant_id
25
+ # * :encryptkey
26
+ # * :data
27
+ #
28
+ def business_auth_form(flow_id, contracts, services, busway='01', auth_limit,
29
+ tender_no, return_url, notify_url)
30
+
31
+ service = 'reapal.trust.businessAuth'
32
+ post_path = '/reagw/tender/rest.htm'
33
+
34
+ params = {
35
+ orderNo: flow_id,
36
+ contracts: contracts,
37
+ services: services,
38
+ busway: busway,
39
+ authLimit: auth_limit,
40
+ tenderNo: tender_no,
41
+ returnUrl: return_url,
42
+ notifyUrl: notify_url,
43
+ remark: '',
44
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S')
45
+ }
46
+
47
+ request = Http.get_body(service, params, @config)
48
+
49
+ {
50
+ form_method: {
51
+ :url => config[:server_url] + post_path,
52
+ :method => :post,
53
+ },
54
+ form_data: request
55
+ }
56
+
57
+ end
58
+
59
+ end #BusinessAuth
60
+ end
61
+ end
@@ -0,0 +1,48 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Form
5
+ module FindTradePassowrdForm
6
+
7
+ # 1.9 设置/修改交易密码
8
+ #
9
+ # @param contract [String] 用户协议
10
+ # @param return_url [String] 回调 url
11
+ # @param notify_url [String] 通知 url
12
+ # @param buyway [String] 设备通道,默认手机端。00:PC端;01:手机端;02:Pad端;03:其它
13
+ #
14
+ # @return [ Hash ] 结果集
15
+ # * :form_method
16
+ # * :method
17
+ # * :url
18
+ # * :form_data
19
+ # * :merchant_id
20
+ # * :encryptkey
21
+ # * :data
22
+ #
23
+ def find_trade_password_form(contract, return_url, notify_url, busway='01')
24
+ service = 'reapal.trust.findTradePassword'
25
+ post_path = '/reagw/findTradePassword/findTradePassword.htm'
26
+
27
+ params = {
28
+ contracts: contract,
29
+ busway: busway,
30
+ returnUrl: return_url,
31
+ notifyUrl: notify_url,
32
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
33
+ }
34
+
35
+ form_data = Http.get_body(service, params, @config)
36
+
37
+ {
38
+ form_method: {
39
+ method: :post,
40
+ url: config[:server_url] + post_path,
41
+ },
42
+ form_data: form_data
43
+ }
44
+ end
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Form
5
+ module MobileModifyForm
6
+
7
+ # 1.7 签约手机号修改
8
+ #
9
+ # @param contract [String] 用户协议
10
+ # @param new_phone [String] 新手机号
11
+ # @param return_url [String] 回调 url
12
+ # @param notify_url [String] 通知 url
13
+ # @param buyway [String] 设备通道,默认手机端。00:PC端;01:手机端;02:Pad端;03:其它
14
+ #
15
+ # @return [ Hash ] 结果集
16
+ # * :form_method
17
+ # * :method
18
+ # * :url
19
+ # * :form_data
20
+ # * :merchant_id
21
+ # * :encryptkey
22
+ # * :data
23
+ #
24
+ def mobile_modify_form(contract, new_phone, return_url, notify_url, busway='01')
25
+ service = 'reapal.trust.mobileModify'
26
+ post_path = '/reagw/user/rest.htm'
27
+
28
+ params = {
29
+ contracts: contract,
30
+ mobile: new_phone,
31
+ busway: busway,
32
+ returnUrl: return_url,
33
+ notifyUrl: notify_url,
34
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
35
+ }
36
+
37
+ form_data = Http.get_body(service, params, @config)
38
+
39
+ {
40
+ form_method: {
41
+ method: :post,
42
+ url: config[:server_url] + post_path,
43
+ },
44
+ form_data: form_data
45
+ }
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,72 @@
1
+ # coding: utf-8
2
+
3
+ module Reapal
4
+ module Form
5
+ module SignleTenderTransfer
6
+
7
+ # 3.16 债权转让(Form)
8
+ #
9
+ # @param flow_id [String] 业务订单号
10
+ # @param tender_no [String] 转让方原投资标的号
11
+ # @param trans_capital [BigDecimal] 转让人出让的本金
12
+ # @param money [BigDecimal] 债权转让承接人应支付金额
13
+ # @param trans_contracts [String] 债权转让方在存管系统签约的协议号
14
+ # @param into_contracts [String] 债权承接方在存管系统签约的协议号
15
+ # @param transfer_type [String] 债转类型
16
+ # @param invest_order [String] 若transferType为1时,即首次债转时必传
17
+ # @param org_transfer_order [String] 若transferType 为2时,即N次债转时必传
18
+ # @param busway [String] 00:PC端;01:手机端;02:Pad端;03:其它
19
+ # @param return_url [String] 回调 url
20
+ # @param notify_url [String] 通知 url
21
+
22
+
23
+ # @return [ Hash ] 结果集
24
+ # * form_method
25
+ # * url
26
+ # * method
27
+ # * form_data
28
+ # * :merchant_id
29
+ # * :encryptkey
30
+ # * :data
31
+ #
32
+ def signle_tender_transfer_form(flow_id, tender_no, trans_capital, money, into_contracts,
33
+ transfer_type, invest_order, org_transfer_order, busway='01',
34
+ return_url, notify_url)
35
+
36
+ service = 'reapal.trust.signleTenderTransfer'
37
+ post_path = '/reagw/tender/rest.htm'
38
+
39
+ params = {
40
+ orderNo: flow_id,
41
+ tenderNo: tender_no,
42
+ transCapital: trans_capital,
43
+ amount: money,
44
+ transContracts: trans_contracts,
45
+ intoContracts: into_contracts,
46
+ fee: '',
47
+ feeType: '',
48
+ transferType: transfer_type,
49
+ investOrder: invest_order,
50
+ orgTransferOrder: org_transfer_order,
51
+ busway: busway,
52
+ returnUrl: return_url,
53
+ notifyUrl: notify_url,
54
+ remark: '',
55
+ applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S')
56
+ }
57
+
58
+ form_data = Http.get_body(service, params, @config)
59
+
60
+ {
61
+ form_method: {
62
+ :url => config[:server_url] + post_path,
63
+ :method => :post,
64
+ },
65
+ form_data: form_data
66
+ }
67
+
68
+ end
69
+
70
+ end #SignleTenderTransfer
71
+ end
72
+ end