中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET Core如何實現微信小程序支付功能

發布時間:2021-05-21 10:04:27 來源:億速云 閱讀:504 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關.NET Core如何實現微信小程序支付功能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

開通小程序的支付能力

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

.NET Core如何實現微信小程序支付功能

以上三個步驟就申請完成

1、提交資料給微信

2、微信審核并簽署協議

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

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

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

.NET Core如何實現微信小程序支付功能

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

.NET Core如何實現微信小程序支付功能

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

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

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

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

.NET Core如何實現微信小程序支付功能

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

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

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

.NET Core如何實現微信小程序支付功能

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

代碼實現統一支付

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

微信小程序支付官方圖:

.NET Core如何實現微信小程序支付功能

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

引用包:

Senparc.Weixin.WxOpen

Senparc.Weixin.TenPay

注冊公眾號,小程序信息

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

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

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

部分前端代碼如下:

.NET Core如何實現微信小程序支付功能

.NET Core如何實現微信小程序支付功能

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

.NET Core如何實現微信小程序支付功能

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

.NET Core如何實現微信小程序支付功能

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

微信支付回調

微信支付回調規則如下:

.NET Core如何實現微信小程序支付功能

回調代碼實現

///<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告訴微信,否則微信會隔一段時間就會回調一次,直到回調次數用盡,這里也需要自己業務處理好狀態。

感謝各位的閱讀!關于“.NET Core如何實現微信小程序支付功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南汇区| 嘉黎县| 肥乡县| 五大连池市| 宣威市| 邯郸市| 宝清县| 赣榆县| 邹城市| 翁源县| 南雄市| 上犹县| 闵行区| 阳曲县| 乌鲁木齐县| 鄯善县| 全州县| 宁陵县| 闻喜县| 施甸县| 河曲县| 大渡口区| 湖南省| 文登市| 大石桥市| 札达县| 云林县| 广水市| 屯昌县| 敖汉旗| 新昌县| 襄城县| 黄石市| 赣榆县| 临泉县| 濉溪县| 全椒县| 朔州市| 若羌县| 定边县| 金乡县|