微信小程序支付之c#后臺(tái)實(shí)現(xiàn)方法
微信小程序支付c#后臺(tái)實(shí)現(xiàn)
今天為大家?guī)肀容^簡(jiǎn)單的支付后臺(tái)處理
首先下載官方的c#模板(WxPayAPI),將模板(WxPayAPI)添加到服務(wù)器上,然后在WxPayAPI項(xiàng)目目錄中添加兩個(gè)“一般處理程序” (改名為GetOpenid.ashx、pay.ashx)
之后打開business目錄下的JsApiPay.cs,在JsApiPay.cs中修改如下兩處

然后在GetOpenid.ashx中加入代碼如下:
public class GetOpenid : IHttpHandler
{
public string openid { get; set; }
public void ProcessRequest(HttpContext context)
{
string code = HttpContext.Current.Request.QueryString["code"];
WxPayData data = new WxPayData();
data.SetValue("appid", WxPayConfig.APPID);
data.SetValue("secret", WxPayConfig.APPSECRET);
data.SetValue("code", code);
data.SetValue("grant_type", "authorization_code");
string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl();
//請(qǐng)求url以獲取數(shù)據(jù)
string result = HttpService.Get(url);
Log.Debug(this.GetType().ToString(), "GetOpenidAndAccessTokenFromCode response : " + result);
//保存access_token,用于收貨地址獲取
JsonData jd = JsonMapper.ToObject(result);
//access_token = (string)jd["access_token"];
//獲取用戶openid
openid = (string)jd["openid"];
context.Response.Write(openid);//獲取H5調(diào)起JS API參數(shù)
}
在pay.ashx中加入代碼如下:
public class pay : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string openid = HttpContext.Current.Request.QueryString["openid"];
string total_fee = HttpContext.Current.Request.QueryString["total_fee"];
JsApiPay jsApiPay = new JsApiPay(context);
jsApiPay.openid = openid;
jsApiPay.total_fee = int.Parse(total_fee);
WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult();
context.Response.Write(jsApiPay.GetJsApiParameters());//獲取H5調(diào)起JS API參數(shù)
}
然后發(fā)布就可以了(記得將相關(guān)的信息appid等填好)
微信小程序的代碼如下:
wxpay: function () {
var that = this
//登陸獲取code
wx.login({
success: function (res) {
console.log(res.code)
//獲取openid
that.getOpenId(res.code)
}
});
},
getOpenId: function (code) {
//獲取openID
var that = this;
wx.request({
url: 'http://*******/WxPayAPI/GetOpenid.ashx?code='+ code , //改為自己的域名
data: {},
// method: 'GET',
success: function (res) {
var a12=res.data
that.generateOrder(a12)
//console.log(a12)
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
},
/**生成商戶訂單 */
generateOrder: function (openid) {
var that = this;
//console.log(openid)
//統(tǒng)一支付
wx.request({
url: 'http://*******/WxPayAPI/pay.ashx', //改為自己的域名
//method: 'GET',
data: {
total_fee: 1,//1分
openid: openid,
},
header: {
'content-type': 'application/json'
},
success: function (res) {
var pay = res.data
//發(fā)起支付
var timeStamp = pay.timeStamp;
var packages = pay.package;
var paySign = pay.paySign;
var nonceStr = pay.nonceStr;
var param = { "timeStamp": timeStamp, "package": packages, "paySign": paySign, "signType": "MD5", "nonceStr": nonceStr };
that.pay(param)
},
})
},
/* 支付 */
pay: function (param) {
wx.requestPayment({
timeStamp: param.timeStamp,
nonceStr: param.nonceStr,
package: param.package,
signType: param.signType,
paySign: param.paySign,
success: function (res) {
// success
wx.navigateBack({
delta: 1, // 回退前 delta(默認(rèn)為1) 頁面
success: function (res1) {
wx.showToast({
title: '支付成功',
icon: 'success',
duration: 2000
});
},
fail: function () {
// fail
},
complete: function () {
}
})
},
fail: function (res) {
// fail
},
complete: function () {
// complete
}
})
},
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
微信小程序 animation API詳解及實(shí)例代碼
這篇文章主要介紹了 微信小程序 animation API詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
一篇文章教你學(xué)會(huì)js實(shí)現(xiàn)彈幕效果
彈幕效果隨著b站的越做越強(qiáng),出現(xiàn)了越來越多的仿照b站的視頻站點(diǎn)。然而這些視頻站仿照的最多的只有一點(diǎn)!那就是彈幕,現(xiàn)在也越來越多的人喜歡上了彈幕本文就教你如何制作2021-08-08
使用preload預(yù)加載頁面資源時(shí)注意事項(xiàng)
本文主要介紹 preload 的使用,以及與 prefetch 的區(qū)別。然后會(huì)聊聊瀏覽器的加載優(yōu)先級(jí),大家一定要認(rèn)真看完2020-02-02

