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.
- 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: []
|