天风隼通过本文主要向大家介绍了购物车代码 asp.net,下载asp.net源代码,源代码 asp.net,留言板asp.net代码,微信开发 asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
本文实例为大家分享了微信JS SDK支付的具体代码,供大家参考,具体内容如下
模型层实体类:
public class JsEntities { /// <summary> /// 公众号id /// </summary> public string appId { get; set; } /// <summary> /// 时间戳 /// </summary> public string timeStamp { get; set; } /// <summary> /// 随机字符串 /// </summary> public string nonceStr { get; set; } /// <summary> /// 订单详情扩展字符串 /// </summary> public string package { get; set; } /// <summary> /// 签名类型 /// </summary> public string signType { get; set; } /// <summary> /// 签名 /// </summary> public string paySign { get; set; } }</div>
public class UnifyEntities { /// <summary> /// 公众账号ID /// </summary> public string appid { get; set; } /// <summary> /// 微信支付分配的商户号 /// </summary> public string mch_id { get; set; } /// <summary> /// 微信支付分配的终端设备号 /// </summary> public string device_info { get; set; } /// <summary> /// 随机字符串,不长于32位 /// </summary> public string nonce_str { get; set; } /// <summary> /// 签名 /// </summary> public string sign { get; set; } /// <summary> /// 商品描述最大长度127 /// </summary> public string body { get; set; } /// <summary> /// 附加数据,原样返回 /// </summary> public string attach { get; set; } /// <summary> /// 商户系统内部的订单号,32 个字符内、可包含字母,确保在商户系统唯一,详细说明 /// </summary> public string out_trade_no { get; set; } /// <summary> /// 订单总金额,单位为分,不能带小数点 /// </summary> public string total_fee { get; set; } /// <summary> /// 终端IP /// </summary> public string spbill_create_ip { get; set; } /// <summary> /// 交易起始时间 /// </summary> public string time_start { get; set; } /// <summary> /// 交易结束时间 /// </summary> public string time_expire { get; set; } /// <summary> /// 接收微信支付成功通知 /// </summary> public string notify_url { get; set; } /// <summary> /// JSAPI、NATIVE、APP /// </summary> public string trade_type { get; set; } /// <summary> /// 用户在商户appid下的唯一标识,trade_type为JSAPI 时,此参数必传 /// </summary> public string openid { get; set; } /// <summary> /// 只在 trade_type 为 NATIVE 时需要填写。此id为二维码中包含的商品ID,商户自行维护。 /// </summary> public string product_id { get; set; } }</div>
public class UnifyReceive { /// <summary> /// SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 /// </summary> public string return_code { get; set; } /// <summary> /// 返回信息,如非空,为错误原因 /// </summary> public string return_msg { get; set; } /// <summary> /// 微信分配的公众账号ID /// </summary> public string appid { get; set; } /// <summary> /// 微信支付分配的商户号 /// </summary> public string mch_id { get; set; } /// <summary> /// 随机字符串,不长于32位 /// </summary> public string nonce_str { get; set; } /// <summary> /// 签名 /// </summary> public string sign { get; set; } /// <summary> /// 业务结果 /// </summary> public string result_code { get; set; } /// <summary> /// 预支付ID /// </summary> public string prepay_id { get; set; } /// <summary> /// 交易类型 /// </summary> public string trade_type { get; set; } /// <summary> /// 二维码链接 /// </summary> public string code_url { get; set; } public UnifyReceive(string xml) { XElement doc = XElement.Parse(xml); return_code = doc.Element("return_code").Value; return_msg = doc.Element("return_msg").Value; if (return_code == "SUCCESS") { appid = doc.Element("appid").Value; mch_id = doc.Element("mch_id").Value; nonce_str = doc.Element("nonce_str").Value; sign = doc.Element("sign").Value; result_code = doc.Element("result_code").Value; if (result_code == "SUCCESS") { trade_type = doc.Element("trade_type").Value; prepay_id = doc.Element("prepay_id").Value; if (trade_type == "NATIVE") { code_url = doc.Element("code_url").Value; } trade_type = doc.Element("trade_type").Value; } } } }</div>
TestJs.aspx内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JsPay.aspx.cs" Inherits="WeChatPayDemo.JsPay" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="http://code.jquery.com/jquery-1.9.0.js"></script> <script src="Scripts/wxpay.js"></script> <script> $(function () { $("#submit").click(function () { var OID ="<%=openid%>"; alert(OID); $.get("WxPay/WxPay.ashx?action=jspayparam", { body: $("#body").val(), total_fee: $("#price").val(), out_trade_no: $("#order").val(), trade_type: "JSAPI", msgid: "<%=openid%>" }, function (data) { WxPay.Pay(data.appId, data.timeStamp, data.nonceStr, data.package, data.signType, data.paySign, function () { alert("支付成功"); }); }, "json"); }); }) </script> </head> <body> <form id="form1" runat="server"> <div> 商品描述:<input type="text" id="body" /> 商品价格:<input type="text" id="price" /> 订单号:<input type="text" id="order" /> <input type="button" value="提交订单" id="submit" /> </div> </form> </body> </html></div>
JsPay.aspx.cs代码:
public partial class JsPay : System.Web.UI.Page { public string openid = ""; protected void Page_Load(object sender, EventArgs e) { string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code没获取成功,重新拉取一遍 GetAuthUrl("wxxxxxxxxxxxxxxxxxxxxxxx", "http://www.china101.net/JsPay.aspx"); } openid = GetOpenID("wxxxxxxxxxxxxxxxxxxxxxxx", "dsdssdsdsdsdsdsdsdsdsd", JKRequest.GetQueryString("code"), () => { }); } public string GetOpenID(string appid, string secret, string code, Action CallBack) { try { string retdata = Utils.HttpGet(string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appid, secret, code)); .LogHelper.WriteFile(retdata); JObject jobj = (JObject)JsonConvert.DeserializeObject(retdata); string openid = jobj.Value<string>("openid"); return openid; } catch (Exception) { CallBack(); return ""; } // return GetUserInfo(access_token, openid); } /// <summary> /// 获取鉴权地址 /// </summary> /// <param name="appid"></param> /// <param name="redirect_url"></param> /// <returns></returns> public void GetAuthUrl(string appid, string redirect_url) { Response.Redirect(string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=123#wechat_redirect", appid, Utils.UrlEncode(redirect_url))); } }</div>
WxPay.ashx代码: