alipay_global 0.0.4 → 0.0.5
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/alipay_global.rb +1 -0
- data/lib/alipay_global/service/settlement.rb +75 -0
- data/lib/alipay_global/service/trade.rb +0 -2
- data/lib/alipay_global/version.rb +1 -1
- data/test/service/settlement_test.rb +72 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e25a163c6a105f882363330ab4c883b76dcd9cc
|
4
|
+
data.tar.gz: d87038772fa03ac173230766ea799f3a4d801938
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4203de1fbf2710247b042217ba1021c88614a38218f26eb18c20cfcf7b1cad31d6169ef7ffcab73ef8746509b543f8f4eab5998c1f2872b21d3583fd89a17f47
|
7
|
+
data.tar.gz: 47c2678c31ef89aacaca21fd6535ff2ffd67278b490409e307771747d1d275c9a6ba42f9c3a9f4383d3faf82b6a3ab92a5f29c7c071d34fa67d5df1fda520c64
|
data/lib/alipay_global.rb
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module AlipayGlobal
|
4
|
+
module Service
|
5
|
+
module Settlement
|
6
|
+
|
7
|
+
RequestError = Class.new(RuntimeError)
|
8
|
+
|
9
|
+
SETTLEMENT_REQUIRED_PARAMS = %w( start_date end_date )
|
10
|
+
|
11
|
+
SETTLEMENT_ERROR_MESSAGES = [
|
12
|
+
"Over 10 days to Date period",
|
13
|
+
"Over limit balance amount record",
|
14
|
+
"System exception",
|
15
|
+
"No balance amount data in the period",
|
16
|
+
"<alipay><is_success>F</is_success><error>ILLEGAL_PARTNER</error></alipay>",
|
17
|
+
"Finish date not ahead of today",
|
18
|
+
"Finish date ahead of begin date",
|
19
|
+
"Illegal Date period!",
|
20
|
+
"Date format incorrect YYYYMMDD",
|
21
|
+
"Internet connected exception ,please try later"
|
22
|
+
]
|
23
|
+
|
24
|
+
def self.request(params)
|
25
|
+
settlement_resp = []
|
26
|
+
open(build_request(params)) do |data|
|
27
|
+
results = data.read
|
28
|
+
|
29
|
+
return false if results.include? "No balance account data in the period"
|
30
|
+
raise RequestError, "#{results}" if error_check(results)
|
31
|
+
|
32
|
+
results.each_line do |line|
|
33
|
+
transaction = line.strip.split("|")
|
34
|
+
|
35
|
+
settlement_resp << {
|
36
|
+
partner_transaction_id: transaction[0],
|
37
|
+
amount: transaction[1],
|
38
|
+
currency: transaction[2],
|
39
|
+
payment_time: valid_alipay_date(transaction[3]) ? DateTime.strptime(transaction[3],"%Y%m%d%H%M%S") : '',
|
40
|
+
settlement_time: valid_alipay_date(transaction[4]) ? DateTime.strptime(transaction[4],"%Y%m%d%H%M%S") : '',
|
41
|
+
transaction_type: transaction[5],
|
42
|
+
service_charge: transaction[6],
|
43
|
+
status: transaction[7],
|
44
|
+
remarks: transaction[8] ? transaction[8] : ''
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
settlement_resp
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.build_request(params)
|
53
|
+
AlipayGlobal::Service.check_required_params(params, SETTLEMENT_REQUIRED_PARAMS)
|
54
|
+
|
55
|
+
params = AlipayGlobal::Utils.stringify_keys(params)
|
56
|
+
|
57
|
+
params = {
|
58
|
+
'service' => 'forex_liquidation_file',
|
59
|
+
'partner' => AlipayGlobal.api_partner_id,
|
60
|
+
}.merge(params)
|
61
|
+
|
62
|
+
AlipayGlobal::Service.request_uri(params).to_s
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.error_check(data)
|
66
|
+
SETTLEMENT_ERROR_MESSAGES.any? { |w| data =~ /#{w}/ }
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.valid_alipay_date(raw_date)
|
70
|
+
raw_date && raw_date.length > 0
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -84,8 +84,6 @@ module AlipayGlobal
|
|
84
84
|
alipay_resp = Nokogiri::XML(resp.body)
|
85
85
|
|
86
86
|
alipay_results = alipay_resp.at_xpath('//alipay')
|
87
|
-
#puts "success = " + alipay_results.at_xpath('//is_success').content
|
88
|
-
#puts "error = " + alipay_results.at_xpath('//error').content
|
89
87
|
|
90
88
|
file.unlink
|
91
89
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'test_config'
|
2
|
+
|
3
|
+
describe "AlipayGlobal::Service::Settlement", "Settlement request check" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@alipay = AlipayGlobal
|
7
|
+
@alipay.api_partner_id = '2088101122136241'
|
8
|
+
@alipay.api_secret_key = '760bdzec6y9goq7ctyx96ezkz78287de'
|
9
|
+
|
10
|
+
@params = {
|
11
|
+
'start_date'=> '20120202',
|
12
|
+
'end_date'=> '20120205'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#build_request" do
|
17
|
+
it "should get params correctly" do
|
18
|
+
assert_equal "https://mapi.alipay.net/gateway.do?service=forex_liquidation_file&partner=2088101122136241&start_date=20120202&end_date=20120205&sign_type=MD5&sign=68c26fcba73dc3134bc88bb04a8be865", @alipay::Service::Settlement.build_request(@params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#request" do
|
23
|
+
describe "Error scenarios" do
|
24
|
+
|
25
|
+
it "return false for no records in period" do
|
26
|
+
assert_equal false, @alipay::Service::Settlement.request(@params)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should throw an AlipayGlobal::Service::Settlement::RequestError for date range > 10 days" do
|
30
|
+
proc{ (@alipay::Service::Settlement.request({
|
31
|
+
'start_date'=> '20120202',
|
32
|
+
'end_date'=> '20120305'
|
33
|
+
})).call }.must_raise(AlipayGlobal::Service::Settlement::RequestError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should throw an AlipayGlobal::Service::Settlement::RequestError for an errorneous date range" do
|
37
|
+
proc{ (@alipay::Service::Settlement.request({
|
38
|
+
'start_date'=> '20130202',
|
39
|
+
'end_date'=> '20120305'
|
40
|
+
})).call }.must_raise(AlipayGlobal::Service::Settlement::RequestError)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should throw an AlipayGlobal::Service::Settlement::RequestError for no dates supplied (or nil)" do
|
44
|
+
proc{ (@alipay::Service::Settlement.request({})).call }.must_raise(AlipayGlobal::Service::Settlement::RequestError)
|
45
|
+
proc{ (@alipay::Service::Settlement.request(nil)).call }.must_raise(NoMethodError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should throw an AlipayGlobal::Service::Settlement::RequestError for finish date ahead of today" do
|
49
|
+
proc{ (@alipay::Service::Settlement.request({
|
50
|
+
'start_date'=> '20151300',
|
51
|
+
'end_date'=> '20151333'
|
52
|
+
})).call }.must_raise(AlipayGlobal::Service::Settlement::RequestError)
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "Incorrect Merchant" do
|
56
|
+
before do
|
57
|
+
@alipay.api_partner_id = 'daftpunk'
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should throw an AlipayGlobal::Service::Settlement::RequestError for Merchant ID incorrect" do
|
61
|
+
proc{ (@alipay::Service::Settlement.request(@params)).call }.must_raise(AlipayGlobal::Service::Settlement::RequestError)
|
62
|
+
end
|
63
|
+
|
64
|
+
after do
|
65
|
+
@alipay.api_partner_id = '2088101122136241'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alipay_global
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Melvrick Goh, Ng Junyang, Grzegorz Witek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/alipay_global/service/exchange.rb
|
115
115
|
- lib/alipay_global/service/notification.rb
|
116
116
|
- lib/alipay_global/service/reconciliation.rb
|
117
|
+
- lib/alipay_global/service/settlement.rb
|
117
118
|
- lib/alipay_global/service/trade.rb
|
118
119
|
- lib/alipay_global/sign.rb
|
119
120
|
- lib/alipay_global/sign/dsa.rb
|
@@ -125,6 +126,7 @@ files:
|
|
125
126
|
- test/service/exchange_test.rb
|
126
127
|
- test/service/notification_test.rb
|
127
128
|
- test/service/reconciliation_test.rb
|
129
|
+
- test/service/settlement_test.rb
|
128
130
|
- test/service/trade_test.rb
|
129
131
|
- test/service_test.rb
|
130
132
|
- test/sign/dsa_test.rb
|
@@ -153,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
155
|
version: '0'
|
154
156
|
requirements: []
|
155
157
|
rubyforge_project:
|
156
|
-
rubygems_version: 2.
|
158
|
+
rubygems_version: 2.2.2
|
157
159
|
signing_key:
|
158
160
|
specification_version: 4
|
159
161
|
summary: An unofficial simple global.alipay gem
|
@@ -162,6 +164,7 @@ test_files:
|
|
162
164
|
- test/service/exchange_test.rb
|
163
165
|
- test/service/notification_test.rb
|
164
166
|
- test/service/reconciliation_test.rb
|
167
|
+
- test/service/settlement_test.rb
|
165
168
|
- test/service/trade_test.rb
|
166
169
|
- test/service_test.rb
|
167
170
|
- test/sign/dsa_test.rb
|