在线银联之实例操作
2018-06-18 03:02:48来源:未知 阅读 ()
最了写了一个asp.net的在线银联支付的功能,看了网上的半天才弄出来自已的。希望能对大家有所用。
1,先在线银联去申请,然后,他们那边会给你一个包,然后把包名字更改下key,放到你的Web项目的根目录中,跟其他的目录结构在同一级别上。
2,如果你是asp.net的项目,可以去网上去找这几个文件,或者直接像我要也可以的哈,
3,如下分别上传代码给大家展示下,
1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.Web.Security; 6 using System.Web.UI; 7 using System.Web.UI.HtmlControls; 8 using System.Web.UI.WebControls; 9 using System.Web.UI.WebControls.WebParts; 10 using ChinaPay_JY; 11 12 namespace DTcms.Web.api.payment.chinapay 13 { 14 /// <summary> 15 ///Chinapay 的摘要说明 16 /// </summary> 17 public partial class Chinapay :System.Web.UI.Page 18 { 19 string strUrl = HttpContext.Current.Request.PhysicalApplicationPath; //获取网站根目录物理路径 20 public Chinapay() 21 { 22 } 23 ///////////////////////////////////////////////////////////////////////////////////////// 24 // 二次开发 Eric Chen 2014.12.05 25 ///////////////////////////////////////////////////////////////////////////////////////// 26 27 /// <summary> 28 /// 订单签名函数sign 29 /// </summary> 30 /// <param name="MerId">商户号,长度为15个字节的数字串,由ChinaPay或清算银行分配</param> 31 /// <param name="OrdId">订单号,长度为16个字节的数字串,由用户系统/网站生成,失败的订单号允许重复支付</param> 32 /// <param name="TransAmt">交易金额,长度为12个字节的数字串,例如:数字串"000000001234"表示12.34元</param> 33 /// <param name="CuryId">货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为"156"</param> 34 /// <param name="TransDate">交易日期,长度为8个字节的数字串,表示格式为:YYYYMMDD</param> 35 /// <param name="TransType">交易类型,长度为4个字节的数字串,取值范围为:"0001"和"0002", 其中"0001"表示消费交易,"0002"表示退货交易</param> 36 /// <returns>string CheckValue[256] 即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串</returns> 37 public string getSign(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType) 38 { 39 NetPayClientClass npc = new NetPayClientClass(); //实例NetPay签名 40 //npc.setMerKeyFile("Bin/MerPrK.key"); //设置商户密钥文件地址 d:\\MerPrK.key 41 npc.setMerKeyFile(strUrl + "\\key\\MerPrK.key"); 42 string strChkValue = ""; //chinapay返回的商户数字签名 43 strChkValue = npc.sign(MerId, OrdId, TransAmt, CuryId, TransDate, TransType); 44 return strChkValue.Trim(); 45 } 46 /// <summary> 47 /// 对一段字符进行签名 signData 48 /// </summary> 49 /// <param name="MerId">商户号,长度为15个字节的数字串,由ChinaPay分配</param> 50 /// <param name="SignMsg">用于要签名的字符串</param> 51 /// <returns>String CheckValue[256]即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串</returns> 52 public string signData(string MerId, string SignMsg) 53 { 54 NetPayClientClass npc = new NetPayClientClass(); //实例NetPay签名 55 //npc.setMerKeyFile("Bin/MerPrK.key"); //设置商户密钥文件地址 d:\\MerPrK.key 56 npc.setMerKeyFile(strUrl + "\\key\\MerPrK.key"); 57 string strChkValueData = ""; 58 strChkValueData = npc.signData(MerId, SignMsg); 59 return strChkValueData.Trim(); 60 } 61 62 ........ 86 /// <summary> 87 /// 对一段字符串进行签名验证 checkData 88 /// </summary> 89 /// <param name="PlainData">用于数字签名的字符串</param> 90 /// <param name="CheckValue">校验值,要验证的字符串的数字签名,长度为256字节的字符串</param> 91 /// <returns>true 表示验证通过成功;否则表示失败</returns> 92 public bool checkData(string PlainData, string CheckValue) 93 { 94 NetPayClientClass npc = new NetPayClientClass(); //实例NetPay签名 95 //npc.setPubKeyFile("Bin/PgPubk.key"); //设置chinapay公共密钥文件地址 d:\\PgPubk.key 96 npc.setPubKeyFile(strUrl + "\\key\\PgPubk.key"); 97 string strFlagData = ""; 98 bool bolFlagData = false; 99 strFlagData = npc.checkData(PlainData, CheckValue); 100 if (strFlagData == "true") 101 bolFlagData = true; 102 return bolFlagData; 103 } 104 } 105 }
如需要更改的话,需要跟你的业务和代码来改写里面的部分代码即可,Ok,continue......
Chinapay_Send.cs
1 using System; 2 using System.Collections; 3 using System.Configuration; 4 using System.Data; 5 using System.Web; 6 using System.Web.Security; 7 using System.Web.UI; 8 using System.Web.UI.HtmlControls; 9 using System.Web.UI.WebControls; 10 using System.Web.UI.WebControls.WebParts; 11 12 using DTcms.Web.api.payment.chinapay; 13 14 public partial class payonline_chinapay_Chinapay_Bgreturn : System.Web.UI.Page 15 { 16 protected void Page_Load(object sender, EventArgs e) 17 { 18 Chinapay cpy = new Chinapay(); 19 string TransDate = "",MerId = "",OrdId = "",TransType = "",TransAmt = "",CuryId = "",ChkValue = "",OrderStatus = "",GateId = "",Priv1 = ""; 20 bool bolCheck=false; 21 22 TransDate = Request["transdate"].Trim(); 23 MerId = Request["merid"].Trim(); 24 OrdId = Request["orderno"].Trim(); 25 TransType = Request["transtype"].Trim(); 26 TransAmt = Request["amount"].Trim(); 27 CuryId = Request["currencycode"].Trim(); //交易币种 28 ChkValue = Request["checkvalue"].Trim(); 29 OrderStatus = Request["status"].Trim(); 30 GateId = Request["GateId"].Trim(); //支付网关号 31 Priv1 = Request["Priv1"].Trim(); //商户私有域 32 ///检验是否是银联chinapay返回的交易数据 33 bolCheck = cpy.getCheck(MerId,OrdId,TransAmt,CuryId,TransDate,TransType,OrderStatus,ChkValue); 34 if (bolCheck) 35 Response.Write("<script>alert('后台接收到应答');</script>"); 36 else 37 Response.Write("<script>alert('后台没有接收到应答');</script>"); 38 } 39 }
1 using System; 2 using System.Collections; 3 using System.Configuration; 4 using System.Data; 5 using System.Web; 6 using System.Web.Security; 7 using System.Web.UI; 8 using System.Web.UI.HtmlControls; 9 using System.Web.UI.WebControls; 10 using System.Web.UI.WebControls.WebParts; 11 12 using System.Data.SqlClient; 13 using DTcms.Web.api.payment.chinapay; 14 namespace DTcms.Web.api.payment.balance 15 { 16 public partial class payonline_chinapay_Chinapay_Pgreturn : System.Web.UI.Page 17 { 18 protected void Page_Load(object sender, EventArgs e) 19 { 20 //YX_sql Exsql = new YX_sql(); 21 //ChangHope_DB db = new ChangHope_DB(); 22 Chinapay cpy = new Chinapay(); 23 string TransDate = "", MerId = "", OrdId = "", TransType = "", TransAmt = "", CuryId = "", ChkValue = "", OrderStatus = "", GateId = "", Priv1 = ""; 24 bool bolCheck = false; 25 26 TransDate = Request["transdate"].Trim(); 27 MerId = Request["merid"].Trim(); 28 OrdId = Request["orderno"].Trim(); 29 TransType = Request["transtype"].Trim(); 30 TransAmt = Request["amount"].Trim(); 31 CuryId = Request["currencycode"].Trim(); //交易币种 32 ChkValue = Request["checkvalue"].Trim(); 33 OrderStatus = Request["status"].Trim(); 34 GateId = Request["GateId"].Trim(); //支付网关号 35 Priv1 = Request["Priv1"].Trim(); //商户私有域,内容是订单自增编号 36 ///检验是否是银联chinapay返回的交易数据 37 bolCheck = cpy.getCheck(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, OrderStatus, ChkValue); 38 if (bolCheck) //bolCheck=true,检测返回参数是银联发送的,进入处理流程 39 { 40 try 41 { 42 ///******************************** 43 ///这里写成功接收到银联支付成功后你自己要处理的流程,比如修改买、卖家金额等,订单状态等 44 ///******************************** 45 46 } 47 catch (Exception) 48 { 49 //ChangeHope_fc.Show_Msg("参数错误,请稍后再试!", db.System_Http() + "/vipuser/default_vip.aspx"); 50 } 51 } 52 //else 53 //ChangeHope_fc.Show_Msg("参数错误,请稍后再试!", db.System_Http() + "/vipuser/default_vip.aspx"); 54 } 55 } 56 57 }
代码中有很多注释啦,我就不再熬熟啦。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 数据流中的中位数 2019-02-17
- 37.QT-QTSingleApplication-程序只运行一个实例 2019-02-17
- C语言实例解析精粹学习笔记——19 2018-12-04
- C语言实例解析精粹学习笔记——18 2018-12-04
- 抽象类和接口都不能被实例化 2018-09-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash