日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 使用X509Certificate2获取数字证书信息对接联通沃支付

發布時間:2023/12/20 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 使用X509Certificate2获取数字证书信息对接联通沃支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.支付公司準備標準聯調信息

?包括????????.訂單查詢接口地址: ? ??
????????????????.訂單退款接口地址: ? ?
????????????????.接 ? ? 口 ? ? 文 ? 檔:
????????????????.商 ?戶 ? ? 號 ? ? 碼 :
????????????????.分 ? ? 賬 ? ?信 ? ?息:
????????????????.證 ? 書 ? ?密 ? ? 碼 :
????????????????.DEMO ? ? ? ? ? ? ? :?
????????????????.證 ? ?書 ? 路 ? ? 徑:
????????????????.沃 ? ? 賬 ? ?戶 ? 號(付款用):
????????????????.支 ? 付 ? 密 ? ? ?碼(付款用):

證書包括一個私鑰證書一個公鑰證書,密碼相同

2.使用X509Certificate2根據私鑰證書生成簽名

所謂簽名即你要給對方傳遞的參數的經給私鑰證書加密后的密文,單筆支付模塊需要你將參數明文、密文都傳遞過去。第二步只是說明如何生成參數。

將要生成的簽名的參數遍歷成一個字符串,需根據參數名的ASKII碼排序(一定要排,不然對方驗簽通不過),并使用管道符“|”拼接起來,例如 amount=8200|callbackUrl=http://localhost:8003/orderPayCallback.jsp|charSet=GBK|customerEmail=jkdfda@qq.com

/// <summary>/// 獲取證書私鑰對簽名進行SHA256加密/// </summary>/// <param name="str">要加密的參數字符串</param>/// <returns></returns>public byte[] CaRsaEncrypt(){//例子,實際參數不止這些string str = "amount=8200|callbackUrl=http://localhost:8003/orderPayCallback.jsp|charSet=GBK|customerEmail=jkdfda@qq.com";//證書物理路徑、密碼string cert = ConfigurationManager.AppSettings["cerAddress"]?.ToString(); ;string certPwd = ConfigurationManager.AppSettings["certPwd"]?.ToString(); ;//調用證書 傳入路徑、密碼、存儲標識枚舉 X509Certificate2 privateCert = new X509Certificate2(cert, certPwd, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);RSACryptoServiceProvider privateKey = (RSACryptoServiceProvider)privateCert.PrivateKey;// 獲取私鑰 RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();privateKey1.ImportParameters(privateKey.ExportParameters(true));byte[] data = Encoding.UTF8.GetBytes(str);//使用SHA256加密byte[] signature = privateKey1.SignData(data, "SHA256");//對簽名密文進行Base64編碼 return signature;}

3.單筆訂單支付

? ? ? ? 支付需將具體參數(參考接口文檔)通過前臺頁面form表單提交至對方指定地址(暫不支持后臺請求接口)。

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head><body><form name="form1" method="post" action=""><input type="hidden" name="interfaceVersion" value=""><input type="hidden" name="tranType" value=""><input type="hidden" name="bankCode" value=""><input type="hidden" name="merNo" value=""><input type="hidden" name="goodsName" value=""><input type="hidden" name="orderDate" value=""><input type="hidden" name="orderNo" value=""><input type="hidden" name="amount" value=""><input type="hidden" name="charSet" value=""><input type="hidden" name="tradeMode" value=""><input type="hidden" name="reqTime" value=""><input type="hidden" name="respMode" value=""><input type="hidden" name="callbackUrl" value=""><input type="hidden" name="serverCallUrl" value=""><input type="hidden" name="signType" value=""><input type="hidden" name="signMsg" value=""><p>&nbsp; </p><button type="submit" form-type="submit|reset">保存</button></form></body></html>

其中signMsg是其他所有參數的密文簽名。支付公司會對你發送的明文參數與密文簽名進行驗簽,接下來說明如何生成密文簽名。

4.在聯通收銀臺支付后,返回商戶網站

支付時回調地址作為參數傳過去,支付完成后聯通沃支付將頁面重定向至你給他傳的回調地址上,并攜帶參數,參數同樣包括明文密文,需要在我們的回調地址方法中進行驗簽和業務處理后,再重定向至自己網站的支付成功頁面。

//在控制器用此方式接收對方傳入的參數 var @params = HttpContext.Request.Form;

在驗簽時,我們將對方傳過來的參數按照第二步同樣的方式,按參數列表的鍵的ASKII碼排序并用管道符“|”拼接為字符(注意,要將參數列表中的signMsg密文簽名去除)。

//將對方傳的加密簽名從Base64字符串轉字節數組byte[] signMsgBytes = Convert.FromBase64String(orderPay.PAY_BACK_SIGNMSG);//參數字符串轉字節數組byte[] paramsBytes = Encoding.UTF8.GetBytes(paramsMsg);//驗簽Boolean VerifyResult = RSADecrypt(paramsBytes, signMsgBytes);

注意要將對方的密文簽名進行base64解碼后,再進行驗簽。

/// <summary>/// 驗證密文是否相同/// </summary>/// <param name="signDataToDecrypt">元數據</param>/// <param name="DataToDecrypt">簽名數據</param>/// <returns></returns>public Boolean RSADecrypt(Byte[] signDataToDecrypt, Byte[] DataToDecrypt){try{//證書路徑string cert = ConfigurationManager.AppSettings["cerAddressPublic"]?.ToString(); ;string certPwd = ConfigurationManager.AppSettings["certPwd"]?.ToString(); ;//調用證書 X509Certificate2 privateCert = new X509Certificate2(cert, certPwd, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();//獲取證書公鑰var publicKey = privateCert.PublicKey.Key.ToXmlString(false);RSA.FromXmlString(publicKey);Boolean signaFlag = RSA.VerifyData(signDataToDecrypt, "SHA256", DataToDecrypt);return signaFlag;}catch (Exception ex){LogHelper.WriteErrorLog(ex);return false;}}

總結

以上是生活随笔為你收集整理的C# 使用X509Certificate2获取数字证书信息对接联通沃支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久无码国产精品 | 成人一区二区三区仙踪林 | 少妇脚交调教玩男人的视频 | 麻豆视频在线 | 91免费版黄色 | 久久9久久| 亚洲性猛交富婆 | 久久韩日| 日韩欧美色 | 亚洲第一视频在线 | 丝袜国产一区 | 伊人久久九 | 在线免费观看国产 | 中国人与拘一级毛片 | 国产永久免费观看 | 亚洲av无码专区在线 | 一出一进一爽一粗一大视频 | 日韩美女中文字幕 | 国产在线中文字幕 | 天堂草在线观看 | 91片黄在线观 | 精品国产视频一区二区 | 久久久综合久久 | 致命魔术电影高清在线观看 | 69热在线观看| 精品少妇一区二区 | 色啊色| 亚洲精品网站在线播放gif | 天天干,夜夜操 | 国产成人77亚洲精品www | 双性娇喘浑圆奶水h男男漫画 | 日韩欧美在线不卡 | 精品久久久久久一区二区里番 | 亚洲黄色在线视频 | 日日干,夜夜操 | 日本午夜电影 | 天堂va蜜桃一区 | 美女三级黄色片 | 超碰丝袜 | 毛茸茸多毛bbb毛多视频 | 青青草在线免费视频 | 激情综合六月 | 一边吃奶一边摸做爽视频 | 欧美国产一区二区 | 亚洲福利视频导航 | 精品熟女一区二区三区 | 国产欧美一区二区三区沐欲 | 成人区人妻精品一区二区网站 | 国产女主播在线 | 精品人妻午夜一区二区三区四区 | 久久久久久国产精品免费 | 国产亚洲无码精品 | 美女天天干| 午夜三级av | 黄色免费网站视频 | 午夜精品极品粉嫩国产尤物 | 伊人色区 | 打开每日更新在线观看 | 欧美在线激情视频 | 国产农村妇女精品 | 乱淫的女高中暑假调教h | jzz国产| 精品蜜桃一区二区三区 | 国产精品偷伦视频免费观看了 | 日韩美女中文字幕 | 波多野结衣视频一区二区 | 欧美精品久久久久久久自慰 | 五月天久久久久久 | а天堂中文在线官网 | 豆花视频在线播放 | 91麻豆精品国产理伦片在线观看 | 在线观看av一区二区 | 玩弄人妻少妇500系列 | 日本a免费 | 国产福利在线观看视频 | 久久精品视频在线播放 | 免费成人深夜夜视频 | 最新国产一区 | 97超在线 | 一级片免费看视频 | 天天干天天爱天天操 | 蜜桃视频在线观看污 | 91视频国产精品 | 四虎影视最新网址 | 国产一区二区在线观看免费 | 美女久久久久 | 91色精品| 日韩成人免费在线 | 影音先锋欧美资源 | 91超碰国产在线 | 丰满少妇中文字幕 | 50度灰在线| 国产精品一区免费观看 | 日韩的一区二区 | 天天狠狠 | 久草影视在线 | 丰满的女人性猛交 | 亚洲性图av| 欧美激情一区二区三区 |