leangem 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/func.rb +103 -0
- data/lib/pay_gateway.rb +70 -0
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37a75ad7865736b5687ba20554ab5960ba945215
|
4
|
+
data.tar.gz: 1979327502a410a08fea60040a32d072b12e1b43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/pay_gateway.rb
ADDED
@@ -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:
|
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:
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
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/
|
20
|
+
- lib/func.rb
|
21
|
+
- lib/imageupload.rb
|
22
22
|
- lib/pager.rb
|
23
|
-
|
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.
|
45
|
+
rubygems_version: 2.4.3
|
44
46
|
signing_key:
|
45
47
|
specification_version: 4
|
46
|
-
summary:
|
48
|
+
summary: leangem!
|
47
49
|
test_files: []
|