leangem 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []