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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e765c3809b95c8376c319675b8700c146d838b3e
4
- data.tar.gz: c0160973abcce049ac80f7681756cff93704422d
3
+ metadata.gz: f7291f13df6dc9dacdd574500ad29cbdf40cd0a6
4
+ data.tar.gz: 3cdf65d10dc52155c0ce5cc92815355b5f4d021b
5
5
  SHA512:
6
- metadata.gz: 922040f0fd80588e41392143a8527d1aa2431d627c3d07c208fe5424e0be71e2e7600602adb45e3bf3e465f8c14bdf46682392be13c7af3cf28a960d47ca9ebe
7
- data.tar.gz: 769376c99c23db099173081493ca18c1647c58e300b7a8876f37c36c4c1d7300d669d129754c1f6519ed86f3ef4da988203548af6632901ca136b65524b789b3
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
- redirect_to url #或者在html页面跳转 window.location.href = url
60
+
61
+ #显示支付页面方式
62
+ # 1.跳转到支付页面
63
+ redirect_to url
64
+
65
+ # 2. 或者在html页面跳转,显示支付页面
66
+ window.location.href = url
62
67
 
63
68
  ```
64
69
 
@@ -1,8 +1,9 @@
1
+ #通知验签
1
2
  module MyAlipay
2
3
  module Wap
3
4
  module Notify
4
5
 
5
- def self.wap_notify params
6
+ def self.verify? params
6
7
  params.stringify_keys
7
8
  params.delete('sign_type')
8
9
  params.delete('controller')
@@ -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,7 @@
1
+ module MyAlipay
2
+ module Sign
3
+ class Md5
4
+
5
+ end
6
+ end
7
+ 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&timestamp=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
@@ -1,3 +1,3 @@
1
1
  module MyAlipay
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,12 +1,12 @@
1
1
  module MyAlipay
2
2
  module Wap
3
3
  module Service
4
- GATEWAY_URL = 'https://openapi.alipaydev.com/gateway.do'
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::Wap::Sign.generate_wap_sign params
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/wap/sign'
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.1.1
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-06-02 00:00:00.000000000 Z
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
@@ -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&timestamp=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