怎么核对md5,如何查看md5值
本文目录
建行网银怎么弄啊
建行的接口相对于支付宝,Q业务充值和移动,联通,电信,缴费接口要复杂一些,接口分为两块,一块是商户到银行,另外一块是银行到商户
1)客户登录商户网站,选择商户网站商品。
2)客户将选好的商品放入购物车,并下订单。商户提供商户代码、订单号、合计金额等信息;
3)客户选择代理付款的银行-建行,确认后,商户代码、订单信息、合计金额通过浏览器URL传到建行网上银行站点;网上银行自动显示支付页面,客户首先选择是否使用建行证书,然后输入龙卡号和密码,选择“确定”。支付信息经加密后传送到网银中心;
4)网银中心接收客户支付信息,转发到银行后台业务处理系统;
5)银行后台业务系统处理后,返回处理结果给网银;
6)网银通知客户支付(扣帐)是否成功。如果扣帐成功,提示客户注意接收商户返回的送货信息;对于不需要立即响应的商户,跳过步骤7、8;
7)对于需要立即响应的商户,如果支付成功,网银将成功结果反馈给商户。若支付失败,不返回给商户信息
8)对于需要立即响应的商户,收到银行扣帐成功的通知后,发给客户送货信息。如客户收到银行支付(扣帐)成功通知(步骤6),但未收到商户送货信息,则需向商户查询。日终时,商户与开设结算帐户的建设银行(网银成员行)进行流水核对,对已支付但未得到商户确认的交易进行退款处理。
商户到银行
--------------------------------------------------------------------------------
其实这一步是把自己卡里的钱转到商户的帐上,就是转账,
代码实现其实很简单,我们先来分析一上要传的参考吧
个人客户在商户网站选择商品后,商户网站生成以下信息,传送到建行网站:
域名
名称
类型
备注
MERCHANTID
商户代码
CHAR(9)
由建行统一分配
POSID
商户柜台代码
CHAR(9)
由建行统一分配,缺省为000000000
BRANCHID
分行代码
CHAR(9)
由建行统一指定
ORDERID
定单号
CHAR(30)
由商户提供,最长30位,按实际长度给出
PAYMENT
付款金额
NUMBER(16,2)
由商户提供,按实际金额给出
CURCODE
币种
CHAR(2)
缺省为01-人民币
REMARK1
备注1
CHAR(30)
网银不处理,直接传到城综网
REMARK2
备注2
CHAR(30)
网银不处理,直接传到城综网
TXCODE
交易码
CHAR(6)
由建行统一分配为520100
MAC
MAC校验域
CHAR(32)
采用标准MD5算法,由商户实现
注:商户要保证定单号的唯一性。
为了加快站点间接口开发,站点间接口的参数传送采用普通的URL方式,商户将以上信息包含在FORM中,在SUBMIT后将生成URL,如下所示:
.00&CURCODE=01
&TXCODE=520100&REMARK1=&REMARK2=&MAC=qwertyuioplkjhgfdsazxcvbnm901234
参与MAC运算的字符及其顺序如下:
MERCHANTID=123456789&POSID=000000000&BRANCHID=110000000&ORDERID=19991101234&PAYMENT=500.00&CURCODE=01&
TXCODE=520100&REMARK1=&REMARK2=
注:字符串中变量名必须是大写字母。
这是建行文档说的说明,很明显这是使用Http的方式来实现的
下面我们动手来实现一下吧,
我是把所有的参数生成了一个实体类这样方便,而且规范化,
来看看这个Model吧
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClientSystem.AliPay
{
///
///工行传入参数
///
public class CBBTextModel
{
private string _MERCHANTID="";
///
///商户代码由建行统一分配
///
public string MERCHANTID
{
get
set
}
private string _POSID="";
///
///商户柜台代码由建行统一分配,缺省为000000000
///
public string POSID
{
get
set
}
private string _BRANCHID="";
///
///分行代码由建行统一指定
///
public string BRANCHID
{
get
set
}
private string _ORDERID="";
///
///定单号由商户提供,最长30位,按实际长度给出
///
public string ORDERID
{
get
set
}
private decimal _PAYMENT= 0m;
///
///付款金额由商户提供,按实际金额给出
///
public decimal PAYMENT
{
get
set
}
private string _CURCODE="";
///
///币种缺省为01-人民币
///
public string CURCODE
{
get
set
}
private string REMARK1="";
///
///备注1网银不处理,直接传到城综网
///
public string REMARK11
{
get
set
}
private string REMARK2="";
///
///备注2网银不处理,直接传到城综网
///
public string REMARK21
{
get
set
}
private string _TXCODE="";
///
///交易码由建行统一分配为520100
///
public string TXCODE
{
get
set
}
private string _MAC="";
///
/// MAC校验域采用标准MD5算法,由商户实现
///
public string MAC
{
get
set
}
private string _url="";
///
/// URL
///
public string Url
{
get
set
}
}
}
我们来准备两个方法吧,一个是Http连接来使用的一个是Md5加密,因为在文档里写到要使用Md5加密哦
代码
#region//预定义方法或是变量
///
///请求指定 URL资源,并获取响应结果
///
///需要请求的 URL资源
///
///响应结果;
///出现任意异常,均返回字串"Runtime Error"
///
private string RequestContent(string url)
{
string content= string.Empty;
try
{
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(url);
request.KeepAlive= false;
HttpWebResponse response=(HttpWebResponse)request.GetResponse();
StreamReader reader= new StreamReader(response.GetResponseStream(), Encoding.Default);
content= reader.ReadToEnd();
reader.Close();
}
catch(Exception)
{
content="Runtime Error";
}
return content;
}
///
///传入明文,返回用MD%加密后的字符串
///
///要加密的字符串
///用MD5加密后的字符串
public static string ToMD5(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"md5");
}
#endregion
看一下充值按钮下面实现吧
代码
if(textBox1.Text.Trim()==""|| textBox1.Text.Trim()== null)
{
MessageBoxForm objm= new MessageBoxForm("您输入的金额不能为空!!!","提示信息");
objm.ShowDialog();
return;
}
string orid= OfficeInfo.ofId.ToString().Trim()+"_"+ DateTime.Now.Ticks.ToString();
Alipay objalipay= new Alipay();
objalipay.APID= orid;
objalipay.addTime= DateTime.Now;
objalipay.total_fee= Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status="客户端提交";
objalipay.Text1= DateTime.Now.ToString();
objalipay.Text2="建行接口";
objalipay.Text3="";
objalipay.Text4="";
objalipay.Text5="";
decimal money= Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if(money>; Convert.ToDecimal(textBox1.Text.Trim()))
{
MessageBoxForm objm= new MessageBoxForm("你输入的最小金额不能低于"+ money+"元!!!","提示信息");
objm.ShowDialog();
return;
}
if(user.AddAlipay(OfficeInfo.ofPara1, objalipay))
{
CBBTextModel objcbbText= new CBBTextModel();
//商户代码由建行统一分配
objcbbText.MERCHANTID="105411248160006";
//商户柜台代码由建行统一分配,缺省为000000000
objcbbText.POSID="768362719";
//分行代码由建行统一指定
objcbbText.BRANCHID="410000000";
//定单号由商户提供,最长30位,按实际长度给出
objcbbText.ORDERID= orid.Trim();
//付款金额由商户提供,按实际金额给出
objcbbText.PAYMENT= Convert.ToDecimal(textBox1.Text.Trim());
//币种缺省为01-人民币
objcbbText.CURCODE="01";
//备注1网银不处理,直接传到城综网
objcbbText.REMARK11="";
//备注2网银不处理,直接传到城综网
objcbbText.REMARK21="";
//交易码由建行统一分配为520100
objcbbText.TXCODE="520100";
//MAC校验域采用标准MD5算法,由商户实现
objcbbText.MAC="qwertyuioplkjhgfdsazxcvbnm901234";
//URL
objcbbText.Url="";
//要加密的串
string canshu="MERCHANTID="+ objcbbText.MERCHANTID.Trim()+
"&POSID="+ objcbbText.POSID.Trim()+"&BRANCHID="+ objcbbText.BRANCHID.Trim()
+"&ORDERID="+ objcbbText.ORDERID.Trim()+"&PAYMENT="+ objcbbText.PAYMENT.ToString().Trim()
+"&CURCODE="+ objcbbText.CURCODE+"&TXCODE="+ objcbbText.TXCODE.Trim()
+"&REMARK1=&REMARK2=";
objcbbText.MAC= ToMD5(canshu.Trim()).ToLower().Trim();
string strURl= objcbbText.Url+"?"+ canshu+"&MAC="+ objcbbText.MAC.Trim();
webBrowser1.Url= new Uri(strURl.Trim());
}
}
在这里大家一定要注意把 objcbbText.MAC= ToMD5(canshu.Trim()).ToLower().Trim();
加密后的字符串改成小写的
上面所提到的
代码
string orid= OfficeInfo.ofId.ToString().Trim()+"_"+ DateTime.Now.Ticks.ToString();
Alipay objalipay= new Alipay();
objalipay.APID= orid;
objalipay.addTime= DateTime.Now;
objalipay.total_fee= Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status="客户端提交";
objalipay.Text1= DateTime.Now.ToString();
objalipay.Text2="建行接口";
objalipay.Text3="";
objalipay.Text4="";
objalipay.Text5="";
decimal money= Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if(money>; Convert.ToDecimal(textBox1.Text.Trim()))
{
MessageBoxForm objm= new MessageBoxForm("你输入的最小金额不能低于"+ money+"元!!!","提示信息");
objm.ShowDialog();
return;
}
if(user.AddAlipay(OfficeInfo.ofPara1, objalipay))
{
这一部分代码是记录日志的,大家可以参考一下
我们现在只要运行程序就会出现如下界面所显示的内容
下面的操作就是输入你的卡号密码就可以了,
转账成功后我们这一步的工作就算是做完了
c语言怎么调用dll文件
1、新建DLLTest文件夹,在该文件夹中新建source文件夹。
2、在source文件夹中造add.c。
3、win+R+cmd请出总指挥“命令行”,输入。
4、继续输入(路径也要随机应变)link/DLL/out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。
5、新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来。
6、编译,连接运行出现个5。调用成功。
注意事项:
C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
相关文章
发表评论