ccb_connect_client 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 3aa8b35d86e633600a752178983e3c81e1ff98c3
4
- data.tar.gz: 9c79175e570d327e7c00e5f4f3c3ef966ebe71e2
3
+ metadata.gz: 3e117ad6c14f5c141c0bf6e60e2b8fd0ed7daa25
4
+ data.tar.gz: 733eddbfe7f51f2361ec145dbf4c3ead8123f422
5
5
  SHA512:
6
- metadata.gz: 83ba2ada8f3df3828d4b0834248af25264a1224029f17cae41fbd6927882ad3443c293b9ee0de571e13e3c379a46605a56e139bf6768d6395e56a0340cd617f6
7
- data.tar.gz: af807df5ef7a8de5553faa036a1cf1fc9572a16cc8433f9630561cf176578346e2c0eaa385b2987b439cbf70c872c664df950e3268289fe1f090fd547816e688
6
+ metadata.gz: 0c64881a50068ed9739feca15520deb9b4c513385c94bb2712674e2569e7beac9fa2b981018e568a26681aba7256e7992c1c0f8bffdb446882ab62dfdef676e2
7
+ data.tar.gz: c853bded6d4e251e0e2ee6327163c06eb8803bda21e721eed523ab7adc8f52be596fbe1affe8173c738604de3a7be2af8c90a9d01ef419969e34e13ba09cdb55
@@ -3,7 +3,8 @@ require 'builder'
3
3
  module CcbConnectClient
4
4
 
5
5
  class PaymentDetailsQueryRequest < BaseRequest
6
- attr_accessor :order
6
+ attr_accessor :order, :start_day, :start_hour, :start_min, :end_day, :end_hour, :end_min, :kind,
7
+ :account, :dexcel, :money, :norderby, :page, :pos_code, :status, :mrch_no
7
8
 
8
9
  def initialize
9
10
  super
@@ -21,22 +22,22 @@ module CcbConnectClient
21
22
  xml.TX_CODE "#{@tx_code}"
22
23
  xml.LANGUAGE "#{CcbConnectClient.language}"
23
24
  xml.TX_INFO{
24
- # xml.START "#{@start_day}"
25
- # xml.STARTHOUR "#{@start_hour}"
26
- # xml.STARTMIN "#{@start_min}"
27
- # xml.END "#{@end_day}"
28
- # xml.ENDHOUR "#{@end_hour}"
29
- # xml.ENDMIN "#{@end_min}"
30
- # xml.KIND "0"
25
+ xml.START "#{@start_day}"
26
+ xml.STARTHOUR "#{@start_hour}"
27
+ xml.STARTMIN "#{@start_min}"
28
+ xml.END "#{@end_day}"
29
+ xml.ENDHOUR "#{@end_hour}"
30
+ xml.ENDMIN "#{@end_min}"
31
+ xml.KIND "#{@kind}"
31
32
  xml.ORDER "#{@order}"
32
- # xml.ACCOUNT ""
33
- # xml.DEXCEL "1"
34
- # xml.MONEY "#{@money}"
35
- # xml.NORDERBY "1"
36
- # xml.PAGE "1"
37
- # xml.POS_CODE ""
38
- # xml.STATUS ""
39
- # xml.Mrch_No ""
33
+ xml.ACCOUNT "#{@account}"
34
+ xml.DEXCEL "#{@dexcel}"
35
+ xml.MONEY "#{@money}"
36
+ xml.NORDERBY "#{@norderby}"
37
+ xml.PAGE "#{@page}"
38
+ xml.POS_CODE "#{@pos_code}"
39
+ xml.STATUS "#{@status}"
40
+ xml.Mrch_No "#{@mrch_no}"
40
41
  }
41
42
  }
42
43
  target = xml.target!
@@ -45,7 +46,5 @@ module CcbConnectClient
45
46
  end
46
47
  target
47
48
  end
48
-
49
49
  end
50
-
51
50
  end
@@ -5,19 +5,21 @@ include REXML
5
5
  module CcbConnectClient
6
6
 
7
7
  class PaymentDetailsQueryResponse < BaseResponse
8
- attr_accessor :cust_id, :tx_code, :language, :cur_page, :page_count, :notice, :tran_date, :acc_date,
9
- :order, :account, :acc_name, :payment_money, :refund_money, :pos_id, :rem1, :order_status, :order_status_name
8
+ attr_accessor :cust_id, :tx_code, :language, :cur_page, :page_count, :notice, :list
10
9
 
11
10
  def initialize
12
11
  super
13
12
  end
14
13
 
15
- def self.from_xml xml
14
+ def from_xml xml
16
15
  response = PaymentDetailsQueryResponse.new
17
16
  doc = Document.new(xml)
17
+ # logger = Logger.new('foo.log', 'monthly')
18
+ # logger.datetime_format = '%Y-%m-%d %H:%M:%S'
18
19
 
19
20
  if CcbConnectClient.debug_mode
20
- puts "RefundResponse response : #{doc}"
21
+ # logger.info("PaymentDetailsQueryResponse response xml: #{doc}")
22
+ puts "PaymentDetailsQueryResponse response xml: #{doc}"
21
23
  end
22
24
 
23
25
  response.request_sn = doc.elements["TX/REQUEST_SN"].text
@@ -29,37 +31,55 @@ module CcbConnectClient
29
31
  # INFO
30
32
  response.cur_page = doc.elements["TX/TX_INFO/CUR_PAGE"].text
31
33
  response.page_count = doc.elements["TX/TX_INFO/PAGE_COUNT"].text
34
+ response.list = Array.new
32
35
  # LIST
33
- response.tran_date = doc.elements["TX/TX_INFO/LIST/TRAN_DATE"].text
34
- response.acc_date = doc.elements["TX/TX_INFO/LIST/ACC_DATE"].text
35
- response.order = doc.elements["TX/TX_INFO/LIST/ORDER"].text
36
- response.account = doc.elements["TX/TX_INFO/LIST/ACCOUNT"].text
37
- response.acc_name = doc.elements["TX/TX_INFO/LIST/ACC_NAME"].text
38
- response.payment_money = doc.elements["TX/TX_INFO/LIST/PAYMENT_MONEY"].text
39
- response.refund_money = doc.elements["TX/TX_INFO/LIST/REFUND_MONEY"].text
40
- response.pos_id = doc.elements["TX/TX_INFO/LIST/POS_ID"].text
41
- response.rem1 = doc.elements["TX/TX_INFO/LIST/REM1"].text
42
- response.order_status = doc.elements["TX/TX_INFO/LIST/ORDER_STATUS"].text
43
-
44
- case response.order_status
45
- when '0'
46
- response.order_status_name = "失败"
47
- when '1'
48
- response.order_status_name = "成功"
49
- when '2'
50
- response.order_status_name = "待银行确认"
51
- when '3'
52
- response.order_status_name = "已部分退款"
53
- when '4'
54
- response.order_status_name = "已全额退款"
55
- else
56
- response.order_status_name = "待银行确认"
57
- end
36
+ doc.elements.each("TX/TX_INFO/LIST") { |e|
37
+ response_element = PaymentDetailsQueryResponseElement.new
38
+ response_element.tran_date = e.elements["TRAN_DATE"].text
39
+ response_element.acc_date = e.elements["ACC_DATE"].text
40
+ response_element.order = e.elements["ORDER"].text
41
+ response_element.account = e.elements["ACCOUNT"].text
42
+ response_element.acc_name = e.elements["ACC_NAME"].text
43
+ response_element.payment_money = e.elements["PAYMENT_MONEY"].text
44
+ response_element.refund_money = e.elements["REFUND_MONEY"].text
45
+ response_element.pos_id = e.elements["POS_ID"].text
46
+ response_element.rem1 = e.elements["REM1"].text
47
+ response_element.rem2 = e.elements["REM2"].text
48
+ order_status = OrderStatus.new
49
+ order_status.status = e.elements["ORDER_STATUS"].text
50
+ case order_status.status
51
+ when '0'
52
+ order_status.status_name = "失败"
53
+ when '1'
54
+ order_status.status_name = "成功"
55
+ when '2'
56
+ order_status.status_name = "待银行确认"
57
+ when '3'
58
+ order_status.status_name = "已部分退款"
59
+ when '4'
60
+ order_status.status_name = "已全额退款"
61
+ when '5'
62
+ order_status.status_name = "待银行确认"
63
+ end
64
+ response_element.order_status = order_status
65
+ response.list.push(response_element)
66
+ }
58
67
 
59
68
  if CcbConnectClient.debug_mode
60
- puts "RefundResponse response : #{response.inspect}"
69
+ # logger.info("PaymentDetailsQueryResponse response xml: #{doc}")
70
+ puts "PaymentDetailsQueryResponse response object: #{response.inspect}"
61
71
  end
62
72
  response
63
73
  end
64
74
  end
75
+
76
+ class PaymentDetailsQueryResponseElement
77
+ attr_accessor :tran_date, :acc_date, :order, :account, :acc_name, :payment_money, :refund_money,
78
+ :pos_id, :rem1, :rem2, :order_status
79
+ end
80
+
81
+ class OrderStatus
82
+ attr_accessor :status, :status_name
83
+ end
84
+
65
85
  end
@@ -3,7 +3,7 @@ require 'builder'
3
3
  module CcbConnectClient
4
4
 
5
5
  class RefundRequest < BaseRequest
6
- attr_accessor :money, :order, :refund_code
6
+ attr_accessor :money, :order, :refund_code, :sign_info
7
7
 
8
8
  def initialize
9
9
  super
@@ -23,9 +23,9 @@ module CcbConnectClient
23
23
  xml.TX_INFO{
24
24
  xml.MONEY "#{@money}"
25
25
  xml.ORDER "#{@order}"
26
- #xml.REFUND_CODE "#{@refund_code}"
26
+ xml.REFUND_CODE "#{@refund_code}"
27
27
  }
28
- #xml.SIGN_INFO "#{}"
28
+ xml.SIGN_INFO "#{@sign_info}"
29
29
  }
30
30
  target = xml.target!
31
31
  if CcbConnectClient.debug_mode
@@ -33,7 +33,5 @@ module CcbConnectClient
33
33
  end
34
34
  target
35
35
  end
36
-
37
36
  end
38
-
39
37
  end
@@ -10,12 +10,12 @@ module CcbConnectClient
10
10
  super
11
11
  end
12
12
 
13
- def self.from_xml xml
13
+ def from_xml xml
14
14
  response = RefundResponse.new
15
15
  doc = Document.new(xml)
16
16
 
17
17
  if CcbConnectClient.debug_mode
18
- puts "RefundResponse response : #{doc}"
18
+ puts "RefundResponse response xml: #{doc}"
19
19
  end
20
20
 
21
21
  response.request_sn = doc.elements["TX/REQUEST_SN"].text
@@ -30,7 +30,7 @@ module CcbConnectClient
30
30
  response.amount = doc.elements["TX/TX_INFO/AMOUNT"].text
31
31
 
32
32
  if CcbConnectClient.debug_mode
33
- puts "RefundResponse response : #{response.inspect}"
33
+ puts "RefundResponse response object: #{response.inspect}"
34
34
  end
35
35
  response
36
36
  end
@@ -4,51 +4,46 @@ require 'uri'
4
4
  module CcbConnectClient
5
5
 
6
6
  module Service
7
- def self.refund refund_request
8
- res = http_post_form CcbConnectClient.server, refund_request.to_xml
9
- doc = Document.new(res.body)
10
-
11
- if doc.elements["TX/RETURN_CODE"].text != "000000"
12
- response = BaseResponse.from_xml res.body
13
- response.successful = false
14
- response
15
- else
16
- response = RefundResponse.from_xml res.body
17
- response.successful = true
18
-
19
- if CcbConnectClient.debug_mode
20
- puts "RefundResponse response : #{response.inspect}"
21
- end
22
-
23
- response
24
- end
25
7
 
8
+ def self.refund refund_request
9
+ refund_response = RefundResponse.new
10
+ Handler.new.response_handler refund_request, refund_response
26
11
  end
27
12
 
28
13
  def self.payment_details_query payment_details_query_request
29
- res = http_post_form CcbConnectClient.server, payment_details_query_request.to_xml
30
- doc = Document.new(res.body)
31
-
32
- if doc.elements["TX/RETURN_CODE"].text != "000000"
33
- response = BaseResponse.from_xml res.body
34
- response.successful = false
35
- response
36
- else
37
- response = PaymentDetailsQueryResponse.from_xml res.body
38
- response.successful = true
39
-
40
- if CcbConnectClient.debug_mode
41
- puts "PaymentDetailsQueryResponse response : #{response.inspect}"
42
- end
14
+ payment_details_query_response = PaymentDetailsQueryResponse.new
15
+ Handler.new.response_handler payment_details_query_request, payment_details_query_response
16
+ end
17
+
18
+ class Handler
43
19
 
44
- response
20
+ def response_handler(request, response)
21
+
22
+ http_post_form CcbConnectClient.server, request.to_xml do |res|
23
+ doc = Document.new(res.body)
24
+
25
+ if doc.elements["TX/RETURN_CODE"].text != "000000"
26
+ result = BaseResponse.from_xml res.body
27
+ result.successful = false
28
+ else
29
+ result = response.from_xml res.body
30
+ result.successful = true
31
+ end
32
+ end
45
33
  end
46
34
 
35
+ private
36
+ def http_post_form(url, xml)
37
+ uri = URI.parse(url)
38
+ req = Net::HTTP::Post.new(uri)
39
+ req["Content-Type"] = "application/x-www-form-urlencoded"
40
+ req["Accept-Encoding"] = "identity"
41
+ Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
42
+ req.set_form_data('requestXml' => xml)
43
+ res = http.request req
44
+ yield res
45
+ end
46
+ end
47
47
  end
48
-
49
- def self.http_post_form(url, xml)
50
- response = Net::HTTP.post_form URI(url), requestXml: xml
51
- end
52
-
53
48
  end
54
49
  end
@@ -1,3 +1,3 @@
1
1
  module CcbConnectClient
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
@@ -12,7 +12,8 @@ module CcbConnectClient
12
12
 
13
13
  class<< self
14
14
  attr_accessor :server, :debug_mode
15
- attr_accessor :cust_id, :user_id, :password, :language
15
+ attr_accessor :cust_id, :user_id, :password, :language
16
+ attr_accessor :logger
16
17
  end
17
18
 
18
19
  end
@@ -2,28 +2,46 @@ require 'spec_helper'
2
2
 
3
3
  describe CcbConnectClient::Service do
4
4
 
5
- it 'should be successful' do
6
- CcbConnectClient.server = "http://192.168.10.90:9000"
7
- CcbConnectClient.cust_id = '105000148164407'
8
- CcbConnectClient.user_id = '001'
9
- CcbConnectClient.password = 'SbusTrade9'
10
- CcbConnectClient.language = 'CN'
5
+ it 'RefundRequest should be successful' do
6
+ file_lines = File.open("./spec/fixtures/Adminfile.txt","r").readlines
7
+ CcbConnectClient.server = file_lines[0].gsub("\n", '').split(pattern='\'')[1]
8
+ CcbConnectClient.cust_id = file_lines[1].gsub("\n", '').split(pattern='\'')[1]
9
+ CcbConnectClient.user_id = file_lines[2].gsub("\n", '').split(pattern='\'')[1]
10
+ CcbConnectClient.password = file_lines[3].gsub("\n", '').split(pattern='\'')[1]
11
+ CcbConnectClient.language = file_lines[4].split(pattern='\'')[1]
11
12
  request = CcbConnectClient::RefundRequest.new
12
13
  request.money = 7.01
13
14
  request.order = 'L238201903071717YKIHNW'
14
15
  CcbConnectClient::Service.refund request
15
16
  end
16
17
 
17
- it 'should be successful' do
18
- CcbConnectClient.server = "http://192.168.10.90:9000"
19
- CcbConnectClient.cust_id = '105000148164407'
20
- CcbConnectClient.user_id = '001'
21
- CcbConnectClient.password = 'SbusTrade9'
22
- CcbConnectClient.language = 'CN'
18
+ it 'PaymentDetailsQueryRequest should be successful' do
19
+ file_lines = File.open("./spec/fixtures/Adminfile.txt","r").readlines
20
+ CcbConnectClient.server = file_lines[0].gsub("\n", '').split(pattern='\'')[1]
21
+ CcbConnectClient.cust_id = file_lines[1].gsub("\n", '').split(pattern='\'')[1]
22
+ CcbConnectClient.user_id = file_lines[2].gsub("\n", '').split(pattern='\'')[1]
23
+ CcbConnectClient.password = file_lines[3].gsub("\n", '').split(pattern='\'')[1]
24
+ CcbConnectClient.language = file_lines[4].split(pattern='\'')[1]
23
25
  request = CcbConnectClient::PaymentDetailsQueryRequest.new
24
26
  # request.money = 7.01
25
- request.order = 'L238201903071717YKIHNW'
27
+ # :start_day, :start_hour, :start_min, :end_day, :end_hour, :end_min, :kind,
28
+ # :account, :dexcel, :money, :norderby, :page, :pos_code, :status, :mrch_no
29
+ # request.order = 'L238201903071717YKIHNW'
30
+ request.start_day = '20190306'
31
+ request.start_hour = '00'
32
+ request.start_min = '00'
33
+ request.end_day = '20190312'
34
+ request.end_hour = '14'
35
+ request.end_min = '20'
36
+ request.kind = '1'
37
+ # request.account = '20190306'
38
+ request.dexcel = '1'
39
+ # request.money = '20190306'
40
+ request.norderby = '1'
41
+ request.page = '1'
42
+ # request.pos_code = '20190306'
43
+ request.status = '3'
44
+ # request.mrch_no = '20190306'
26
45
  CcbConnectClient::Service.payment_details_query request
27
46
  end
28
-
29
- end
47
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ccb_connect_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - LCola