my_alipay 0.1.1 → 0.2.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/README.md +7 -2
- data/lib/my_alipay/{wap/notify.rb → notify.rb} +2 -1
- data/lib/my_alipay/page/service.rb +16 -0
- data/lib/my_alipay/sign/md5.rb +7 -0
- data/lib/my_alipay/sign/rsa2.rb +17 -0
- data/lib/my_alipay/sign.rb +41 -0
- data/lib/my_alipay/version.rb +1 -1
- data/lib/my_alipay/wap/service.rb +2 -2
- data/lib/my_alipay.rb +6 -2
- metadata +7 -4
- data/lib/my_alipay/wap/sign.rb +0 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7291f13df6dc9dacdd574500ad29cbdf40cd0a6
|
|
4
|
+
data.tar.gz: 3cdf65d10dc52155c0ce5cc92815355b5f4d021b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87fb064c53ae8a6d64b82b50a0f0cabe46ec1351e8aef7dc5c4b02f4c15c4531c41f50abd2b4e8fc1907573a98daec47679a10841a18942780b8f9d85f2207af
|
|
7
|
+
data.tar.gz: a61849d084951189162aabd2bfbea378a879f48d582225ec1c4c36764f65d9a4407a322c91d3235e1356ce7aee1acd762b533d43f73dc567063f7296f874697a
|
data/README.md
CHANGED
|
@@ -57,8 +57,13 @@ params ={
|
|
|
57
57
|
|
|
58
58
|
url = MyAlipay::Wap::Service.create_alipay_trade_wap_pay_url params
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
|
|
61
|
+
#显示支付页面方式
|
|
62
|
+
# 1.跳转到支付页面
|
|
63
|
+
redirect_to url
|
|
64
|
+
|
|
65
|
+
# 2. 或者在html页面跳转,显示支付页面
|
|
66
|
+
window.location.href = url
|
|
62
67
|
|
|
63
68
|
```
|
|
64
69
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module MyAlipay
|
|
2
|
+
module Page
|
|
3
|
+
module Service
|
|
4
|
+
GATEWAY_URL = 'https://openapi.alipayde.com/gateway.do'
|
|
5
|
+
|
|
6
|
+
#电脑网站支付url
|
|
7
|
+
def self.create_alipay_trade_page_pay_url(params, options = {})
|
|
8
|
+
sign_params = MyAlipay::Sign.generate params,{method: 'alipay.trade.page.pay'}
|
|
9
|
+
MyAlipay.gateway_url + '?' + sign_params[:sign_str] + "&sign=#{ERB::Util.url_encode(sign_params[:sign])}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module MyAlipay
|
|
2
|
+
module Sign
|
|
3
|
+
class Rsa2
|
|
4
|
+
#rsa2 SHA256
|
|
5
|
+
def self.sign(key, string)
|
|
6
|
+
#如果秘钥key开头没有-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----需要base64解码,如果有则不需要进行解码
|
|
7
|
+
rsa = OpenSSL::PKey::RSA.new(Base64.decode64(key))
|
|
8
|
+
digest = OpenSSL::Digest::SHA256.new
|
|
9
|
+
sign = Base64.strict_encode64(rsa.sign(digest, string))
|
|
10
|
+
{sign_str: string, sign: sign}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
#sign_string = "app_id=2016080200146859&biz_content={\"subject\":\"测试数据\",\"out_trade_no\":\"123456\",\"total_amount\":\"100\",\"product_code\":\"QUICK_WAP_PAY\"}&charset=UTF-8&method=alipay.trade.wap.pay&sign_type=RSA2×tamp=2014-07-24 03:07:50&version=1.0"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module MyAlipay
|
|
2
|
+
module Sign
|
|
3
|
+
|
|
4
|
+
def self.generate(params, options = {})
|
|
5
|
+
method = options[:method] || 'alipay.trade.wap.pay'
|
|
6
|
+
sign_type = options[:sign_type] || MyAlipay.sign_type
|
|
7
|
+
if method == 'alipay.trade.wap.pay'
|
|
8
|
+
#手机支付
|
|
9
|
+
params[:biz_content] = params[:biz_content].merge({product_code: "QUICK_WAP_PAY"}).to_json
|
|
10
|
+
elsif method == 'alipay.trade.page.pay'
|
|
11
|
+
#电脑网站支付
|
|
12
|
+
params[:biz_content] = params[:biz_content].merge({product_code: "FAST_INSTANT_TRADE_PAY"}).to_json
|
|
13
|
+
end
|
|
14
|
+
params = {
|
|
15
|
+
app_id: MyAlipay.app_id,
|
|
16
|
+
method: method,
|
|
17
|
+
charset: 'UTF-8',
|
|
18
|
+
#format: 'JSON',
|
|
19
|
+
sign_type: 'RSA2',
|
|
20
|
+
timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
|
21
|
+
version: '1.0',
|
|
22
|
+
biz_content: ''
|
|
23
|
+
}.merge(params)
|
|
24
|
+
hash_str = params.stringify_keys #{a:1,b:2} 转换成 {'a'= '1','b'='2'}
|
|
25
|
+
sign_str = MyAlipay::Utils.params_to_string hash_str
|
|
26
|
+
|
|
27
|
+
case sign_type
|
|
28
|
+
when 'RSA2'
|
|
29
|
+
sign = Rsa2.sign(MyAlipay.app_private_key, sign_str)
|
|
30
|
+
when 'MD5'
|
|
31
|
+
sign = 'MD5'
|
|
32
|
+
else
|
|
33
|
+
raise ArgumentError, "invalid sign_type #{sign_type}, allow value: 'MD5', 'RSA2'"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
return sign
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
data/lib/my_alipay/version.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
module MyAlipay
|
|
2
2
|
module Wap
|
|
3
3
|
module Service
|
|
4
|
-
GATEWAY_URL = 'https://openapi.
|
|
4
|
+
GATEWAY_URL = 'https://openapi.alipayde.com/gateway.do'
|
|
5
5
|
#ALIPAYCONFIG = YAML.load_file("config/myalipay.yml")[Rails.env].with_indifferent_access.freeze
|
|
6
6
|
|
|
7
7
|
#手机支付url
|
|
8
8
|
def self.create_alipay_trade_wap_pay_url(params, options = {})
|
|
9
|
-
sign_params = MyAlipay::
|
|
9
|
+
sign_params = MyAlipay::Sign.generate params,{method: 'alipay.trade.wap.pay'}
|
|
10
10
|
MyAlipay.gateway_url + '?' + sign_params[:sign_str] + "&sign=#{ERB::Util.url_encode(sign_params[:sign])}"
|
|
11
11
|
end
|
|
12
12
|
|
data/lib/my_alipay.rb
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
require 'my_alipay/version'
|
|
2
2
|
require 'my_alipay/utils'
|
|
3
|
-
require 'my_alipay/
|
|
3
|
+
require 'my_alipay/sign'
|
|
4
|
+
require 'my_alipay/notify'
|
|
5
|
+
require 'my_alipay/sign/rsa2'
|
|
6
|
+
require 'my_alipay/sign/md5'
|
|
4
7
|
require 'my_alipay/wap/service'
|
|
5
|
-
require 'my_alipay/wap/notify'
|
|
6
8
|
require 'my_alipay/wap/test'
|
|
9
|
+
require 'my_alipay/page/service'
|
|
10
|
+
|
|
7
11
|
|
|
8
12
|
module MyAlipay
|
|
9
13
|
@debug_mode = true
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: my_alipay
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- yancheng
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-09-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -52,11 +52,14 @@ files:
|
|
|
52
52
|
- bin/console
|
|
53
53
|
- bin/setup
|
|
54
54
|
- lib/my_alipay.rb
|
|
55
|
+
- lib/my_alipay/notify.rb
|
|
56
|
+
- lib/my_alipay/page/service.rb
|
|
57
|
+
- lib/my_alipay/sign.rb
|
|
58
|
+
- lib/my_alipay/sign/md5.rb
|
|
59
|
+
- lib/my_alipay/sign/rsa2.rb
|
|
55
60
|
- lib/my_alipay/utils.rb
|
|
56
61
|
- lib/my_alipay/version.rb
|
|
57
|
-
- lib/my_alipay/wap/notify.rb
|
|
58
62
|
- lib/my_alipay/wap/service.rb
|
|
59
|
-
- lib/my_alipay/wap/sign.rb
|
|
60
63
|
- lib/my_alipay/wap/test.rb
|
|
61
64
|
- my_alipay.gemspec
|
|
62
65
|
homepage: https://github.com/yanchengv/my_alipay
|
data/lib/my_alipay/wap/sign.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module MyAlipay
|
|
2
|
-
module Wap
|
|
3
|
-
module Sign
|
|
4
|
-
|
|
5
|
-
#rsa2 SHA256
|
|
6
|
-
def self.generate_wap_sign(params)
|
|
7
|
-
params[:biz_content] = params[:biz_content].to_json
|
|
8
|
-
params = {
|
|
9
|
-
app_id: MyAlipay.app_id,
|
|
10
|
-
method: 'alipay.trade.wap.pay',
|
|
11
|
-
charset: 'UTF-8',
|
|
12
|
-
#format: 'JSON',
|
|
13
|
-
sign_type: 'RSA2',
|
|
14
|
-
timestamp: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
|
15
|
-
version: '1.0',
|
|
16
|
-
biz_content: ''
|
|
17
|
-
}.merge(params)
|
|
18
|
-
|
|
19
|
-
hash_str = params.stringify_keys #{a:1,b:2} 转换成 {'a'= '1','b'='2'}
|
|
20
|
-
sign_str = MyAlipay::Utils.params_to_string hash_str
|
|
21
|
-
#sign_str = "app_id=2016080200146859&biz_content={\"subject\":\"测试数据\",\"out_trade_no\":\"123456\",\"total_amount\":\"100\",\"product_code\":\"QUICK_WAP_PAY\"}&charset=UTF-8&method=alipay.trade.wap.pay&sign_type=RSA2×tamp=2014-07-24 03:07:50&version=1.0"
|
|
22
|
-
#如果秘钥key开头没有-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----需要base64解码,如果有则不需要进行解码
|
|
23
|
-
rsa = OpenSSL::PKey::RSA.new(Base64.decode64(MyAlipay.app_private_key))
|
|
24
|
-
digest = OpenSSL::Digest::SHA256.new
|
|
25
|
-
sign = Base64.strict_encode64(rsa.sign(digest, sign_str))
|
|
26
|
-
{sign_str: sign_str,sign: sign}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|