您现在的位置是:首页 > 数码 > 

c# 小程序支付模板

2025-07-27 02:30:15
c# 小程序支付模板 支付模板   public class PayHelper{public static readonly string appid = wxd678efh567hg6787;public static readonly string mchid = 62;public static rea

c# 小程序支付模板

支付模板

 

public class PayHelper{public static readonly string appid = wxd678efh567hg6787;public static readonly string mchid = 1490840662;public static readonly string key = dfd547fab; // 支付key/// <summary>/// 统一支付/// </summary>/// <param name=num>支付金额</param>/// <param name=openid>用户openid</param>/// <param name=orderum>订单号</param>/// <param name=bodyContent>订单内容</param>/// <param name=ip>客户端ip</param>/// <returns></returns>public static PayModel UnifiedOrder(int num, string openid, string orderum, string bodyContent, string ip){PayModel model = new PayModel();string url = ;string nonceStr = GetonceStr();Dictionary<string, string> dicParam = new Dictionary<string, string>();dicParam.Add(appid, appid); // 应用程序iddicParam.Add(mch_id, mchid); // 商户iddicParam.Add(nonce_str, nonceStr); // 随机字符串dicParam.Add(body, bodyContent);dicParam.Add(out_trade_no, orderum); // 单号dicParam.Add(total_fee, num.ToString()); // 支付金额dicParam.Add(spbill_create_ip, ip);dicParam.Add(notify_url, ); // 回调dicParam.Add(trade_type, JSAPI);dicParam.Add(openid, openid);string signValue = WxSignCalc(dicParam.ToList(), key);dicParam.Add(sign, signValue);var temp = dicParam.ToList();temp.Sort((item1, item2) => string.Compare(item1.Key, item2.Key));StringBuilder data = new StringBuilder();data.Append(<xml>);foreach (var item in temp){data.Append($<{item.Key}>{item.Value}</{item.Key}>);}data.Append(</xml>);HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;request.Method = POST;//设置数据类型和长度request.ContentType = text/xml;                              byte[] buf = System.Text.Encoding.UTF8.GetBytes(data.ToString());request.ContentLength = buf.Length;// 发送数据Stream reqStream = request.GetRequestStream();reqStream.Write(buf, 0, buf.Length);reqStream.Close();HttpWebRespe respe = request.GetRespe() as HttpWebRespe;string content = string.Empty;using (StreamReader rs = new StreamReader(respe.GetRespeStream())){content = rs.ReadToEnd();}XmlDocument xml = new XmlDocument();xml.LoadXml(content);string returnCode = xml.GetElementsByTagame(return_code).Item(0).InnerText;if (returnCode == FAIL)return model;string prepayId = xml.GetElementsByTagame(prepay_id).Item(0).InnerText;string timeStamp = Convert.ToInt64(( - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds).ToString();List<KeyValuePair<string, string>> datas = new List<KeyValuePair<string, string>>() {new KeyValuePair<string, string>(appId, appid),new KeyValuePair<string, string>(timeStamp, timeStamp),new KeyValuePair<string, string>(nonceStr, nonceStr),new KeyValuePair<string, string>(package, prepay_id=prepayId),new KeyValuePair<string, string>(signType, MD5)};model.paySign = WxSignCalc(datas, key); = timeStamp;model.Package = prepay_id=  prepayId; = nonceStr;model.signType = MD5;return model;}/// <summary>/// 获得随机字符串/// </summary>/// <param name=num>获取个数</param>/// <returns></returns>private static string GetonceStr(int num = 0){Random random = new Random();string str = qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBM124567890;StringBuilder nonceStr = new StringBuilder();for (int i = 0; i < num; i)nonceStr.Append(str[(0, str.Length)]);return nonceStr.ToString();}/// <summary>/// 参数加密/// </summary>/// <param name=param></param>/// <param name=apiKey></param>/// <returns></returns>private static string WxSignCalc(List<KeyValuePair<string, string>> param, string apiKey){string signValue = string.Empty;StringBuilder data = new StringBuilder();// 1. 排序param.Sort((item1, item2) => string.Compare(item1.Key, item2.Key));// 2. 拼接param.ForEach(m =>{data.Append(${m.Key}={m.Value}&);});data.Append(key=  apiKey);// . 加密MD5 md5 = new MD5CryptoServiceProvider();byte[] buf = Encoding.UTF8.GetBytes(data.ToString());byte[] crypto = md5.ComputeHash(buf);signValue = BitConverter.ToString(crypto).Replace(-, );return signValue;}}

 支付返回 Model

 public class PayModel{public string paySign { get; set; }public string timeStamp { get; set; }public string onceStr { get; set; }public string Package { get; set; }public string signType { get; set; }}

调用案例

  1. 后台
[HttpPost]
public JsonResult OrderPay(string GUID, int num)
{string ip = string.Empty;if (!string.IsullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables[HTTP_X_FORWARDED_FOR]))ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables[HTTP_X_FORWARDED_FOR].Split(	,	)[0]);if (string.IsullOrEmpty(ip))ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables[REMOTE_ADDR]);if (string.IsullOrEmpty(ip))ip = System.Web.HttpContext.Current.Request.UserHostAddress;PayModel payModel = PayHelper.UnifiedOrder(num * 100, OpenID, yyyyMMddHHmmss, 小程序支付, ip);msg.Data = payModel;if (payModel.signType != null){msg.Code = 1;msg.Msg = 支付创建成功;}return Json(msg);
}

2. 前台

wx.showLoading({title: 	正在支付	,
});
wx.request({url: http://localhost:8080/Order/OrderPay,method: POST,data: {gUID: sljdkflskjdflsdskdjf,num: 12},header: { 	content-type	: 	application/x-www-form-urlencoded	 },success: function(res){if (res.data.Code === 1) {wx.requestPayment({	timeStamp	: res.data.,	nonceStr	: res.data.,	package	: res.data.Data.Package,	signType	: res.data.Data.signType,	paySign	: res.data.Data.paySign,	success	: function(res){wx.showToast({title: 	支付成功	,});},	fail	: function(res){wx.showToast({title: 	支付失败	,});}});}else{wx.showToast({title: res.data.Msg,});}}, fail: function(){wx.showLoading({title: 	失败	,});},complete: function(){wx.hideLoading();}
});

写在最后

这个模板测试了一下, 只需要改一下 appid, key, 商户号, 可以直接拿来使用.

本人小菜鸟, 代码写的有些垃圾, 各位笔下留字.

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/856944.html

相关标签:无
上传时间: 2024-02-10 03:46:43
留言与评论(共有 19 条评论)
本站网友 mac输入法切换快捷键
15分钟前 发表
});}});}else{wx.showToast({title
本站网友 乳酶生
16分钟前 发表
buf.Length);reqStream.Close();HttpWebRespe respe = request.GetRespe() as HttpWebRespe;string content = string.Empty;using (StreamReader rs = new StreamReader(respe.GetRespeStream())){content = rs.ReadToEnd();}XmlDocument xml = new XmlDocument();xml.LoadXml(content);string returnCode = xml.GetElementsByTagame(return_code).Item(0).InnerText;if (returnCode == FAIL)return model;string prepayId = xml.GetElementsByTagame(prepay_id).Item(0).InnerText;string timeStamp = Convert.ToInt64(( - new DateTime(1970
本站网友 电视购物网站排名
28分钟前 发表
function(){wx.hideLoading();} }); 写在最后 这个模板测试了一下
本站网友 怎么退出相互宝
11分钟前 发表
string>(appId
本站网友 成都琴行
6分钟前 发表
res.data.Data.paySign
本站网友 江苏财经职业学院
12分钟前 发表
string>(nonceStr
本站网友 苏州北大青鸟
4分钟前 发表
);return signValue;}}  支付返回 Model public class PayModel{public string paySign { get; set; }public string timeStamp { get; set; }public string onceStr { get; set; }public string Package { get; set; }public string signType { get; set; }} 调用案例 后台 [HttpPost] public JsonResult OrderPay(string GUID
本站网友 苯丙酸诺龙
5分钟前 发表
支付成功
本站网友 光启城
6分钟前 发表
res.data.
本站网友 合肥男科
26分钟前 发表
data
本站网友 徐家汇美食
11分钟前 发表
appid); // 应用程序iddicParam.Add(mch_id
本站网友 尿裤子吧
21分钟前 发表
sljdkflskjdflsdskdjf
本站网友 万达电影城团购
0秒前 发表
header
本站网友 白花蛇舌草的功效与作用
16分钟前 发表
data
本站网友 车险便宜
12分钟前 发表
1
本站网友 星巴巴
0秒前 发表
{ content-type
本站网友 苏州搜房网
18分钟前 发表
支付失败
本站网友 西红柿炒虾仁
14分钟前 发表
nonceStr); // 随机字符串dicParam.Add(body