unionpay 0.0.5 → 0.0.7
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/README.md +27 -4
- data/lib/unionpay/service.rb +37 -6
- data/lib/unionpay/utils.rb +7 -0
- data/lib/unionpay/version.rb +1 -1
- data/lib/unionpay.rb +1 -0
- data/test/unionpay/service_test.rb +14 -7
- data/unionpay.gemspec +1 -0
- metadata +17 -3
- data/Gemfile +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c330478dd7bddd9619bcd800e66926d355d20ca1
|
|
4
|
+
data.tar.gz: 8f3f0baa67df1ee8943f61e9956e4ea36f2cf406
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1aefe1ba238eb936e61337dd8884f8ccbd034d95f6825954a7d9c84acfbb997d36bc31143f661bb66e85b98b26a5d989cf9ab614f3c62f3c46f47efec297c5f
|
|
7
|
+
data.tar.gz: 75e0ad1e18b10857592377d592c2ceadb20ad6ccd9003984363cb4fa65fbabf4c44b580538a81d619602852695e6aca3ddba9bfab32d8ff746e0df8708410441
|
data/README.md
CHANGED
|
@@ -60,8 +60,6 @@ def unionpay_notify
|
|
|
60
60
|
end
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
63
|
### Generate back payment post params
|
|
66
64
|
|
|
67
65
|
```ruby
|
|
@@ -71,8 +69,7 @@ param = {}
|
|
|
71
69
|
param['transType'] = UnionPay::REFUND
|
|
72
70
|
param['origQid'] = '201110281442120195882' #原交易返回的qid, 从数据库中获取
|
|
73
71
|
param['orderAmount'] = 11000 #交易金额
|
|
74
|
-
param['orderNumber'] = '20131220151706'
|
|
75
|
-
param['orderTime'] = '20131220151706'
|
|
72
|
+
param['orderNumber'] = '20131220151706' #订单号,必须唯一(不能与原交易相同)
|
|
76
73
|
param['customerIp'] = '127.0.0.1' #用户IP
|
|
77
74
|
param['frontEndUrl'] = "" #前台回调URL, 后台交易可为空
|
|
78
75
|
param['backEndUrl'] = "http://www.example.com/sdk/utf8/back_notify.php" #后台回调URL
|
|
@@ -81,3 +78,29 @@ service = UnionPay::Service.back_pay(param)
|
|
|
81
78
|
service.args ## get args
|
|
82
79
|
service.post ## do post
|
|
83
80
|
```
|
|
81
|
+
|
|
82
|
+
### Query
|
|
83
|
+
|
|
84
|
+
```ruby
|
|
85
|
+
param = {}
|
|
86
|
+
param['transType'] = UnionPay::CONSUME
|
|
87
|
+
param['orderNumber'] = "20111108150703852"
|
|
88
|
+
param['orderTime'] = "20111108150703"
|
|
89
|
+
query = UnionPay::Service.query(param)
|
|
90
|
+
res = query.post
|
|
91
|
+
responce = UnionPay::Service.responce res.body_str
|
|
92
|
+
|
|
93
|
+
query_result = responce['queryResult']
|
|
94
|
+
resp_code = responce['respCode']
|
|
95
|
+
|
|
96
|
+
if query_result == UnionPay::QUERY_FAIL
|
|
97
|
+
puts "交易失败[respCode:#{resp_code}]!"
|
|
98
|
+
elsif query_result == UnionPay::QUERY_INVALID
|
|
99
|
+
puts "不存在此交易!"
|
|
100
|
+
elsif resp_code==UnionPay::RESP_SUCCESS && query_result == UnionPay::QUERY_SUCCESS
|
|
101
|
+
puts '交易成功!'
|
|
102
|
+
elsif resp_code==UnionPay::RESP_SUCCESS && query_result == UnionPay::QUERY_WAIT
|
|
103
|
+
puts '交易处理中,下次再查!'
|
|
104
|
+
end
|
|
105
|
+
#
|
|
106
|
+
```
|
data/lib/unionpay/service.rb
CHANGED
|
@@ -44,7 +44,7 @@ module UnionPay
|
|
|
44
44
|
raise('consume OR pre_auth transactions need cardNumber!')
|
|
45
45
|
end
|
|
46
46
|
else
|
|
47
|
-
raise('origQid is not provided') if self.args['origQid']
|
|
47
|
+
raise('origQid is not provided') if UnionPay.empty? self.args['origQid']
|
|
48
48
|
end
|
|
49
49
|
service
|
|
50
50
|
end
|
|
@@ -52,8 +52,17 @@ module UnionPay
|
|
|
52
52
|
|
|
53
53
|
def self.responce(param)
|
|
54
54
|
new.instance_eval do
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
if param.is_a? String
|
|
56
|
+
pattern = /cupReserved=(\{.*?\})/
|
|
57
|
+
cup_reserved = pattern.match(param)
|
|
58
|
+
if cup_reserved
|
|
59
|
+
cup_reserved = cup_reserved[1]
|
|
60
|
+
param.sub! pattern, 'cupReserved='
|
|
61
|
+
end
|
|
62
|
+
param = Rack::Utils.parse_nested_query param
|
|
63
|
+
end
|
|
64
|
+
cup_reserved ||= (param['cupReserved'] ||= '')
|
|
65
|
+
arr_reserved = Rack::Utils.parse_nested_query cup_reserved[1..-2]
|
|
57
66
|
if !param['signature'] || !param['signMethod']
|
|
58
67
|
raise('No signature Or signMethod set in notify data!')
|
|
59
68
|
end
|
|
@@ -62,13 +71,35 @@ module UnionPay
|
|
|
62
71
|
if param.delete('signature') != Service.sign(param)
|
|
63
72
|
raise('Bad signature returned!')
|
|
64
73
|
end
|
|
65
|
-
param.merge
|
|
66
|
-
|
|
67
|
-
self.args = param
|
|
74
|
+
self.args = param.merge arr_reserved
|
|
75
|
+
self.args.delete 'cupReserved'
|
|
68
76
|
self
|
|
69
77
|
end
|
|
70
78
|
end
|
|
71
79
|
|
|
80
|
+
def self.query(param)
|
|
81
|
+
new.instance_eval do
|
|
82
|
+
@api_url = UnionPay.query_url
|
|
83
|
+
param['version'] = UnionPay::PayParams['version']
|
|
84
|
+
param['charset'] = UnionPay::PayParams['charset']
|
|
85
|
+
param['merId'] = UnionPay::PayParams['merId']
|
|
86
|
+
|
|
87
|
+
if UnionPay.empty?(UnionPay::PayParams['merId']) && UnionPay.empty?(UnionPay::PayParams['acqCode'])
|
|
88
|
+
raise('merId and acqCode can\'t be both empty')
|
|
89
|
+
end
|
|
90
|
+
if !UnionPay.empty?(UnionPay::PayParams['acqCode'])
|
|
91
|
+
acqCode = UnionPay::PayParams['acqCode']
|
|
92
|
+
param['merReserved'] = "{acqCode=#{acqCode}}"
|
|
93
|
+
else
|
|
94
|
+
param['merReserved'] = ''
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
self.args = param
|
|
98
|
+
@param_check = UnionPay::QueryParamsCheck
|
|
99
|
+
|
|
100
|
+
service
|
|
101
|
+
end
|
|
102
|
+
end
|
|
72
103
|
|
|
73
104
|
def self.sign(args)
|
|
74
105
|
sign_str = args.sort.map do |k,v|
|
data/lib/unionpay/version.rb
CHANGED
data/lib/unionpay.rb
CHANGED
|
@@ -19,18 +19,13 @@ class UnionPay::ServiceTest < Test::Unit::TestCase
|
|
|
19
19
|
# PRE_AUTH_VOID(预授权撤销), PRE_AUTH_COMPLETE(预授权完成), PRE_AUTH_VOID_COMPLETE(预授权完成撤销)
|
|
20
20
|
param = {}
|
|
21
21
|
param['transType'] = UnionPay::REFUND
|
|
22
|
-
|
|
23
22
|
param['origQid'] = '201110281442120195882'; #原交易返回的qid, 从数据库中获取
|
|
24
|
-
|
|
25
23
|
param['orderAmount'] = 11000; #交易金额
|
|
26
24
|
param['orderNumber'] = '20131220151706'
|
|
27
|
-
param['orderTime'] = '20131220151706'
|
|
28
|
-
|
|
29
25
|
param['customerIp'] = '127.0.0.1'; #用户IP
|
|
30
26
|
param['frontEndUrl'] = "" #前台回调URL, 后台交易可为空
|
|
31
27
|
param['backEndUrl'] = "http://www.example.com/sdk/utf8/back_notify.php" #后台回调URL
|
|
32
28
|
UnionPay::Service.back_pay(param)
|
|
33
|
-
|
|
34
29
|
end
|
|
35
30
|
|
|
36
31
|
def test_generate_form
|
|
@@ -47,8 +42,7 @@ class UnionPay::ServiceTest < Test::Unit::TestCase
|
|
|
47
42
|
|
|
48
43
|
def test_back_pay_service
|
|
49
44
|
dev_form = generate_back_pay_service
|
|
50
|
-
|
|
51
|
-
assert dev_form.post
|
|
45
|
+
assert_not_nil dev_form.post
|
|
52
46
|
end
|
|
53
47
|
def test_responce
|
|
54
48
|
test = {
|
|
@@ -65,4 +59,17 @@ class UnionPay::ServiceTest < Test::Unit::TestCase
|
|
|
65
59
|
assert UnionPay::Service.responce(test).args['respCode'] == UnionPay::RESP_SUCCESS
|
|
66
60
|
end
|
|
67
61
|
|
|
62
|
+
def test_query
|
|
63
|
+
assert_raise_message 'Bad signature returned!' do
|
|
64
|
+
param = {}
|
|
65
|
+
param['transType'] = UnionPay::CONSUME
|
|
66
|
+
param['orderNumber'] = "20111108150703852"
|
|
67
|
+
param['orderTime'] = "20111108150703"
|
|
68
|
+
UnionPay.environment = :production
|
|
69
|
+
query = UnionPay::Service.query(param)
|
|
70
|
+
res = query.post
|
|
71
|
+
responce = UnionPay::Service.responce res.body_str
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
68
75
|
end
|
data/unionpay.gemspec
CHANGED
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
+
spec.add_runtime_dependency "curb"
|
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
22
23
|
spec.add_development_dependency "rake"
|
|
23
24
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: unionpay
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-12-
|
|
11
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: curb
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: bundler
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -45,12 +59,12 @@ executables: []
|
|
|
45
59
|
extensions: []
|
|
46
60
|
extra_rdoc_files: []
|
|
47
61
|
files:
|
|
48
|
-
- Gemfile
|
|
49
62
|
- README.md
|
|
50
63
|
- Rakefile
|
|
51
64
|
- lib/unionpay.rb
|
|
52
65
|
- lib/unionpay/conf.rb
|
|
53
66
|
- lib/unionpay/service.rb
|
|
67
|
+
- lib/unionpay/utils.rb
|
|
54
68
|
- lib/unionpay/version.rb
|
|
55
69
|
- test/test_helper.rb
|
|
56
70
|
- test/unionpay/service_test.rb
|
data/Gemfile
DELETED