#by zcq100
require 'md5'
require "openssl"
module Payment::Cmb::Cmbpay
# merchantid 商家编号
#
# posid 商户柜台代码
#
#branchid 分行代码
#
#orderid 由商户提供的订单号码,最长30位,按实际长度给出
#
#payment 由商户提供,最长30位,按实际长度给出
#
#curcode 交易币种,默认01(人民币)
#
#txcode 由建行统一分配为690401(企业账户)520100(个体账户)
#
#remark1 网银不处理,直接传到城综网
#
#remark2 网银不处理,直接传到城综网
#
#个体商户的url可以直接GET请求提交参数,如果是企业商户参数必须POST提交
def pay(merchantid,posid,branchid,orderid,payment,curcode="01",txcode="520100",remark1="",remark2="")
#参考发送的url
#https://ibsbjstar.ccb.com.cn/app/ccbMain?MERCHANTID=123456789&POSID=000000000&BRANCHID=110000000&ORDERID=19991101234&PAYMENT=500.00&CURCODE=01&TXCODE=520100&REMARK1=&REMARK2=&MAC=qwertyuioplkjhgfdsazxcvbnm901234
baseurl="https://ibsbjstar.ccb.com.cn/app/ccbMain"
p=Hash.new
p[:MERCHANTID]=merchantid
p[:POSID]=posid
p[:BRANCHID]=branchid
p[:ORDERID]=orderid
p[:PAYMENT]=payment
p[:CURCODE]=curcode
p[:TXCODE]=txcode
p[:REMARK1]=remark1
p[:REMARK2]=remark2
#得到签名,签名是根据url和参数直接md5加密
p[:MAC]=sign p
url=baseurl+"?"+p.to_query()
end
#商家签名
def sign params
MD5.hexdigest(params.to_query())
end
#根据银行返回的签名检查url是否被篡改
def check_sign url
public_key="这里是公匙"
enctype=url.slice(url.rindex("&")+6,url.length);
str=url.slice(0,url.rindex("&"))
enctype_str=rsa_public_encrypt(str,public_key)
if enctype==enctype_str
return true
else
p "签名校验非法"
return false
end
end
#用公匙RSA签名参数
def rsa_public_encrypt(value , public_key)
rsa = OpenSSL::PKey::RSA.new(public_key)
rsa.public_encrypt(value)
end
end
分享到:
相关推荐
用ruby gem封装的alipay(支付宝)即时到帐接口调用,包含wap支付及手机客户端sdk支付,使用RSA验签 标签:ralipay
此工具为ruby和redis接口,用于搭建redisCluster集群,好用!
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码
Ruby/GraphViz - GraphViz绘图工具的Ruby接口
ruby和redis接口.zipruby和redis接口.zipruby和redis接口.zipruby和redis接口.zipruby和redis接口.zipruby和redis接口.zip
Tilt - 多个Ruby模板引擎的通用接口
ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,
《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...
ruby源代码 ruby源代码 ruby源代码 ruby源代码2
ruby源代码 ruby源代码 ruby源代码 ruby源代码4
ruby笔记1ruby笔记1ruby笔记1ruby笔记1ruby笔记1ruby笔记1
Ruby on Rails应用程序的安全注意事项清单
ruby源代码 ruby源代码 ruby源代码 ruby源代码3
ruby-build - 编译和安装Ruby
ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件
Rack提供了一个最小化,模块化和适应性强的界面,用于在Ruby中开发Web应用程序。 通过以最简单的方式包装HTTP请求和响应,它将Web服务器,Web框架和软件(所谓的中间件)之间的API统一并提炼成单个方法调用。
此脚本为搭建Redis集群环境必须安装的脚本。若未安装,则无法搭建集群。
ice最简单实现 ruby调用ice接口 - Ruby - language - ITeye论坛