leangem 1.2.0 → 2.0.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/func.rb +103 -0
  3. data/lib/pay_gateway.rb +70 -0
  4. metadata +12 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9f9fc9b45ebad49274582dbae51b3c4059999a8
4
- data.tar.gz: 1de7b6ca4b4936e8bb14abcf266a83354e74987d
3
+ metadata.gz: 37a75ad7865736b5687ba20554ab5960ba945215
4
+ data.tar.gz: 1979327502a410a08fea60040a32d072b12e1b43
5
5
  SHA512:
6
- metadata.gz: 055668531270d1627430a0a014a93239771c2303fb6158bf42c9c041df32b6af14d6b2a265fa00761b73df74b829c7bf20206c39fe057b8028e228a7b98f952c
7
- data.tar.gz: 5b557fe8ea067cf9d12b26f80cf0a53e5c18ec8dc7a3347d22a5cdd6aa6bec111b4716109d35abbc0287beddb6a23e64719460f3afbabf528a6176d8e8005deb
6
+ metadata.gz: 1206d253c2dd8167d4363d94c7453ff7ee73792d846812ef6803f0f9061fee1db3e98162092824b0644762cf5fc3bb0ced0fc601e2aa87c192f4c19e1b3b1962
7
+ data.tar.gz: 0ab9ff2d866aa38710278113da5417c6d0b8500618bd3cc83409b0dcfc35c998393b148282ea89b5db79eb523ad649173c483e419978457777978ebdd8d1c45f
data/lib/func.rb ADDED
@@ -0,0 +1,103 @@
1
+ class Func
2
+ # 判断是否含有中文
3
+ def self.ischinese(temp)
4
+ (temp=~/[\u4e00-\u9fa5]/).nil? ? false : true
5
+ end
6
+
7
+ # 判断是否只含有中英文,数字和下划线
8
+ def self.iscn_zn_num(temp)
9
+ (temp=~/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/).nil? ? false : true
10
+ end
11
+
12
+ # 格式化时间
13
+ def self.formattime(time)
14
+ time.strftime("%Y-%m-%d %H:%M:%S")
15
+ end
16
+
17
+ # 限制文字长度
18
+ def self.truncate_u(text, length = 30, truncate_string = "...")
19
+ l=0
20
+ char_array=text.unpack("U*")
21
+ char_array.each_with_index do |c, i|
22
+ l = l+ (c<127 ? 0.5 : 1)
23
+ if l>=length
24
+ return char_array[0..i].pack("U*")+(i<char_array.length-1 ? truncate_string : "")
25
+ end
26
+ end
27
+ return text
28
+ end
29
+
30
+ # 金额大写小转换
31
+ def self.uppercase(nums)
32
+ cstr = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
33
+ cn_nums1 = ["元", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟"]
34
+ cn_nums2 = ['分', '角']
35
+ s = ""
36
+ # 整数部分
37
+ array = nums.to_s.split(".")
38
+ p h = array[0].to_s.split(//)
39
+ ai = h.count
40
+ h.each_with_index do |a, j|
41
+ s+=cstr[a.to_i]+cn_nums1[ai-1]
42
+ ai=ai-1
43
+ end
44
+ # 小数部分
45
+ p h1 = array[1].to_s.split(//)
46
+ aj = h1.count
47
+ h1.each_with_index do |o, p|
48
+ s+=cstr[o.to_i]+cn_nums2[aj-1]
49
+ aj=aj-1
50
+ end
51
+ rstr = ""
52
+ rstr=s.gsub("拾零", "拾")
53
+ rstr=rstr.gsub("零拾", "零");
54
+ rstr=rstr.gsub("零佰", "零");
55
+ rstr=rstr.gsub("零仟", "零");
56
+ rstr=rstr.gsub("零萬", "萬");
57
+ for i in 1..6 do
58
+ rstr=rstr.gsub("零零", "零");
59
+ rstr=rstr.gsub("零萬", "零");
60
+ rstr=rstr.gsub("零億", "億");
61
+ rstr=rstr.gsub("零零", "零");
62
+ end
63
+ rstr=rstr.gsub("零角", "零");
64
+ rstr=rstr.gsub("零分", "");
65
+ rstr=rstr.gsub("零元", "");
66
+ end
67
+
68
+ require 'net/http'
69
+ require 'net/https'
70
+ require 'uri'
71
+
72
+ # get请求
73
+ # 参数url:网址,header:请求头json类型如:{'Accept' => 'application/json', 'X-Requested-With' => 'XMLHttpRequest'}
74
+ # 返回response对象,response.code 状态200/304/404;response.body 内容
75
+ def self.get(url, params=nil, header=nil)
76
+ uri = URI.parse(url)
77
+ http = Net::HTTP.new(uri.host, uri.port)
78
+ http.use_ssl = true if uri.scheme == 'https'
79
+ request = Net::HTTP::Get.new(uri.request_uri)
80
+ if !params.blank?
81
+ request.form_data = params
82
+ end
83
+ if !header.nil?
84
+ request.initialize_http_header(header)
85
+ end
86
+ http.request(request)
87
+ end
88
+
89
+ def self.post(url, params=nil, header=nil)
90
+ uri = URI.parse(url)
91
+ http = Net::HTTP.new(uri.host, uri.port)
92
+ http.use_ssl = true if uri.scheme == 'https'
93
+ request = Net::HTTP::Post.new(uri.request_uri)
94
+ if !params.blank?
95
+ request.set_form_data(params)
96
+ end
97
+ if !header.nil?
98
+ request.initialize_http_header(header)
99
+ end
100
+ http.request(request)
101
+ end
102
+
103
+ end
@@ -0,0 +1,70 @@
1
+ class PayGateway
2
+ #gemfile中加入 gem 'iconv'
3
+ require 'net/https'
4
+ require 'uri'
5
+ # 支付接口地址
6
+ URL_UTF8 = "https://pay3.chinabank.com.cn/PayGate?encoding=UTF-8"
7
+ # 图片和css文件地址
8
+ URL = "https://pay3.chinabank.com.cn"
9
+ # 功能:网银在线,网管支付;
10
+ # 参数:
11
+ # v_mid:商户编号
12
+ # key:商户md5密钥
13
+ # v_url:支付成功后跳转的页面
14
+ # remark2:异步订单状态地址,remark2 = "[url:=http://domain/chinabank/AutoReceive.aspx]"格式必须是[url:=xxx]
15
+ # v_oid:订单编号
16
+ # v_amount:订单金额
17
+ # v_moneytype:支付货币类型
18
+ def self.pay(v_mid, key, v_url, remark2, v_oid, v_amount, v_moneytype = "CNY")
19
+ v_md5info = PayGateway.md5info(v_mid, key, v_url, v_oid, v_amount, v_moneytype)
20
+ # {'v_mid'=>v_mid,'v_oid'=>v_oid,'v_amount'=>v_amount,'v_moneytype'=>v_moneytype,'v_url'=>v_url,'v_md5info'=>v_md5info,'pmode_id'=>pmode_id,'remark2'=>remark2}
21
+ response = Func.post(URL_UTF8,{'v_mid'=>v_mid,'v_oid'=>v_oid,'v_amount'=>v_amount,'v_moneytype'=>v_moneytype,'v_url'=>v_url,'v_md5info'=>v_md5info,'remark2'=>remark2})
22
+ html = Iconv.iconv('utf-8', 'gbk', response.body).first
23
+ html.scan(/[href|src]=("[^"]*.[css|js|gif|jpg]")/).each do |h|
24
+ html = html.gsub(h[0],URL+eval(h[0]).gsub('..',''))
25
+ end
26
+ html
27
+ end
28
+
29
+ # 功能:获取md5info信息
30
+ # 参数:
31
+ # v_mid:商户编号
32
+ # key:商户md5密钥
33
+ # v_url:支付成功后跳转的页面
34
+ # v_oid:订单编号
35
+ # v_amount:订单金额
36
+ # v_moneytype:支付货币类型
37
+ def self.md5info(v_mid, key, v_url, v_oid, v_amount, v_moneytype = "CNY")
38
+ Digest::MD5.hexdigest(v_amount.to_s + v_moneytype + v_oid + v_mid + v_url + key).upcase
39
+ end
40
+
41
+ # string str = v_oid + v_pstatus + v_amount + v_moneytype + key;
42
+ # 功能:自动验证结果
43
+ # 参数:
44
+ # params参数
45
+ # v_oid = Request["v_oid"];
46
+ # v_pstatus = Request["v_pstatus"];
47
+ # v_pstring = Request["v_pstring"];
48
+ # v_pmode = Request["v_pmode"];
49
+ # v_md5str = Request["v_md5str"];
50
+ # v_amount = Request["v_amount"];
51
+ # v_moneytype = Request["v_moneytype"];
52
+ # remark1 = Request["remark1"];
53
+ # remark2 = Request["remark2"];
54
+ # key商户的md5密钥
55
+ # 返回:如果支付成功返回订单号,否则返回nil
56
+ def self.receive(params,key)
57
+ v_oid = params["v_oid"]
58
+ v_pstatus = params["v_pstatus"]
59
+ v_md5str = params["v_md5str"] #该参数的MD5字符串的顺序为:v_oid,v_pstatus,v_amount,v_moneytype,key
60
+ v_amount = params["v_amount"]
61
+ v_moneytype = params["v_moneytype"]
62
+ # 20(表示支付成功)
63
+ # 30(表示支付失败)
64
+ if v_pstatus=="20" && v_md5str==Digest::MD5.hexdigest(v_oid+v_pstatus+v_amount+v_moneytype+key)
65
+ return params["v_oid"]
66
+ else
67
+ return nil
68
+ end
69
+ end
70
+ end
metadata CHANGED
@@ -1,26 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leangem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lean
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-06 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A image upload and yz
13
+ description: vcode,fileupload,pager,imageupload,func,pay_gateway
14
14
  email: leanv@sina.com
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
- - lib/imageupload.rb
20
19
  - lib/fileupload.rb
21
- - lib/vcode.rb
20
+ - lib/func.rb
21
+ - lib/imageupload.rb
22
22
  - lib/pager.rb
23
- homepage: http://rubygems.org/gems/imageupload
23
+ - lib/pay_gateway.rb
24
+ - lib/vcode.rb
25
+ homepage: http://rubygems.org/gems/leangem
24
26
  licenses:
25
27
  - Lean
26
28
  metadata: {}
@@ -30,18 +32,18 @@ require_paths:
30
32
  - lib
31
33
  required_ruby_version: !ruby/object:Gem::Requirement
32
34
  requirements:
33
- - - '>='
35
+ - - ">="
34
36
  - !ruby/object:Gem::Version
35
37
  version: '0'
36
38
  required_rubygems_version: !ruby/object:Gem::Requirement
37
39
  requirements:
38
- - - '>='
40
+ - - ">="
39
41
  - !ruby/object:Gem::Version
40
42
  version: '0'
41
43
  requirements: []
42
44
  rubyforge_project:
43
- rubygems_version: 2.0.3
45
+ rubygems_version: 2.4.3
44
46
  signing_key:
45
47
  specification_version: 4
46
- summary: image upload..
48
+ summary: leangem!
47
49
  test_files: []