alipay 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +35 -30
- data/lib/alipay.rb +2 -0
- data/lib/alipay/mobile/service.rb +27 -0
- data/lib/alipay/mobile/sign.rb +9 -0
- data/lib/alipay/service.rb +0 -18
- data/lib/alipay/sign/rsa.rb +2 -2
- data/lib/alipay/version.rb +1 -1
- data/lib/alipay/wap/sign.rb +1 -1
- data/test/alipay/mobile/service_test.rb +16 -0
- data/test/alipay/mobile/sign_test.rb +7 -0
- data/test/alipay/service_test.rb +0 -13
- data/test/alipay/sign/rsa_test.rb +1 -1
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3edec82f680c00773ce90092f2fa9b0d53ad176
|
4
|
+
data.tar.gz: 5657552ff665d594f71babfe43ac4f5da535e580
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a3bfcb3f8dab931dd2ffef9d2304fd5155b5665dd73f0ae32d72ee823d049c9146142c8f2a331af4eb8c075a89fb9e6ddee51a0641ee00bc9108680aa38ef77
|
7
|
+
data.tar.gz: 12de1a73d39b7e660a143c9f72e1e8f06e95b92c136b6ebd5200fed63282d5007a9caf8e4070c0f904954f3aab56cbafce0aab35c89b9e40a19748c0c27604d9
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -110,7 +110,8 @@ Alipay::Service.send_goods_confirm_by_platform({ARGUMENTS}, {OPTIONS})
|
|
110
110
|
```ruby
|
111
111
|
Alipay::Service.send_goods_confirm_by_platform(
|
112
112
|
trade_no: '201504010000001',
|
113
|
-
logistics_name: 'example.com'
|
113
|
+
logistics_name: 'example.com',
|
114
|
+
transport_type: 'DIRECT'
|
114
115
|
)
|
115
116
|
# => '<!xml version="1.0" encoding="utf-8"?><alipay><is_success>T</is_success></alipay>'
|
116
117
|
```
|
@@ -121,6 +122,7 @@ Alipay::Service.send_goods_confirm_by_platform(
|
|
121
122
|
| --- | ----------- | ----------- |
|
122
123
|
| trade_no | required | Trade number in Alipay system, should get from notify message. |
|
123
124
|
| logistics_name | required | Logistics Name. |
|
125
|
+
| transport_type/create_transport_type | required | Allowed values: POST, EXPRESS, EMS, DIRECT. |
|
124
126
|
|
125
127
|
This is not a complete list of arguments, please read official document: http://download.alipay.com/public/api/base/alipayescow.zip .
|
126
128
|
|
@@ -360,7 +362,33 @@ Alipay::Service.forex_refund_url(
|
|
360
362
|
|
361
363
|
\* Auto set Time.now if not set.
|
362
364
|
|
363
|
-
###
|
365
|
+
### 验证通知
|
366
|
+
|
367
|
+
#### Name
|
368
|
+
|
369
|
+
```ruby
|
370
|
+
notify_verify
|
371
|
+
```
|
372
|
+
|
373
|
+
#### Definition
|
374
|
+
|
375
|
+
```ruby
|
376
|
+
Alipay::Notify.verify?({PARAMS}, {OPTIONS})
|
377
|
+
```
|
378
|
+
|
379
|
+
#### Example
|
380
|
+
|
381
|
+
```ruby
|
382
|
+
# Rails
|
383
|
+
# params except :controller_name, :action_name, :host, etc.
|
384
|
+
notify_params = params.except(*request.path_parameters.keys)
|
385
|
+
|
386
|
+
Alipay::Notify.verify?(notify_params)
|
387
|
+
```
|
388
|
+
|
389
|
+
## Mobile::Service
|
390
|
+
|
391
|
+
### 移动支付接口
|
364
392
|
|
365
393
|
#### Name
|
366
394
|
|
@@ -371,19 +399,20 @@ mobile.securitypay.pay
|
|
371
399
|
#### Definition
|
372
400
|
|
373
401
|
```ruby
|
374
|
-
Alipay::Service.
|
402
|
+
Alipay::Mobile::Service.mobile_security_pay_string({ARGUMENTS}, {OPTIONS})
|
375
403
|
```
|
376
404
|
|
377
405
|
#### Example
|
378
406
|
|
379
407
|
```ruby
|
380
|
-
Alipay::Service.
|
408
|
+
Alipay::Mobile::Service.mobile_security_pay_string(
|
381
409
|
out_trade_no: '20150401000-0001',
|
382
410
|
notify_url: 'https://example.com/orders/20150401000-0001/notify'
|
383
411
|
subject: 'subject',
|
384
412
|
total_fee: '10.00',
|
385
413
|
body: 'text'
|
386
414
|
)
|
415
|
+
# => service="mobile.securitypay.pay"&_input_charset="utf-8"&partner=...
|
387
416
|
```
|
388
417
|
|
389
418
|
#### ARGUMENTS
|
@@ -400,30 +429,6 @@ Alipay::Service.mobile_security_pay_url(
|
|
400
429
|
|
401
430
|
This is not a complete list of arguments, please read official document: http://download.alipay.com/public/api/base/WS_MOBILE_PAY_SDK_BASE.zip .
|
402
431
|
|
403
|
-
### 验证通知
|
404
|
-
|
405
|
-
#### Name
|
406
|
-
|
407
|
-
```ruby
|
408
|
-
notify_verify
|
409
|
-
```
|
410
|
-
|
411
|
-
#### Definition
|
412
|
-
|
413
|
-
```ruby
|
414
|
-
Alipay::Notify.verify?({PARAMS}, {OPTIONS})
|
415
|
-
```
|
416
|
-
|
417
|
-
#### Example
|
418
|
-
|
419
|
-
```ruby
|
420
|
-
# Rails
|
421
|
-
# params except :controller_name, :action_name, :host, etc.
|
422
|
-
notify_params = params.except(*request.path_parameters.keys)
|
423
|
-
|
424
|
-
Alipay::Notify.verify?(notify_params)
|
425
|
-
```
|
426
|
-
|
427
432
|
## Wap::Service
|
428
433
|
|
429
434
|
### 授权接口
|
@@ -485,13 +490,13 @@ alipay.wap.auth.authAndExecute
|
|
485
490
|
#### Definition
|
486
491
|
|
487
492
|
```ruby
|
488
|
-
Alipay::Wap::Service.
|
493
|
+
Alipay::Wap::Service.auth_and_execute_url({ARGUMENTS}, {OPTIONS})
|
489
494
|
```
|
490
495
|
|
491
496
|
#### Example
|
492
497
|
|
493
498
|
```ruby
|
494
|
-
Alipay::Wap::Service.
|
499
|
+
Alipay::Wap::Service.auth_and_execute_url(request_token: token)
|
495
500
|
```
|
496
501
|
#### ARGUMENTS
|
497
502
|
|
data/lib/alipay.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Alipay
|
2
|
+
module Mobile
|
3
|
+
module Service
|
4
|
+
MOBILE_SECURITY_PAY_REQUIRED_PARAMS = %w( notify_url out_trade_no subject total_fee body )
|
5
|
+
def self.mobile_securitypay_pay_string(params, options = {})
|
6
|
+
params = Utils.stringify_keys(params)
|
7
|
+
Alipay::Service.check_required_params(params, MOBILE_SECURITY_PAY_REQUIRED_PARAMS)
|
8
|
+
sign_type = options[:sign_type] || Alipay.sign_type
|
9
|
+
key = options[:key] || Alipay.key
|
10
|
+
raise ArgumentError, "only support RSA sign_type" if sign_type != 'RSA'
|
11
|
+
|
12
|
+
params = {
|
13
|
+
'service' => 'mobile.securitypay.pay',
|
14
|
+
'_input_charset' => 'utf-8',
|
15
|
+
'partner' => options[:pid] || Alipay.pid,
|
16
|
+
'seller_id' => options[:pid] || Alipay.pid,
|
17
|
+
'payment_type' => '1'
|
18
|
+
}.merge(params)
|
19
|
+
|
20
|
+
string = Alipay::Mobile::Sign.params_to_string(params)
|
21
|
+
sign = CGI.escape(Alipay::Sign::RSA.sign(key, string))
|
22
|
+
|
23
|
+
%Q(#{string}&sign="#{sign}"&sign_type="RSA")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/alipay/service.rb
CHANGED
@@ -162,24 +162,6 @@ module Alipay
|
|
162
162
|
Net::HTTP.get(request_uri(params, options))
|
163
163
|
end
|
164
164
|
|
165
|
-
MOBILD_SECURITY_PAY_REQUIRED_PARAMS = %w( notify_url out_trade_no subject total_fee body )
|
166
|
-
def self.mobile_security_pay_url(params, options = {})
|
167
|
-
params = Utils.stringify_keys(params)
|
168
|
-
check_required_params(params, MOBILD_SECURITY_PAY_REQUIRED_PARAMS)
|
169
|
-
sign_type = options[:sign_type] || Alipay.sign_type
|
170
|
-
raise ArgumentError, "only support RSA sign_type" if sign_type != 'RSA'
|
171
|
-
|
172
|
-
params = {
|
173
|
-
'service' => 'mobile.securitypay.pay',
|
174
|
-
'_input_charset' => 'utf-8',
|
175
|
-
'partner' => options[:pid] || Alipay.pid,
|
176
|
-
'seller_id' => options[:pid] || Alipay.pid,
|
177
|
-
'payment_type' => '1'
|
178
|
-
}.merge(params)
|
179
|
-
|
180
|
-
request_uri(params, options).to_s
|
181
|
-
end
|
182
|
-
|
183
165
|
def self.request_uri(params, options = {})
|
184
166
|
uri = URI(GATEWAY_URL)
|
185
167
|
uri.query = URI.encode_www_form(sign_params(params, options))
|
data/lib/alipay/sign/rsa.rb
CHANGED
@@ -6,12 +6,12 @@ module Alipay
|
|
6
6
|
class RSA
|
7
7
|
def self.sign(key, string)
|
8
8
|
rsa = OpenSSL::PKey::RSA.new(key)
|
9
|
-
Base64.
|
9
|
+
Base64.strict_encode64(rsa.sign('sha1', string))
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.verify?(key, string, sign)
|
13
13
|
rsa = OpenSSL::PKey::RSA.new(key)
|
14
|
-
rsa.verify('sha1', Base64.
|
14
|
+
rsa.verify('sha1', Base64.strict_decode64(sign), string)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/alipay/version.rb
CHANGED
data/lib/alipay/wap/sign.rb
CHANGED
@@ -17,7 +17,7 @@ Udmh5Ua2xg6IEfk493VQIDAQAB
|
|
17
17
|
|
18
18
|
case params['sec_id']
|
19
19
|
when 'MD5'
|
20
|
-
key = options[:
|
20
|
+
key = options[:key] || Alipay.key
|
21
21
|
::Alipay::Sign::MD5.verify?(key, string, sign)
|
22
22
|
when '0001' # RSA
|
23
23
|
::Alipay::Sign::RSA.verify?(ALIPAY_RSA_PUBLIC_KEY, string, sign)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Alipay::Mobile::ServiceTest < Minitest::Test
|
4
|
+
def test_mobile_securitypay_pay_string
|
5
|
+
assert_equal %q(service="mobile.securitypay.pay"&_input_charset="utf-8"&partner="1000000000000000"&seller_id="1000000000000000"&payment_type="1"&out_trade_no="1"¬ify_url="/some_url"&subject="subject"&total_fee="0.01"&body="test"&sign="if1qjK4qnT7eQ5fw%2BBddHhO1LY6iuPY9Xmhkx81YKuCdceKWBdv798j%2BrxF9ZAhNW4Y3TMURm%2BXpgxhOh8lj8vorFup%2BMJ6fe2rXRWgxFhK9B8xuP2XH%2F3878g6d8Jq2D2gINTgDDL7%2BB5%2FIWWlwInas40cQTsVngG8mWkzB788%3D"&sign_type="RSA"), Alipay::Mobile::Service.mobile_securitypay_pay_string({
|
6
|
+
out_trade_no: '1',
|
7
|
+
notify_url: '/some_url',
|
8
|
+
subject: 'subject',
|
9
|
+
total_fee: '0.01',
|
10
|
+
body: 'test'
|
11
|
+
}, {
|
12
|
+
sign_type: 'RSA',
|
13
|
+
key: TEST_RSA_PRIVATE_KEY
|
14
|
+
})
|
15
|
+
end
|
16
|
+
end
|
data/test/alipay/service_test.rb
CHANGED
@@ -165,17 +165,4 @@ class Alipay::ServiceTest < Minitest::Test
|
|
165
165
|
transport_type: 'DIRECT'
|
166
166
|
)
|
167
167
|
end
|
168
|
-
|
169
|
-
def test_mobile_security_pay_url
|
170
|
-
assert_equal 'https://mapi.alipay.com/gateway.do?service=mobile.securitypay.pay&_input_charset=utf-8&partner=1000000000000000&seller_id=1000000000000000&payment_type=1&out_trade_no=1¬ify_url=%2Fsome_url&subject=subject&total_fee=0.01&body=test&sign_type=RSA&sign=EuHBKhLyXFBFM28s8nNM45r4gIWccPijVl8SHAmRaAC11wFNRiOfc3jEzJYJ%0A%2FADJNytARSNVSu3vXvRWhsNDHE9%2F%2BkFRckoXjjC10IApWa8bN7%2ByfHQk2w88%0AkDEVfv9Z%2F0t%2B8yHZD0Po4OBBHoEC9d%2FodPZYBElfcQvJ5vilQsc%3D%0A', Alipay::Service.mobile_security_pay_url({
|
171
|
-
out_trade_no: '1',
|
172
|
-
notify_url: '/some_url',
|
173
|
-
subject: 'subject',
|
174
|
-
total_fee: '0.01',
|
175
|
-
body: 'test'
|
176
|
-
}, {
|
177
|
-
sign_type: 'RSA',
|
178
|
-
key: TEST_RSA_PRIVATE_KEY
|
179
|
-
})
|
180
|
-
end
|
181
168
|
end
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
class Alipay::Sign::RSATest < Minitest::Test
|
4
4
|
def setup
|
5
5
|
@string = "partner=123&service=test"
|
6
|
-
@sign = "TaVXdP/
|
6
|
+
@sign = "TaVXdP/0ia5NxIv9T76v6vGOrtgoaFrwnchKIWP9PQeX1UkUVxaq6ejDFmXFrFR+Plk+E/XzfV2DYJSVt0Am0qJRSgeg+PuvK+yWGCGm9GJgUJlS4Eyta3g+8DWwRWTjUyh5yzlf9JoSnbNjYpBolnMRD7B/u1JLkTMJuMx2TVM="
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_sign
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alipay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rei
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -82,6 +82,8 @@ files:
|
|
82
82
|
- Rakefile
|
83
83
|
- alipay.gemspec
|
84
84
|
- lib/alipay.rb
|
85
|
+
- lib/alipay/mobile/service.rb
|
86
|
+
- lib/alipay/mobile/sign.rb
|
85
87
|
- lib/alipay/notify.rb
|
86
88
|
- lib/alipay/service.rb
|
87
89
|
- lib/alipay/sign.rb
|
@@ -93,6 +95,8 @@ files:
|
|
93
95
|
- lib/alipay/wap/notify.rb
|
94
96
|
- lib/alipay/wap/service.rb
|
95
97
|
- lib/alipay/wap/sign.rb
|
98
|
+
- test/alipay/mobile/service_test.rb
|
99
|
+
- test/alipay/mobile/sign_test.rb
|
96
100
|
- test/alipay/notify_test.rb
|
97
101
|
- test/alipay/service_test.rb
|
98
102
|
- test/alipay/sign/md5_test.rb
|
@@ -124,11 +128,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
128
|
version: '0'
|
125
129
|
requirements: []
|
126
130
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.4.
|
131
|
+
rubygems_version: 2.4.7
|
128
132
|
signing_key:
|
129
133
|
specification_version: 4
|
130
134
|
summary: An unofficial simple alipay gem
|
131
135
|
test_files:
|
136
|
+
- test/alipay/mobile/service_test.rb
|
137
|
+
- test/alipay/mobile/sign_test.rb
|
132
138
|
- test/alipay/notify_test.rb
|
133
139
|
- test/alipay/service_test.rb
|
134
140
|
- test/alipay/sign/md5_test.rb
|