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 +4 -4
- data/lib/ccb_connect_client/models/payment_details_query_request.rb +17 -18
- data/lib/ccb_connect_client/models/payment_details_query_response.rb +50 -30
- data/lib/ccb_connect_client/models/refund_request.rb +3 -5
- data/lib/ccb_connect_client/models/refund_response.rb +3 -3
- data/lib/ccb_connect_client/service.rb +33 -38
- data/lib/ccb_connect_client/version.rb +1 -1
- data/lib/ccb_connect_client.rb +2 -1
- data/spec/ccb_connect_client_service_spec.rb +33 -15
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e117ad6c14f5c141c0bf6e60e2b8fd0ed7daa25
|
4
|
+
data.tar.gz: 733eddbfe7f51f2361ec145dbf4c3ead8123f422
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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, :
|
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
|
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
|
-
|
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
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
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
|
-
|
26
|
+
xml.REFUND_CODE "#{@refund_code}"
|
27
27
|
}
|
28
|
-
|
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
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
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
|
data/lib/ccb_connect_client.rb
CHANGED
@@ -2,28 +2,46 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe CcbConnectClient::Service do
|
4
4
|
|
5
|
-
it 'should be successful' do
|
6
|
-
|
7
|
-
CcbConnectClient.
|
8
|
-
CcbConnectClient.
|
9
|
-
CcbConnectClient.
|
10
|
-
CcbConnectClient.
|
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
|
-
|
19
|
-
CcbConnectClient.
|
20
|
-
CcbConnectClient.
|
21
|
-
CcbConnectClient.
|
22
|
-
CcbConnectClient.
|
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
|
-
|
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
|