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