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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 微信小程序支付——(统一下单)

發布時間:2023/12/4 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 微信小程序支付——(统一下单) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近公司研發了幾個電商小程序,還有一個核心的電商直播,只要是電商一般都會涉及到交易信息,離不開支付系統,這里我們統一實現小程序的支付流程(與服務號實現步驟一樣)。
目錄
1、開通小程序的支付能力
2、商戶后臺綁定同一主體的APPID并授權
3、預先設置回調地址,商戶后臺設置開發的配置
4、代碼實現統一支付5、微信支付回調
6、總結

1

開通小程序的支付能力

開通小程序支付功能比較簡單,基本上按微信文檔一步一步的申請就好,如圖

以上三個步驟就申請完成

1、提交資料給微信

2、微信審核并簽署協議

3、商戶后臺綁定同主體的APPID

2

商戶后臺綁定同一主體的APPID并授權

1、登錄商戶后臺https://pay.weixin.qq.com,進入產品中心—APPID授權管理,進入授權頁面如圖:

2、填寫相關已認證APPID信息,閱讀并簽署《微信支付商戶號與APPID授權協議》,點擊“確認”提交,發起授權申請,如下圖:

3、發起授權申請后,商戶需自行前往對應平臺確認授權申請。

小程序:前往公眾平臺,點擊“微信支付-商戶號管理”,查看相關商戶號信息,確認授權申請,或在“公眾平臺安全助手”下發的模板消息中確認授權信息;

公眾號/訂閱號:前往公眾平臺,點擊“微信支付-商戶號管理”,查看相關商戶號信息,確認授權申請;

APP:前往開放平臺,點擊“管理中心-查看-微信支付-商戶號管理”,查看相關商戶號信息,確認授權申請;

4. 以上步驟綁定成功,可以實現微信支付功能。

3

預先設置回調地址,商戶后臺設置開發的配置

預先設置好回調地址后,方便支付成功后收到微信通知來處理業務,設置也比較簡單不用多說,如圖:

根據自己的需求設置不同的回調地址。

4

代碼實現統一支付

1、統一支付,只要是微信公眾號平臺的同一主體都可以使用同一個支付,只需要在商戶后臺綁定APPID即可。

微信小程序支付官方圖:

微信支付文檔說明地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1

引用包:

Senparc.Weixin.WxOpen

Senparc.Weixin.TenPay

注冊公眾號,小程序信息

services.AddSenparcGlobalServices(Configuration) .AddSenparcWeixinServices(Configuration);

IRegisterService register = RegisterService.Start(env, senparcSetting.Value).UseSenparcGlobal(false, null); register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value) .RegisterTenpayV3(senparcWeixinSetting.Value,?"appid");

前端調用統一下單接口,獲取prepayId

部分前端代碼如下:

后端部分代碼截圖獲取prepayId,如需代碼請與我聯系

提交統一支付成功后,會出現如下圖:

注:一般正常獲取到prepayid就可以發起支付,請確保所給的參數正確。

5

微信支付回調

微信支付回調規則如下:

回調代碼實現

///<summary> /// 微信支付回調地址 /// </summary> /// <returns></returns> [HttpPost("PayNotifyUrl")] public ActionResult PayNotifyUrl() { ResponseResult result = new ResponseResult(); ResponseHandler resHandler = new ResponseHandler(HttpContext); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); try { var mch_key = Senparc.Weixin.Config.SenparcWeixinSetting.TenPayV3_Key; resHandler.SetKey(mch_key); var notifyXml = resHandler.ParseXML(); bool signFlag = resHandler.IsTenpaySign(); if (signFlag && return_code.ToUpper() == "SUCCESS") { string attach = resHandler.GetParameter("attach"); string device_info = resHandler.GetParameter("device_info"); string out_trade_no = resHandler.GetParameter("out_trade_no"); string transaction_id = resHandler.GetParameter("transaction_id"); string total_fee = resHandler.GetParameter("total_fee"); PayOrderNotifyParam param = new PayOrderNotifyParam() { PayNo = out_trade_no, Attach = attach, PayPrice = decimal.Parse(total_fee) / 100, TransactionNo = transaction_id, }; //回調參數說明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3 //Logger.Info(string.Format("支付回調接收參數成功,notifyXml={0},param={1}", notifyXml, param.SerializeObject())); result = Service.PayNotifyUrl(param); if (result.errno != 0) { //回調處理邏輯失敗 Logger.Error(string.Format("支付回調處理失敗:支付單號:{0},{1}", param.PayNo, result.errmsg)); } else { Logger.Info(string.Format("支付回調處理成功,支付單號:{0}", param.PayNo)); string xml = string.Format(@"<xml> <return_code><![CDATA[{0}]]></return_code> <return_msg><![CDATA[{1}]]></return_msg> </xml>", return_code, return_msg); return Content(xml, "text/xml"); } } else { //錯誤的訂單處理 Logger.Error(string.Format("支付回調接失敗,signFlag={0},notifyXml={1}", signFlag, notifyXml)); } } catch (Exception ex) { Logger.Error(string.Format("支付回調異常:Message={0},StackTrace={1}", ex.Message, ex.StackTrace)); } return Content("fail", "text/xml"); }

回調接口最好驗證下簽名是否正確,驗證簽名請先設置下商戶KEY,如簽名成功,微信支付成功,這時可以處理業務數據。

注:如果業務處理成功最好返回SUCCESS告訴微信,否則微信會隔一段時間就會回調一次,直到回調次數用盡,這里也需要自己業務處理好狀態。

6

總結

以上流程就是微信支付過程,以上步驟由于一些隱私問題部分代碼采用了截圖,如有不明白之處請與我聯系,我們一起交流學習,下一篇文章我們將實現微信退款功能。

相關推薦

  • .NET Core 小程序開發零基礎系列(1)——開發者啟用并牽手成功

  • .NET Core 小程序開發零基礎系列(2)——小程序服務通知(模板消息)

  • .net core redis的全套操作

  • .NETCore 實現容器化Docker與私有鏡像倉庫管理


點擊【在看】與好朋友一起分享

寫留言一起交流

總結

以上是生活随笔為你收集整理的.NET Core 微信小程序支付——(统一下单)的全部內容,希望文章能夠幫你解決所遇到的問題。

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