alipay_mini 0.1.0 → 0.1.1
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/.travis.yml +9 -1
- data/Gemfile.lock +2 -2
- data/README.md +98 -16
- data/README_en.md +114 -0
- data/lib/alipay_mini.rb +24 -0
- data/lib/alipay_mini/api/alipay_base.rb +1 -1
- data/lib/alipay_mini/api/trade_create.rb +49 -0
- data/lib/alipay_mini/sign.rb +16 -0
- data/lib/alipay_mini/utils.rb +10 -0
- data/lib/alipay_mini/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74b7d1389c2a993eaf12b6dd616e951d6fa79689135ca1be6dada4cb2246a65c
|
4
|
+
data.tar.gz: 8b766e50583ab2c24a760548be6c2da0ae72ee2d54e9410a80e9922e8851cf38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f75f59740829d260aee3e7a70a47766df029c4e57996691001c9c76666a753ab1db10869fd7d3644fcffc856ec09caf47ff5b0589766a83bf17dac0cd032aef
|
7
|
+
data.tar.gz: cdfaaf11784c7c72ee3e2b250a77c030a5e828757974b0f487570d9aa9912b9b210a663c79fc67813597546e78eff135dfda187bd1518d2160a252ae428f881e
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,39 +1,121 @@
|
|
1
|
+

|
2
|
+
[](https://badge.fury.io/rb/alipay_mini)
|
3
|
+
[](https://codeclimate.com/github/renyijiu/alipay_mini/maintainability)
|
4
|
+
|
5
|
+
[English](https://github.com/renyijiu/alipay_mini/blob/master/README_en.md)
|
6
|
+
|
1
7
|
# AlipayMini
|
2
8
|
|
3
|
-
|
9
|
+
一个非官方的支付宝小程序相关的gem包。
|
4
10
|
|
5
|
-
|
11
|
+
由于官方未提供Ruby版本的服务端SDK,所以对于小程序开放的接口进行Ruby版本的封装。
|
6
12
|
|
7
|
-
##
|
13
|
+
## 安装
|
8
14
|
|
9
|
-
|
15
|
+
在Gemfile中添加下列命令:
|
10
16
|
|
11
17
|
```ruby
|
12
|
-
gem 'alipay_mini'
|
18
|
+
gem 'alipay_mini', '~> 0.1.0'
|
13
19
|
```
|
14
20
|
|
15
|
-
|
21
|
+
执行下列命令:
|
16
22
|
|
17
23
|
$ bundle
|
18
24
|
|
19
|
-
|
25
|
+
或者通过命令行安装gem:
|
20
26
|
|
21
27
|
$ gem install alipay_mini
|
22
28
|
|
23
|
-
##
|
29
|
+
## 使用
|
30
|
+
|
31
|
+
### Config配置
|
32
|
+
|
33
|
+
首先配置的初始选项
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
AlipayMini.configure do |c|
|
37
|
+
c.private_key = "your own private key generate by alipay"
|
38
|
+
c.public_key = "the alipay's public key"
|
39
|
+
c.url = "the alipay api url"
|
40
|
+
c.app_id = "your own app_id"
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
> 注意⚠️: public_key 为支付宝官方的公钥,不要填错了!!!
|
45
|
+
|
46
|
+
示例:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
AlipayMini.configure do |c|
|
50
|
+
c.private_key = "MIIEogIBAAKCAQEA0J12pYTGu5y6uWv06/vso4EZkmh9s51hbV4TiM9K99x4bz/mn8+6mRXCxooGvWqtU4xM7sYx+GE3EE4JX3Zxzzg7c/SUbzMC3GwIAO05U6R5dANBsBsl9GZ95EdPKKmxklM1Sa8IdeWNJkU9UJ9zXHHm35bzvVyfG3ava0Kp2pfKHskAfiqtOV5WEkwY3dAyqa2URHm182A0dUyCGXDeeTmbJ0VDXoAHdlNzhdHiH1hJtzSeJ9ouI6tY6lBcfII/ywvLF83a7GWUGFyBoV724xIBsBPc/bHCK2rlRdAqr7dyILHubetHtzs/6RT4OHjvnPTNbHemtWQrOXcVk4DpJQIDAQABAoIBAHEqKfVpzGBzibsR+/+TXm/nlVadhirMIdCxKsmZIWLJXy+CK3nftqpaaplGwJc56iIbRpR0QSEqozMeEemOF/i/2UhykZ6svk2R8NmH1gQwgY3UQmrknzcv7fTKVf+J5gCpUIvS/jTuPB5ZiwRUKsEoLIR3n2rGdqzwOgJmXDtuBpjqxfFDE2tS8hMx2xwBmN5xabUbAv897uci6Bw/J+p3C8xADMKOJvUqkoTz1V0zXJIJ0DA3yIo0SakZ8iGu5P8x1VPBccSO3LQIfX1xS7lsFk3lq1VED918/KKnJvwvF8moyKJEo4UgeKoDgJiYjMmIob2mj/bL+IJQR2vJN8ECgYEA9P+MSWDh6FOVD2pLZQ9G87X34aZxPJsVuZR4vXENR7cV5vq77d6W1DoI+wBq3KHj+l2m4eY0IY4c/wyf4dRVtRisZe9JSTpJc/VSUv/hCzRoFK64C2kAhynkKfb9smNnxq7gt/Z5nuDninHubW/9monv5dWhQzs38u82KVwEPNECgYEA2fupdRpwlAAeDLHtFbnV6GdgSy/Nq6fpe4abtQ1hSmcKdnIOJdFnh4jPsKuM5WGCcJf2Fupz7rcBbhGncLcSkCs4QR7goQ//h1676VvCersLI+Xm2GEEARA5dSqTAOs0yfMR1sQU2S2/CkRniluJt42ywSm9xXqtYXD3oF50LBUCgYAEbg56US8khUZftftRA3qz82ldAiZwAxncdivMuRuVXWEfAQ+e2HR/t+DrsPE9tguqPkFDOmdc5/XsQq0tZyp5kM2lNjNsCIrFdv0bFRdbnYH4RcR8KFTjHMXMYHPr4tJAjG7xxJokXkqxfSfjgK/kOHRHAprc3VhAo0SmcMx+0QKBgEZakzbYcb1SzGAMjRiWAhQgSVP6+caNSy4zI84ro1sAJsBTz30lOOTloyLCO5dNAWyVnzeGNCS3rB56VDBs5fDiAiYCcT2KjE6EpOGMXBiAhffwG7F6nnA5bFIEi62gPElxyjAm2RO/UAlgSoq9QJWdhjQR5M336j2o2ENKOPSBAoGAeeduPyZrc2oa3zJJdgMuSN8zrfG9OMYIeGfBkAv5YPrqpYryn9w0FDj+aHLsCwiVOZPeS39ySa/0+7j7rnw/fAS2meHguosE5PlQgQfTG1V24xogPwXoBP1b3dgyC18JHWQu/wucEe9a11VTVHqY7rMDEcL6R0WPljCxNChnj5Q="
|
51
|
+
c.public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoBr6Ag68Dlbf/ZNvqNotNpe2pDei58ObbD7SNEWjMx8CpTTIOqgwbCL0EHuUAF1fxOP42uLd4n/fEdbU0BNkd+4TL71P49Fq4wMXyqoYm+EzEZ8mBnevKtPPb813L1W2thZVISNWMR67axyy6xMk77YOEqRUz3hfJlowm9us8YgHranx+O1vR8olgVTdhjOub9QD/tK7ok1GWSw/dBFpcG9WTuKnPrklMIBxUllIONciH+7KGX+Yhs0zLTEPRufATAy1slIC8NhoBSxSB0PRsix4/gVCw4IAIzGPspdRPA0ZCeJPrjGvuBh9215lNpv0+ew6/a/x3db0ZIVDzLrzyQIDAQAB"
|
52
|
+
c.app_id = "2015102700040153"
|
53
|
+
c.url = "https://openapi.alipaydev.com/gateway.do"
|
54
|
+
end
|
55
|
+
```
|
24
56
|
|
25
|
-
|
57
|
+
## API
|
58
|
+
|
59
|
+
### [alipay.system.oauth.token](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
# when grant_type is 'authorization_code', code is the auth_code
|
63
|
+
# when grant_type is 'refresh_token', code is the refresh_token
|
64
|
+
#
|
65
|
+
# @param grant_type String - 'authorization_code', 'refresh_token'
|
66
|
+
# @param code String - auth_code or refresh_token
|
67
|
+
#
|
68
|
+
# @return Array - [flag<Boolean>, res<Hash>] flag: request status, res: response hash
|
69
|
+
#
|
70
|
+
# Example:
|
71
|
+
# AlipayMini.system_oauth_token('authorization_code', 'helloworld')
|
72
|
+
#
|
73
|
+
|
74
|
+
AlipayMini.system_oauth_token(grant_type, code)
|
75
|
+
```
|
76
|
+
### [alipay.user.info.share](https://docs.open.alipay.com/api_2/alipay.user.info.share)
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
# @param access_token String
|
80
|
+
#
|
81
|
+
# @return Array [flag<Boolean>, res<Hash>]
|
82
|
+
#
|
83
|
+
# Example:
|
84
|
+
# AlipayMini.user_info_share("helloworld")
|
85
|
+
#
|
86
|
+
|
87
|
+
AlipayMini.user_info_share(access_token)
|
88
|
+
```
|
89
|
+
|
90
|
+
### Response
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
# flag: request state, true is success, false means the request error
|
94
|
+
#
|
95
|
+
# Example:
|
96
|
+
# AlipayMini.system_oauth_token('authorization_code', 'helloworld')
|
97
|
+
#
|
98
|
+
# Return:
|
99
|
+
# [true, {"access_token" => "12345", "alipay_user_id" => "12345", "expires_in" => 1296000, "re_expires_in" => 2592000, "refresh_token" => "12345", "user_id"=> "12345"}]
|
100
|
+
#
|
101
|
+
# [false, {"code" => "40002", "msg" => "Invalid Arguments", "sub_code" => "isv.code-invalid", "sub_msg" => "授权码code无效"}]]
|
102
|
+
#
|
103
|
+
```
|
26
104
|
|
27
|
-
##
|
105
|
+
## 进度
|
28
106
|
|
29
|
-
|
107
|
+
### 已完成
|
30
108
|
|
31
|
-
|
109
|
+
1. [换取授权访问令牌](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)(alipay.user.info.share)
|
110
|
+
2. [支付宝会员授权信息查询接口](https://docs.open.alipay.com/api_2/alipay.user.info.share)(alipay.user.info.share)
|
32
111
|
|
33
|
-
## Contributing
|
34
112
|
|
35
|
-
|
113
|
+
## 如何贡献
|
36
114
|
|
37
|
-
|
115
|
+
1. Fork it
|
116
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
117
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
118
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
119
|
+
5. Create new Pull Request
|
38
120
|
|
39
|
-
|
121
|
+
欢迎贡献相关代码或是提交你的使用反馈👏,另外请记得为你的代码编写测试。
|
data/README_en.md
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+

|
2
|
+
[](https://badge.fury.io/rb/alipay_mini)
|
3
|
+
[](https://codeclimate.com/github/renyijiu/alipay_mini/maintainability)
|
4
|
+
|
5
|
+
# AlipayMini
|
6
|
+
|
7
|
+
An unofficial simple gem for alipay mini program.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'alipay_mini', '~> 0.1.0'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install alipay_mini
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
### Config
|
28
|
+
|
29
|
+
Setup the config first.
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
AlipayMini.configure do |c|
|
33
|
+
c.private_key = "your own private key generate by alipay"
|
34
|
+
c.public_key = "the alipay's public key"
|
35
|
+
c.url = "the alipay api url"
|
36
|
+
c.app_id = "your own app_id"
|
37
|
+
end
|
38
|
+
```
|
39
|
+
> Attention: the public key is alipay's official public key!!!
|
40
|
+
|
41
|
+
Config example:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
AlipayMini.configure do |c|
|
45
|
+
c.private_key = "MIIEogIBAAKCAQEA0J12pYTGu5y6uWv06/vso4EZkmh9s51hbV4TiM9K99x4bz/mn8+6mRXCxooGvWqtU4xM7sYx+GE3EE4JX3Zxzzg7c/SUbzMC3GwIAO05U6R5dANBsBsl9GZ95EdPKKmxklM1Sa8IdeWNJkU9UJ9zXHHm35bzvVyfG3ava0Kp2pfKHskAfiqtOV5WEkwY3dAyqa2URHm182A0dUyCGXDeeTmbJ0VDXoAHdlNzhdHiH1hJtzSeJ9ouI6tY6lBcfII/ywvLF83a7GWUGFyBoV724xIBsBPc/bHCK2rlRdAqr7dyILHubetHtzs/6RT4OHjvnPTNbHemtWQrOXcVk4DpJQIDAQABAoIBAHEqKfVpzGBzibsR+/+TXm/nlVadhirMIdCxKsmZIWLJXy+CK3nftqpaaplGwJc56iIbRpR0QSEqozMeEemOF/i/2UhykZ6svk2R8NmH1gQwgY3UQmrknzcv7fTKVf+J5gCpUIvS/jTuPB5ZiwRUKsEoLIR3n2rGdqzwOgJmXDtuBpjqxfFDE2tS8hMx2xwBmN5xabUbAv897uci6Bw/J+p3C8xADMKOJvUqkoTz1V0zXJIJ0DA3yIo0SakZ8iGu5P8x1VPBccSO3LQIfX1xS7lsFk3lq1VED918/KKnJvwvF8moyKJEo4UgeKoDgJiYjMmIob2mj/bL+IJQR2vJN8ECgYEA9P+MSWDh6FOVD2pLZQ9G87X34aZxPJsVuZR4vXENR7cV5vq77d6W1DoI+wBq3KHj+l2m4eY0IY4c/wyf4dRVtRisZe9JSTpJc/VSUv/hCzRoFK64C2kAhynkKfb9smNnxq7gt/Z5nuDninHubW/9monv5dWhQzs38u82KVwEPNECgYEA2fupdRpwlAAeDLHtFbnV6GdgSy/Nq6fpe4abtQ1hSmcKdnIOJdFnh4jPsKuM5WGCcJf2Fupz7rcBbhGncLcSkCs4QR7goQ//h1676VvCersLI+Xm2GEEARA5dSqTAOs0yfMR1sQU2S2/CkRniluJt42ywSm9xXqtYXD3oF50LBUCgYAEbg56US8khUZftftRA3qz82ldAiZwAxncdivMuRuVXWEfAQ+e2HR/t+DrsPE9tguqPkFDOmdc5/XsQq0tZyp5kM2lNjNsCIrFdv0bFRdbnYH4RcR8KFTjHMXMYHPr4tJAjG7xxJokXkqxfSfjgK/kOHRHAprc3VhAo0SmcMx+0QKBgEZakzbYcb1SzGAMjRiWAhQgSVP6+caNSy4zI84ro1sAJsBTz30lOOTloyLCO5dNAWyVnzeGNCS3rB56VDBs5fDiAiYCcT2KjE6EpOGMXBiAhffwG7F6nnA5bFIEi62gPElxyjAm2RO/UAlgSoq9QJWdhjQR5M336j2o2ENKOPSBAoGAeeduPyZrc2oa3zJJdgMuSN8zrfG9OMYIeGfBkAv5YPrqpYryn9w0FDj+aHLsCwiVOZPeS39ySa/0+7j7rnw/fAS2meHguosE5PlQgQfTG1V24xogPwXoBP1b3dgyC18JHWQu/wucEe9a11VTVHqY7rMDEcL6R0WPljCxNChnj5Q="
|
46
|
+
c.public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoBr6Ag68Dlbf/ZNvqNotNpe2pDei58ObbD7SNEWjMx8CpTTIOqgwbCL0EHuUAF1fxOP42uLd4n/fEdbU0BNkd+4TL71P49Fq4wMXyqoYm+EzEZ8mBnevKtPPb813L1W2thZVISNWMR67axyy6xMk77YOEqRUz3hfJlowm9us8YgHranx+O1vR8olgVTdhjOub9QD/tK7ok1GWSw/dBFpcG9WTuKnPrklMIBxUllIONciH+7KGX+Yhs0zLTEPRufATAy1slIC8NhoBSxSB0PRsix4/gVCw4IAIzGPspdRPA0ZCeJPrjGvuBh9215lNpv0+ew6/a/x3db0ZIVDzLrzyQIDAQAB"
|
47
|
+
c.app_id = "2015102700040153"
|
48
|
+
c.url = "https://openapi.alipaydev.com/gateway.do"
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
## API
|
53
|
+
|
54
|
+
### [alipay.system.oauth.token](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
# when grant_type is 'authorization_code', code is the auth_code
|
58
|
+
# when grant_type is 'refresh_token', code is the refresh_token
|
59
|
+
#
|
60
|
+
# @param grant_type String - 'authorization_code', 'refresh_token'
|
61
|
+
# @param code String - auth_code or refresh_token
|
62
|
+
#
|
63
|
+
# @return Array - [flag<Boolean>, res<Hash>] flag: request status, res: response hash
|
64
|
+
#
|
65
|
+
# Example:
|
66
|
+
# AlipayMini.system_oauth_token('authorization_code', 'helloworld')
|
67
|
+
#
|
68
|
+
|
69
|
+
AlipayMini.system_oauth_token(grant_type, code)
|
70
|
+
```
|
71
|
+
### [alipay.user.info.share](https://docs.open.alipay.com/api_2/alipay.user.info.share)
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
# @param access_token String
|
75
|
+
#
|
76
|
+
# @return Array [flag<Boolean>, res<Hash>]
|
77
|
+
#
|
78
|
+
# Example:
|
79
|
+
# AlipayMini.user_info_share("helloworld")
|
80
|
+
#
|
81
|
+
|
82
|
+
AlipayMini.user_info_share(access_token)
|
83
|
+
```
|
84
|
+
|
85
|
+
### Response
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# flag: request state, true is success, false means the request error
|
89
|
+
#
|
90
|
+
# Example:
|
91
|
+
# AlipayMini.system_oauth_token('authorization_code', 'helloworld')
|
92
|
+
#
|
93
|
+
# Return:
|
94
|
+
# [true, {"access_token" => "12345", "alipay_user_id" => "12345", "expires_in" => 1296000, "re_expires_in" => 2592000, "refresh_token" => "12345", "user_id"=> "12345"}]
|
95
|
+
#
|
96
|
+
# [false, {"code" => "40002", "msg" => "Invalid Arguments", "sub_code" => "isv.code-invalid", "sub_msg" => "授权码code无效"}]]
|
97
|
+
#
|
98
|
+
```
|
99
|
+
|
100
|
+
## Schedule
|
101
|
+
|
102
|
+
### Done
|
103
|
+
1. [alipay.user.info.share](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)
|
104
|
+
2. [alipay.user.info.share](https://docs.open.alipay.com/api_2/alipay.user.info.share)
|
105
|
+
|
106
|
+
## Contributing
|
107
|
+
|
108
|
+
1. Fork it
|
109
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
110
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
111
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
112
|
+
5. Create new Pull Request
|
113
|
+
|
114
|
+
Bug report or pull request are welcome. Please write unit test with your code if necessary
|
data/lib/alipay_mini.rb
CHANGED
@@ -7,6 +7,7 @@ require "alipay_mini/request"
|
|
7
7
|
require "alipay_mini/api/alipay_base"
|
8
8
|
require "alipay_mini/api/system_oauth_token"
|
9
9
|
require "alipay_mini/api/user_info_share"
|
10
|
+
require "alipay_mini/api/trade_create"
|
10
11
|
|
11
12
|
module AlipayMini
|
12
13
|
|
@@ -20,6 +21,16 @@ module AlipayMini
|
|
20
21
|
Config.instance.configuration
|
21
22
|
end
|
22
23
|
|
24
|
+
# synchronize notify verify sign
|
25
|
+
def verify?(params, options = {})
|
26
|
+
AlipayMini::Sign.verify?(params, options)
|
27
|
+
end
|
28
|
+
|
29
|
+
# asynchronous notify verify sign
|
30
|
+
def async_verify?(params, options = {})
|
31
|
+
AlipayMini::Sign.async_verify?(params, options)
|
32
|
+
end
|
33
|
+
|
23
34
|
# alipay.system.oauth.token api
|
24
35
|
#
|
25
36
|
# @params grant_type String 'authorization_code', 'refresh_token'
|
@@ -38,6 +49,19 @@ module AlipayMini
|
|
38
49
|
def user_info_share(access_token)
|
39
50
|
AlipayMini::Api::UserInfoShare.new.get(access_token)
|
40
51
|
end
|
52
|
+
|
53
|
+
# https://docs.open.alipay.com/api_1/alipay.trade.create
|
54
|
+
# alipay.trade_create
|
55
|
+
#
|
56
|
+
# @params trade_no String length < 64, only letter, number, underline
|
57
|
+
# @params amount Price Accurate to two decimal places, the range of values [0.01,100000000]
|
58
|
+
# @params subject String the title of order
|
59
|
+
# @params buyer_id String the user id of taobao
|
60
|
+
#
|
61
|
+
# @return Array [flag<Boolean>, res<Hash>]
|
62
|
+
def trade_create(trade_no, amount, subject, buyer_id, options = {})
|
63
|
+
AlipayMini::Api::TradeCreate.new.get(trade_no, amount, subject, buyer_id, options)
|
64
|
+
end
|
41
65
|
end
|
42
66
|
|
43
67
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module AlipayMini
|
2
|
+
module Api
|
3
|
+
class TradeCreate < AlipayBase
|
4
|
+
|
5
|
+
def get(trade_no, amount, subject, buyer_id, options = {})
|
6
|
+
trade_params = get_trade_params(trade_no, amount, subject, buyer_id, options)
|
7
|
+
params = base_params.merge(trade_params)
|
8
|
+
|
9
|
+
AlipayMini::Request.get(method, sign_params(params))
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def method
|
15
|
+
'alipay.trade.create'
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_trade_params(trade_no, amount, subject, buyer_id, options = {})
|
19
|
+
biz_content = {
|
20
|
+
out_trade_no: trade_no,
|
21
|
+
seller_id: options.fetch(:seller_id, nil),
|
22
|
+
total_amount: amount,
|
23
|
+
discountable_amount: options.fetch(:discountable_amount, nil),
|
24
|
+
subject: subject,
|
25
|
+
body: options.fetch(:body, nil),
|
26
|
+
buyer_id: buyer_id,
|
27
|
+
goods_detail: options.fetch(:goods_detail, nil),
|
28
|
+
operator_id: options.fetch(:operator_id, nil),
|
29
|
+
store_id: options.fetch(:store_id, nil),
|
30
|
+
terminal_id: options.fetch(:terminal_id, nil),
|
31
|
+
extend_params: options.fetch(:extend_params, nil),
|
32
|
+
timeout_express: options.fetch(:timeout_express, nil),
|
33
|
+
settle_info: options.fetch(:settle_info, nil),
|
34
|
+
logistics_detail: options.fetch(:logistics_detail, nil),
|
35
|
+
business_params: options.fetch(:business_params, nil),
|
36
|
+
receiver_address_info: options.fetch(:receiver_address_info, nil)
|
37
|
+
}
|
38
|
+
biz_content = AlipayMini::Utils.deep_compact(biz_content)
|
39
|
+
|
40
|
+
params = {
|
41
|
+
notify_url: options.fetch(:notify_url, nil),
|
42
|
+
app_auth_token: options.fetch(:app_auth_token, nil),
|
43
|
+
}
|
44
|
+
|
45
|
+
AlipayMini::Utils.deep_compact(params).merge(biz_content: biz_content.to_json)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/alipay_mini/sign.rb
CHANGED
@@ -33,8 +33,24 @@ module AlipayMini
|
|
33
33
|
else
|
34
34
|
false
|
35
35
|
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.async_verify?(params, options = {})
|
39
|
+
params = Utils.stringify_keys(params)
|
40
|
+
|
41
|
+
sign_type = params.fetch('sign_type')
|
42
|
+
sign = params.delete('sign')
|
43
|
+
public_key = options[:public_key] || AlipayMini.config[:public_key]
|
44
|
+
params.delete('sign_type') if options.fetch(:delete_sign_type, true)
|
36
45
|
|
46
|
+
string = AlipayMini::Utils.params_to_string(params)
|
37
47
|
|
48
|
+
case sign_type
|
49
|
+
when 'RSA2'
|
50
|
+
RSA2.verify?(public_key, string, sign)
|
51
|
+
else
|
52
|
+
false
|
53
|
+
end
|
38
54
|
end
|
39
55
|
|
40
56
|
end
|
data/lib/alipay_mini/utils.rb
CHANGED
@@ -15,6 +15,16 @@ module AlipayMini
|
|
15
15
|
params.sort.map{ |item| item.join('=') }.join('&')
|
16
16
|
end
|
17
17
|
|
18
|
+
def self.deep_compact(hash)
|
19
|
+
return hash unless hash.is_a?(::Hash)
|
18
20
|
|
21
|
+
hash.each_with_object({}) do |(k, v), compact_hash|
|
22
|
+
if v.is_a?(::Hash)
|
23
|
+
compact_hash[k] = deep_compact(v)
|
24
|
+
else
|
25
|
+
compact_hash[k] = v unless v.nil?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
19
29
|
end
|
20
30
|
end
|
data/lib/alipay_mini/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alipay_mini
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- renyijiu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- Gemfile.lock
|
81
81
|
- LICENSE
|
82
82
|
- README.md
|
83
|
+
- README_en.md
|
83
84
|
- Rakefile
|
84
85
|
- alipay_mini.gemspec
|
85
86
|
- bin/console
|
@@ -87,6 +88,7 @@ files:
|
|
87
88
|
- lib/alipay_mini.rb
|
88
89
|
- lib/alipay_mini/api/alipay_base.rb
|
89
90
|
- lib/alipay_mini/api/system_oauth_token.rb
|
91
|
+
- lib/alipay_mini/api/trade_create.rb
|
90
92
|
- lib/alipay_mini/api/user_info_share.rb
|
91
93
|
- lib/alipay_mini/config.rb
|
92
94
|
- lib/alipay_mini/request.rb
|
@@ -114,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
116
|
version: '0'
|
115
117
|
requirements: []
|
116
118
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.7.
|
119
|
+
rubygems_version: 2.7.7
|
118
120
|
signing_key:
|
119
121
|
specification_version: 4
|
120
122
|
summary: An unofficial simple alipay mini program gem
|