alipay 0.7.1 → 0.8.0
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/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
|