标题:ASP.NET微信JS-SDK支付代码攻略
概述
微信JS-SDK是微信公众号开发中常用的一种技术手段,可以集成微信支付,让用户能够在微信中完成支付操作。本文将详细介绍如何在ASP.NET中使用微信JS-SDK完成支付操作,并且提供代码示例。
步骤
步骤一:获取微信支付授权
在使用微信JS-SDK进行支付之前,需要先获取微信支付的授权。具体方式如下:
1.1 配置微信公众号
将微信公众号的APPID、APPSECRET、商户号和商户密钥等信息配置好,并且进行证书验证操作。
1.2 调用微信统一下单API
使用微信统一下单API向微信服务器发送请求,获取预支付交易会话标识(prepay_id)。具体代码示例如下:
// 统一下单请求地址
string url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
// 构造统一下单请求参数(注意大小写)
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("appid", appid);
parameters.Add("mch_id", mch_id);
parameters.Add("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));
parameters.Add("body", "商品名称");
parameters.Add("out_trade_no", DateTime.Now.ToString("yyyyMMddHHmmssfff"));
parameters.Add("total_fee", "1");
parameters.Add("spbill_create_ip", Request.UserHostAddress);
parameters.Add("notify_url", "http://www.example.com/notify_url.aspx");
parameters.Add("trade_type", "JSAPI");
parameters.Add("openid", openid);
// 构造签名
string sign = GetSign(parameters, appsecret);
parameters.Add("sign", sign);
// 将请求参数转换为XML格式
string xml = ConvertDictionaryToXml(parameters);
// 发送请求
string response = HttpHelper.HttpPost(url, xml, Encoding.UTF8);
1.3 生成支付参数
使用获取到的预支付交易会话标识(prepay_id)生成JSAPI支付的参数,并将其返回给前端页面。
// 获取prepay_id
string prepay_id = GetPrepayId(response);
// 生成JSAPI支付参数
string timestamp = GetTimeStamp();
string nonce_str = Guid.NewGuid().ToString().Replace("-", "");
string package = "prepay_id=" + prepay_id;
string signType = "MD5";
string paySign = GetPaySign(appid, nonce_str, package, signType, timestamp, appsecret);
// 将参数返回给前端页面
string result = "{" +
"\"appId\":\"" + appid + "\"," +
"\"timeStamp\":\"" + timestamp + "\"," +
"\"nonceStr\":\"" + nonce_str + "\"," +
"\"package\":\"" + package + "\"," +
"\"signType\":\"" + signType + "\"," +
"\"paySign\":\"" + paySign + "\"" +
"}";
Response.Write(result);
步骤二:调用微信支付接口
当用户在前端页面点击支付按钮后,需要调用微信支付接口进行支付操作。具体代码示例如下:
// 调用微信支付
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": "wx2421b1c4370ec43b", //公众号名称,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=u802345jgfjsdfgsdg888",
"signType": "MD5", //微信签名方式:
"paySign": "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 支付成功,跳转到支付结果页面
location.href = "http://www.example.com/success.aspx";
} else {
// 支付失败,跳转到支付失败页面
location.href = "http://www.example.com/fail.aspx";
}
}
);
}
// 注册微信支付的回调函数
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
总结
以上就是ASP.NET微信JS-SDK支付代码攻略的完整过程。本文中提供了获取微信支付授权和调用微信支付接口的完整代码示例,希望对你们有所帮助。如果在使用中遇到问题,可以留言咨询。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:最详细的ASP.NET微信JS-SDK支付代码 - Python技术站