.net 站點整合【先鋒支付】線上充值實現簡單整理
.net 站點整合【先鋒支付】線上充值實現簡單整理
其實和其他支付通道一樣,提交充值申請,監測回撥即可
1、提交線上支付
string ucfpayTotalFee = ObjectHandlers.Get("ucfpayTotalFee"); string rechangeType = ObjectHandlers.Get("rechangeType"); string url = ucfpayPostURL + "?"; string merKey = memberKey; string service = "REQ_GET_TOKEN"; string version = versionID; string secId = secretId; string merchantId = memberchantId; string reqId = DateTime.Now.ToString("yyyyMMddHHmmssffff", DateTimeFormatInfo.InvariantInfo); merchantNo = reqId; string[] keykks = Request.Form.AllKeys; Hashtable paramPar = new Hashtable(); paramPar.Add("service", service); paramPar.Add("version", version); paramPar.Add("secId", secId); paramPar.Add("merchantId", merchantId); paramPar.Add("reqId", reqId); string paramString = UcfpayUtils.sortParam(paramPar); if (paramString.StartsWith("&")) { paramString = paramString.Substring(1); } url = url + paramString; paramString = paramString + merKey; string sign = UcfpayUtils.md5Sign(paramString.ToString()); url = url + "&sign=" + sign; //獲取先鋒支付安全token令牌,每次請求唯一token string token = UcfpayUtils.getToken(url); singleToken = token; if (!String.IsNullOrEmpty(token)) { //把請求引數打包成陣列,重新生成sign,提交到收銀臺支付請求 Hashtable paramPar2 = new Hashtable(); paramPar2.Add("service", "TO_UCF_CASHIER"); paramPar2.Add("secId", secId); paramPar2.Add("version", version); paramPar2.Add("token", token); paramPar2.Add("merchantId", merchantId); paramPar2.Add("merchantNo", merchantNo); //每次訂單號 paramPar2.Add("source", "1"); //1、pc 2、移動端 paramPar2.Add("productType", "WE"); paramPar2.Add("payerId", ""); paramPar2.Add("amount", (TranDataType.ObjToInt(ucfpayTotalFee) * 100).ToString()); //付款金額 paramPar2.Add("transCur", "156");//156人民幣 paramPar2.Add("accountType", "3"); //1、借記卡 2、信用卡 3、借貸不區分 paramPar2.Add("productName", "諸葛投資線上支付"); paramPar2.Add("productInfo", "諸葛投資線上支付"); paramPar2.Add("returnUrl", ucfpayURL + "/ucfpay/ucfpayReturnUrl"); paramPar2.Add("noticeUrl", ucfpayURL + "/ucfpay/ucfpayNoticeUrl"); paramPar2.Add("expireTime", ""); paramPar2.Add("memo", ""); string paramString2 = UcfpayUtils.sortParam(paramPar2); if (paramString2.StartsWith("&")) { paramString2 = paramString2.Substring(1); } string merKey2 = memberKey; paramString2 = paramString2 + merKey2; //生成本次訂單支付提交sign標識 string sign2 = UcfpayUtils.md5Sign(paramString2.ToString()); paramPar2.Add("sign", sign2); //組合提交表單資料 StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form id='ucfpaysubmit' name='ucfpaysubmit' action='" + ucfpayPostURL + "' method='post'>"); foreach (DictionaryEntry temp in paramPar2) { sbHtml.Append("<input type='hidden' name='" + temp.Key + "' value='" + temp.Value + "'/>"); } //submit按鈕控制元件請不要含有name屬性 sbHtml.Append("<input type='submit' value='確認' style='display:none;'></form>"); sbHtml.Append("<script>document.forms['ucfpaysubmit'].submit();</script>"); //新增充值記錄 return sbHtml.ToString(); }2、非同步回撥
string merchantId = String.IsNullOrEmpty(ObjectHandlers.Post("merchantId")) ? "" : ObjectHandlers.Post("merchantId").ToString(); string merchantNo = String.IsNullOrEmpty(ObjectHandlers.Post("merchantNo")) ? "" : ObjectHandlers.Post("merchantNo").ToString(); string amount = String.IsNullOrEmpty(ObjectHandlers.Post("amount")) ? "" : ObjectHandlers.Post("amount").ToString(); string transCur = String.IsNullOrEmpty(ObjectHandlers.Post("transCur")) ? "" : ObjectHandlers.Post("transCur").ToString(); string memo = String.IsNullOrEmpty(ObjectHandlers.Post("memo")) ? "" : ObjectHandlers.Post("memo").ToString(); string tradeNo = String.IsNullOrEmpty(ObjectHandlers.Post("tradeNo")) ? "" : ObjectHandlers.Post("tradeNo").ToString(); string status = String.IsNullOrEmpty(ObjectHandlers.Post("status")) ? "" : ObjectHandlers.Post("status").ToString(); string tradeTime = String.IsNullOrEmpty(ObjectHandlers.Post("tradeTime")) ? "" : ObjectHandlers.Post("tradeTime").ToString(); string sign = String.IsNullOrEmpty(ObjectHandlers.Post("sign")) ? "" : ObjectHandlers.Post("sign").ToString(); Hashtable paramPar = new Hashtable(); paramPar.Add("merchantId", merchantId); paramPar.Add("merchantNo", merchantNo); paramPar.Add("amount", amount); paramPar.Add("transCur", transCur); paramPar.Add("memo", memo); paramPar.Add("tradeNo", tradeNo); paramPar.Add("status", status); paramPar.Add("tradeTime", tradeTime); string paramString = UcfpayUtils.sortParam(paramPar); if (paramString.StartsWith("&")) { paramString = paramString.Substring(1); } string merKey = memberKey; paramString = paramString + merKey; string mysign = UcfpayUtils.md5Sign(paramString.ToString()); if (mysign.Equals(sign)) { #region 業務處理 if (status.Equals("S")) { return "SUCCESS"; } return ""; #endregion } else { return "SIGN_ERROR";//簽名錯誤 }3、return 回撥,同2
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- android 整合微信支付和支付寶支付其實很簡單Android
- Laravel 整合 EasyAlipay 實現支付寶手機網站 Wap 支付Laravel網站
- 用python實現簡單的線上翻譯程式Python
- SpringBoot(二)整合支付寶 - 電腦網站支付和查詢賬單Spring Boot網站
- django 網站實現簡單分頁Django網站
- 簡單實現.NET Hook與事件模擬Hook事件
- 呼叫支付介面,實現直播帶貨系統原始碼的線上支付原始碼
- nginx Win下實現簡單的負載均衡(2)站點共享SessionNginx負載Session
- 超簡單整合HMS ML Kit 實現parental control
- SpringBoot整合MongoDB(實現一個簡單快取)Spring BootMongoDB快取
- 簡單介紹ASP.NET Core實現檔案上傳和下載ASP.NET
- 簡單實現點選回到頂部
- SpringBoot3整合SpringDoc實現線上介面文件Spring Boot
- Pytorch 實現簡單線性迴歸PyTorch
- 超簡單整合ML kit 實現聽寫單詞播報
- 一個簡單輕便的移動支付整合庫FastPayAST
- 刀鋒伺服器的簡單介紹及其優點伺服器
- 重新整理 .net core 實踐篇—————配置系統之簡單配置中心[十一]
- Lumen/Laravel 整合 GatewayWorker (Workerman),實現簡單的聊天系統.LaravelGateway
- SpringBoot2 整合 WebSocket 簡單實現聊天室功能Spring BootWeb
- 超簡單整合 HMS ML Kit 實現最大臉微笑抓拍
- 曝光實體線上現場同步靠譜網站網站
- 簡單實現帶節點的進度條
- 用 Rust 實現簡單的光線追蹤Rust
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- 線上直播系統原始碼,簡單實現Android應用的啟動頁原始碼Android
- python實現的簡單點對點(p2p)聊天Python
- Android | 超簡單整合HMS ML Kit實現最大臉微笑抓拍Android
- Nginx 實戰核心知識點整理(上)Nginx
- “人類先鋒”點亮物聯網燈塔
- 【Serverless實戰】傳統單節點網站的Serverless上雲Server網站
- 數字先鋒 | 上雲!讓“媒”好“發聲”
- ASP.NET Core 簡單整合簽發 JWT (JSON Web Tokens)ASP.NETJWTJSONWeb
- .NET使用OllamaSharp實現大模型推理對話的簡單演示大模型
- 使用go net實現簡單的redis通訊協議YWSVGoRedis協議
- Promise 簡單實現Promise
- ReadableStream 簡單實現
- Express 簡單實現Express