alipay_mini 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
![](https://travis-ci.com/renyijiu/alipay_mini.svg?branch=master)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/alipay_mini.svg)](https://badge.fury.io/rb/alipay_mini)
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/38ee73000994e3721c04/maintainability)](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
|
+
![](https://travis-ci.com/renyijiu/alipay_mini.svg?branch=master)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/alipay_mini.svg)](https://badge.fury.io/rb/alipay_mini)
|
3
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/38ee73000994e3721c04/maintainability)](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
|