ccb_connect_client 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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