亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

微信小程序支付C#后端源碼

2019-10-29 19:59:30
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序支付C#后端源碼,供大家參考,具體內容如下

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.Mvc;using System.IO;using System.Security.Cryptography;using System.Text;using System.Xml;using Newtonsoft.Json;using Newtonsoft.Json.Linq;namespace Mvc_vue.Controllers{  public class wxController : Controller  {    //    // GET: /wx/    public ActionResult Index()    {      return View();    }    //所需值    public static string _appid = "wxd930ea5d5a258f4f";    public static string _mch_id = "10000100";    public static string _key = "192006250b4c09247ec02edce69f6a2d";    //模擬wx統一下單 openid(前臺獲取)    public string getda(string openid)    {      return Getprepay_id(_appid, "shanghaifendian", "monixiaofei", _mch_id, GetRandomString(30), "http://www.weixin.qq.com/wxpay/pay.php", openid, getRandomTime(), 1);    }        //微信統一下單獲取prepay_id & 再次簽名返回數據    private static string Getprepay_id(string appid, string attach, string body, string mch_id, string nonce_str, string notify_url, string openid, string bookingNo, int total_fee)    {      var url = "https://api.mch.weixin.qq.com/pay/unifiedorder";//微信統一下單請求地址      string strA = "appid=" + appid + "&attach=" + attach + "&body=" + body + "&mch_id=" + mch_id + "&nonce_str=" + nonce_str + "¬ify_url=" + notify_url + "&openid=" + openid + "&out_trade_no=" + bookingNo + "&spbill_create_ip=61.50.221.43&total_fee=" + total_fee + "&trade_type=JSAPI";      string strk = strA + "&key="+_key; //key為商戶平臺設置的密鑰key(假)      string strMD5 = MD5(strk).ToUpper();//MD5簽名      //string strHash=HmacSHA256("sha256",strmd5).ToUpper();  //簽名方式只需一種(MD5 或 HmacSHA256   【支付文檔需仔細看】)      //簽名      var formData = "<xml>";      formData += "<appid>" + appid + "</appid>";//appid       formData += "<attach>" + attach + "</attach>"; //附加數據(描述)      formData += "<body>" + body + "</body>";//商品描述      formData += "<mch_id>" + mch_id + "</mch_id>";//商戶號       formData += "<nonce_str>" + nonce_str + "</nonce_str>";//隨機字符串,不長于32位。       formData += "<notify_url>" + notify_url + "</notify_url>";//通知地址      formData += "<openid>" + openid + "</openid>";//openid      formData += "<out_trade_no>" + bookingNo + "</out_trade_no>";//商戶訂單號  --待      formData += "<spbill_create_ip>61.50.221.43</spbill_create_ip>";//終端IP --用戶ip      formData += "<total_fee>" + total_fee + "</total_fee>";//支付金額單位為(分)      formData += "<trade_type>JSAPI</trade_type>";//交易類型(JSAPI--公眾號支付)      formData += "<sign>" + strMD5 + "</sign>"; //簽名      formData += "</xml>";      //請求數據      var getdata = sendPost(url, formData);      //獲取xml數據      XmlDocument doc = new XmlDocument();      doc.LoadXml(getdata);      //xml格式轉json      string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);      JObject jo = (JObject)JsonConvert.DeserializeObject(json);      string prepay_id = jo["xml"]["prepay_id"]["#cdata-section"].ToString();      //時間戳      string _time = getTime().ToString();      //再次簽名返回數據至小程序      string strB = "appId=" + appid + "&nonceStr=" + nonce_str + "&package=prepay_id=" + prepay_id + "&signType=MD5&timeStamp=" + _time + "&key="_key;      wx w = new wx();      w.timeStamp = _time;      w.nonceStr = nonce_str;      w.package = "prepay_id=" + prepay_id;      w.paySign = MD5(strB).ToUpper(); ;      w.signType = "MD5";      //向小程序發送json數據       return JsonConvert.SerializeObject(w);    }    /// <summary>    /// 生成隨機串      /// </summary>    /// <param name="length">字符串長度</param>    /// <returns></returns>    private static string GetRandomString(int length)    {      const string key = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";      if (length < 1)        return string.Empty;      Random rnd = new Random();      byte[] buffer = new byte[8];      ulong bit = 31;      ulong result = 0;      int index = 0;      StringBuilder sb = new StringBuilder((length / 5 + 1) * 5);      while (sb.Length < length)      {        rnd.NextBytes(buffer);        buffer[5] = buffer[6] = buffer[7] = 0x00;        result = BitConverter.ToUInt64(buffer, 0);        while (result > 0 && sb.Length < length)        {          index = (int)(bit & result);          sb.Append(key[index]);          result = result >> 5;        }      }      return sb.ToString();    }    /// <summary>    /// 獲取時間戳    /// </summary>    /// <returns></returns>    private static long getTime()    {      TimeSpan cha = (DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)));      long t = (long)cha.TotalSeconds;      return t;    }    /// <summary>    /// MD5簽名方法     /// </summary>     /// <param name="inputText">加密參數</param>     /// <returns></returns>     private static string MD5(string inputText)    {      MD5 md5 = new MD5CryptoServiceProvider();      byte[] fromData = System.Text.Encoding.UTF8.GetBytes(inputText);      byte[] targetData = md5.ComputeHash(fromData);      string byte2String = null;      for (int i = 0; i < targetData.Length; i++)      {        byte2String += targetData[i].ToString("x2");      }      return byte2String;    }    /// <summary>    /// HMAC-SHA256簽名方式    /// </summary>    /// <param name="message"></param>    /// <param name="secret"></param>    /// <returns></returns>    private static string HmacSHA256(string message, string secret)    {      secret = secret ?? "";      var encoding = new System.Text.UTF8Encoding();      byte[] keyByte = encoding.GetBytes(secret);      byte[] messageBytes = encoding.GetBytes(message);      using (var hmacsha256 = new HMACSHA256(keyByte))      {        byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);        return Convert.ToBase64String(hashmessage);      }    }    /// <summary>    /// wx統一下單請求數據    /// </summary>    /// <param name="URL">請求地址</param>    /// <param name="urlArgs">參數</param>    /// <returns></returns>    private static string sendPost(string URL, string urlArgs)    {      //context.Request["args"]      System.Net.WebClient wCient = new System.Net.WebClient();      wCient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");      byte[] postData = System.Text.Encoding.ASCII.GetBytes("body=" + urlArgs);      byte[] responseData = wCient.UploadData(URL, "POST", postData);      string returnStr = System.Text.Encoding.UTF8.GetString(responseData);//返回接受的數據       return returnStr;202     }    /// <summary>    /// 生成訂單號    /// </summary>    /// <returns></returns>    private static string getRandomTime()    {      Random rd = new Random();//用于生成隨機數      string DateStr = DateTime.Now.ToString("yyyyMMddHHmmssMM");//日期      string str = DateStr + rd.Next(10000).ToString().PadLeft(4, '0');//帶日期的隨機數      return str;    }  }}

使用的是MVC .NET Framework4

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品pans私拍| 国产成人福利视频| 日韩亚洲第一页| 欧美日本高清视频| 亚洲字幕一区二区| 中文日韩在线视频| 国产成人97精品免费看片| 亚洲国产精品999| 国产精品自产拍高潮在线观看| 国产精品一区二区三区毛片淫片| 精品国产一区二区三区久久狼5月| 欧美一区二区大胆人体摄影专业网站| 国产日产欧美a一级在线| 欧美成人小视频| 97在线视频免费播放| 91精品国产综合久久久久久蜜臀| 国产精品爽黄69天堂a| 亚洲女人被黑人巨大进入al| 欧美电影院免费观看| 黑人欧美xxxx| 91亚洲永久免费精品| 97在线免费观看视频| 国产视频综合在线| 欧美成人午夜激情视频| 在线视频免费一区二区| 亚洲图片欧美午夜| 国产乱人伦真实精品视频| 美女av一区二区三区| 国产精品久久久久一区二区| 欧美日韩国产第一页| 欧美野外wwwxxx| 91九色国产社区在线观看| 久久久久久久久久久91| 91在线无精精品一区二区| 日韩小视频在线| 亚洲午夜小视频| 一区二区三区回区在观看免费视频| 精品成人久久av| 国产91在线播放九色快色| 亚洲人a成www在线影院| 2019中文字幕免费视频| 九九久久精品一区| 久久久久久久成人| 日韩欧美综合在线视频| 国产免费一区二区三区香蕉精| 日韩高清电影免费观看完整| 成人美女av在线直播| 亚洲福利视频在线| 在线观看久久久久久| 亚洲wwwav| 欧美激情视频在线免费观看 欧美视频免费一| 久久久久久久久久久av| 亚洲精品国精品久久99热一| 久久免费视频网| 国产精品va在线播放我和闺蜜| 欧美日韩精品在线观看| 欧美日本高清视频| 麻豆国产精品va在线观看不卡| 日韩国产精品亚洲а∨天堂免| 欧美另类极品videosbestfree| 欧美成人高清视频| 久久乐国产精品| 久久99久久99精品免观看粉嫩| 国产精品第3页| 亚洲精品狠狠操| 日韩av综合中文字幕| 亚洲自拍偷拍色片视频| 欧美精品情趣视频| 国产盗摄xxxx视频xxx69| 国产成人亚洲综合91精品| 国产成人aa精品一区在线播放| 日韩一区二区精品视频| 国内精品小视频在线观看| 欧美性猛交xxxx富婆| 在线观看中文字幕亚洲| 日韩成人av一区| 国产成人亚洲综合91| 精品国产31久久久久久| 精品国产一区av| www.亚洲免费视频| 日韩在线视频免费观看| 国内精品久久久久久| 97久久精品人人澡人人爽缅北| 亚洲第一精品久久忘忧草社区| 国产欧美一区二区| 亚洲国产免费av| 精品美女永久免费视频| 色婷婷成人综合| 懂色av影视一区二区三区| 在线播放精品一区二区三区| 懂色aⅴ精品一区二区三区蜜月| 久久99久久亚洲国产| 久久久久久久久久婷婷| 成人免费福利在线| 亚洲精品午夜精品| 爽爽爽爽爽爽爽成人免费观看| 在线观看国产成人av片| 日本不卡高字幕在线2019| 国产一区二区三区久久精品| 久久久国产一区二区三区| 亚洲aⅴ日韩av电影在线观看| 久久国产精品99国产精| 亚洲电影在线看| 亚洲自拍偷拍色片视频| 欧美激情一二区| 日韩在线视频播放| 538国产精品一区二区免费视频| 中文字幕日韩专区| 久久精品这里热有精品| 欧美专区第一页| 欧美成人激情在线| 一区二区在线视频| 国产精品91久久久久久| 国产精品wwww| 伦伦影院午夜日韩欧美限制| 久久精品成人欧美大片| 欧美视频在线观看免费网址| 亚洲国产精品久久久久久| 久久精品一本久久99精品| 青青久久av北条麻妃黑人| 欧美—级a级欧美特级ar全黄| 国产做受69高潮| 久久久亚洲福利精品午夜| 国产美女高潮久久白浆| 国产精品久久999| 欧美日韩国产精品一区二区三区四区| 国产精品一区二区三| 欧美电影免费在线观看| 97国产一区二区精品久久呦| 亚洲欧美日韩视频一区| 亚洲最新在线视频| 日韩三级成人av网| 国产精品久久电影观看| 精品亚洲夜色av98在线观看| 欧美中文在线视频| 国产欧美最新羞羞视频在线观看| 亚洲精品一区二区三区婷婷月| 全色精品综合影院| 2019亚洲日韩新视频| 亚洲自拍偷拍第一页| 性欧美办公室18xxxxhd| 奇米成人av国产一区二区三区| 欧美乱大交xxxxx另类电影| 精品色蜜蜜精品视频在线观看| 69视频在线播放| 在线看国产精品| 精品久久久一区| 欧美特黄级在线| 日韩影视在线观看| 日韩经典中文字幕| 亚洲一区亚洲二区亚洲三区| 国产欧美一区二区三区久久人妖| 久久成人人人人精品欧| 另类图片亚洲另类| 中文字幕日韩免费视频| 亚洲aⅴ男人的天堂在线观看| 亚洲色图av在线| 中文字幕av一区中文字幕天堂| 成人国产精品免费视频| 一区二区三区美女xx视频| 亚洲aⅴ日韩av电影在线观看| 欧美日韩一区二区在线| 欧美午夜激情在线| 国产精品露脸自拍|