ll_pay 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +16 -0
- data/README.md +10 -0
- data/lib/ll_pay/notify.rb +12 -1
- data/lib/ll_pay/query_order.rb +3 -9
- data/lib/ll_pay/service.rb +19 -6
- data/lib/ll_pay/sign/rsa.rb +1 -1
- data/lib/ll_pay/sign.rb +1 -0
- data/lib/ll_pay/version.rb +1 -1
- data/lib/ll_pay.rb +8 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcedd354ff169462ae37deb0692af982e7c9ef6b
|
4
|
+
data.tar.gz: 49b924a08cf20be00e1985ec301bce7f23e2341d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29a8a7d4607768e556524966faed7e286c6e784b157e5d5f3f6deaaeddf65d72524710f5ea57fefb38141c0bcd58465fad6a833d7ef1a9a392775f3ea81929db
|
7
|
+
data.tar.gz: 868cc82455b22c4737cc10dbe77784cb625622f77978ef49fd3270dc1bdfadfde5bb8714b73ddfb10e49e88ea3a9820dea7696f288bc7401d705fe4bf70b7fe4
|
data/.codeclimate.yml
ADDED
data/README.md
CHANGED
@@ -44,3 +44,13 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
44
44
|
|
45
45
|
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ll_pay.
|
46
46
|
|
47
|
+
|
48
|
+
[version-badge]: https://badge.fury.io/rb/ll_pay.svg
|
49
|
+
[rubygems]: https://rubygems.org/gems/ll_pay
|
50
|
+
[travis-badge]: https://travis-ci.org/bayetech/ll_pay.svg
|
51
|
+
[travis]: https://travis-ci.org/bayetech/ll_pay
|
52
|
+
[codeclimate-badge]: https://codeclimate.com/github/bayetech/ll_pay/badges/gpa.svg
|
53
|
+
[codeclimate]: https://codeclimate.com/github/bayetech/ll_pay
|
54
|
+
[codecoverage-badge]: https://codeclimate.com/github/bayetech/ll_pay/badges/coverage.svg
|
55
|
+
[codecoverage]: https://codeclimate.com/github/bayetech/ll_pay/coverage
|
56
|
+
|
data/lib/ll_pay/notify.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
module LlPay
|
2
2
|
module Notify
|
3
3
|
def self.verify?(params, options = {})
|
4
|
-
|
4
|
+
sign_params = {
|
5
|
+
'oid_partner' => params['oid_partner'],
|
6
|
+
'sign_type' => params['sign_type'],
|
7
|
+
'dt_order' => params['dt_order'],
|
8
|
+
'no_order' => params['no_order'],
|
9
|
+
'oid_paybill' => params['oid_paybill'],
|
10
|
+
'money_order' => params['money_order'],
|
11
|
+
'result_pay' => params['result_pay'],
|
12
|
+
'bank_code' => params['bank_code']
|
13
|
+
}
|
14
|
+
|
15
|
+
LlPay::Sign.verify?(params, options) && LlPay.oid_partner == params[:oid_partner]
|
5
16
|
end
|
6
17
|
end
|
7
18
|
end
|
data/lib/ll_pay/query_order.rb
CHANGED
@@ -9,10 +9,10 @@ module LlPay
|
|
9
9
|
|
10
10
|
if sign_type == 'RSA'
|
11
11
|
query_order_hash[:sign_type] = 'RSA'
|
12
|
-
query_order_hash[:sign] = LlPay::Sign::RSA.sign(LlPay.rsa_pri_key, params_to_string(query_order_hash))
|
12
|
+
query_order_hash[:sign] = LlPay::Sign::RSA.sign(LlPay.rsa_pri_key, LlPay::Sign.params_to_string(query_order_hash))
|
13
13
|
else
|
14
14
|
query_order_hash[:sign_type] = 'MD5'
|
15
|
-
query_order_hash[:sign] = LlPay::Sign::MD5.sign(LlPay.md5_key, params_to_string(query_order_hash))
|
15
|
+
query_order_hash[:sign] = LlPay::Sign::MD5.sign(LlPay.md5_key, LlPay::Sign.params_to_string(query_order_hash))
|
16
16
|
end
|
17
17
|
|
18
18
|
http_response = HTTP.post('https://yintong.com.cn/queryapi/orderquery.htm',
|
@@ -21,7 +21,7 @@ module LlPay
|
|
21
21
|
response_hash = JSON.parse(http_response.body.to_s)
|
22
22
|
|
23
23
|
if http_response.code == 200
|
24
|
-
if response_hash['ret_code'] == 0000 && LlPay::Sign.verify?(params_to_string(response_hash))
|
24
|
+
if response_hash['ret_code'] == 0000 && LlPay::Sign.verify?(LlPay::Sign.params_to_string(response_hash))
|
25
25
|
return response_hash
|
26
26
|
else
|
27
27
|
return response_hash
|
@@ -30,11 +30,5 @@ module LlPay
|
|
30
30
|
return
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
34
|
-
def self.params_to_string(params)
|
35
|
-
params.sort.map do |k, v|
|
36
|
-
"#{k}=#{v}" if v.to_s != '' && k.to_s != 'sign'
|
37
|
-
end.compact.join('&')
|
38
|
-
end
|
39
33
|
end
|
40
34
|
end
|
data/lib/ll_pay/service.rb
CHANGED
@@ -3,16 +3,29 @@ require 'json'
|
|
3
3
|
module LlPay
|
4
4
|
module Service
|
5
5
|
|
6
|
-
SECURITY_PAY_REQUIRED_PARAMS = %w(
|
6
|
+
SECURITY_PAY_REQUIRED_PARAMS = %w(busi_partner dt_order info_order money_order name_goods no_order notify_url oid_partner risk_item sign_type valid_order)
|
7
7
|
def self.securitypay_pay_json(params, options = {})
|
8
|
-
params = LlPay::Utils.stringify_keys(params)
|
9
|
-
options = LlPay::Utils.stringify_keys(options)
|
8
|
+
# params = LlPay::Utils.stringify_keys(params)
|
9
|
+
# options = LlPay::Utils.stringify_keys(options)
|
10
10
|
|
11
|
-
params
|
11
|
+
check_required_params(params, SECURITY_PAY_REQUIRED_PARAMS)
|
12
12
|
|
13
|
-
params =
|
13
|
+
params['sign_type'] = options['sign_type'] || LlPay.sign_type
|
14
14
|
|
15
|
-
params
|
15
|
+
params = { 'oid_partner' => LlPay.oid_partner }.merge(params)
|
16
|
+
|
17
|
+
sign_params = { 'busi_partner' => params['busi_partner'],
|
18
|
+
'dt_order' => params['dt_order'],
|
19
|
+
'money_order' => params['money_order'],
|
20
|
+
'no_order' => params['no_order'],
|
21
|
+
'notify_url' => params['notify_url'],
|
22
|
+
'oid_partner' => params['oid_partner'],
|
23
|
+
'risk_item' => params['risk_item'],
|
24
|
+
'sign_type' => params['sign_type'],
|
25
|
+
'valid_order' => params['valid_order']
|
26
|
+
}
|
27
|
+
|
28
|
+
params['sign'] = LlPay::Sign.generate(sign_params)
|
16
29
|
|
17
30
|
params.to_json
|
18
31
|
end
|
data/lib/ll_pay/sign/rsa.rb
CHANGED
@@ -11,7 +11,7 @@ module LlPay
|
|
11
11
|
|
12
12
|
def self.verify?(pubkey, string, sign)
|
13
13
|
rsa = OpenSSL::PKey::RSA.new(pubkey)
|
14
|
-
rsa.verify('sha1', Base64.strict_decode64(sign), string)
|
14
|
+
rsa.verify('sha1', Base64.strict_decode64(sign), string.force_encoding("utf-8"))
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/ll_pay/sign.rb
CHANGED
data/lib/ll_pay/version.rb
CHANGED
data/lib/ll_pay.rb
CHANGED
@@ -9,7 +9,14 @@ require 'll_pay/utils'
|
|
9
9
|
|
10
10
|
module LlPay
|
11
11
|
# 银通公钥
|
12
|
-
YT_PUB_KEY =
|
12
|
+
YT_PUB_KEY = <<-EOF
|
13
|
+
-----BEGIN PUBLIC KEY-----
|
14
|
+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSS/DiwdCf/aZsxxcacDnooGph3d2JOj5GXWi+
|
15
|
+
q3gznZauZjkNP8SKl3J2liP0O6rU/Y/29+IUe+GTMhMOFJuZm1htAtKiu5ekW0GlBMWxf4FPkYlQ
|
16
|
+
kPE0FtaoMP3gYfh+OwI+fIRrpW3ySn3mScnc6Z700nU/VYrRkfcSCbSnRwIDAQAB
|
17
|
+
-----END PUBLIC KEY-----
|
18
|
+
EOF
|
19
|
+
|
13
20
|
@sign_type = 'MD5'
|
14
21
|
|
15
22
|
class << self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ll_pay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- houdelin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -79,6 +79,7 @@ executables: []
|
|
79
79
|
extensions: []
|
80
80
|
extra_rdoc_files: []
|
81
81
|
files:
|
82
|
+
- ".codeclimate.yml"
|
82
83
|
- ".gitignore"
|
83
84
|
- ".rspec"
|
84
85
|
- ".travis.yml"
|