#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 接口是开发过程中非常重要的工具,它们允许Ruby程序员充分利用Redis的高效数据存储和处理能力。Redis是一款开源的、基于键值对的数据结构存储系统,它以内存为运行基础,支持多种数据结构,如字符串、...
这个“ruby和redis接口”的压缩包可能包含了更多关于如何在实际项目中利用Ruby与Redis接口进行数据操作的例子和最佳实践。通过学习和理解这些接口,开发者能够充分利用Redis的性能优势,为应用程序提供高效的数据...
当我们需要搭建一个Redis集群时,Ruby的接口扮演着关键的角色。下面将详细介绍这两个工具以及它们之间的接口。 首先,Ruby语言以其简洁、灵活和强大的元编程能力受到开发者喜爱。在与Redis交互时,Ruby提供了多种库...
Ruby Ruby Ruby Ruby Ruby Ruby
RubyGraphViz是Ruby编程语言与GraphViz图形渲染库之间的接口,允许开发者在Ruby程序中生成复杂的图形和图表。GraphViz是一个强大的开源图形绘制软件,它能够自动生成有向无环图(DAG)、树状图、网络图等多种类型的...
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 ...
标题中的“ice最简单实现 ruby调用ice接口”是指在Ruby编程语言中使用ICE(Internet Communication Engine)框架来实现远程方法调用(RPC)。ICE是由ZeroC开发的一种跨平台、高性能的中间件,它允许不同语言的应用...
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...
Ruby是一种简洁而功能强大的编程语言,由日本的松本行弘(Yukihiro "Matz" Matsumoto)在1993年开发,并于...此外,由于技术不断更新,保持对最新Ruby版本的关注,以及学习相关的最佳实践和安全知识也是至关重要的。
Ruby是一种强大的、面向对象的脚本语言,广泛用于Web开发、服务器端编程和各种应用程序。在Ruby的世界里,管理不同的Ruby实现(如MRI、JRuby、Rubinius、MagLev和MRuby)是非常重要的,这有助于开发者根据项目需求...
这意味着整个框架不依赖于TensorFlow的C++或Python接口,而是完全在Ruby环境中运行。这为Ruby开发者提供了更直观、更无缝的体验,同时也减少了跨语言交互的复杂性。纯Ruby实现也意味着更少的依赖项,简化了安装和...
《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...
ruby源代码 ruby源代码 ruby源代码 ruby源代码2
src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...
4. **线程局部变量**:Ruby 3.1增加了对线程局部变量的支持,这些变量在每个线程中都有独立的副本,提高了多线程编程的安全性和效率。 5. **改进的错误消息**:错误消息现在更加详细,包含更多信息,帮助开发者更快...
根据提供的文件信息,我们将深入探讨与“Ruby编程Ruby Programming”这一主题相关的几个核心知识点。这本面向初学者和高级读者的指南旨在全面介绍Ruby编程语言的基础及其高级特性,因此我们将从多个角度来解析这些...
ruby源代码 ruby源代码 ruby源代码 ruby源代码4
这样,开发者可以直接在Web服务器上编写Ruby代码,而无需借助于像CGI或者FastCGI这样的接口。 **安装和配置mod_ruby:** 1. **安装Ruby**:首先,你需要在你的系统上安装Ruby。这可以通过包管理器(如apt-get或yum...