我個(gè)人編寫的庫(kù),在我個(gè)人網(wǎng)站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅貓君網(wǎng)絡(luò)工作室 或者到我的網(wǎng)站 store.zhaimaojun.cn?去體驗(yàn)支付和登錄效果。
本庫(kù)主要實(shí)現(xiàn)了native pay(二維碼支付)jsapi pay(小程序直接調(diào)起支付),需要注意的是這是基于api3的,非api2。
以下演示如何使用:
第一步 搜索安裝ZmjWxApi
打開nuget,直接搜索和安裝ZmjWxApi,如下圖:
文章來源:http://www.zghlxwxcb.cn/news/detail-840338.html
第二步 引入namespace和創(chuàng)建支付對(duì)象
1 /**引入命名空間*/ 2 using ZmjWxApi; 3 4 /**創(chuàng)建支付對(duì)象*/ 5 var npay = new WxPayApi("商戶的id", "商戶API證書序列號(hào)", "商戶API證書本地路徑", "微信app的id", "支付結(jié)果通知的url");
第三步 微信登錄
1 /**創(chuàng)建用于登錄的對(duì)象*/ 2 var wx = new ZmjWxApi.WxUserApi("小程序的id", "小程序的密鑰"); 3 /**網(wǎng)站頁面跳轉(zhuǎn)到掃碼頁面或者頁面嵌入二維碼*/ 4 var rurl = WxUserApi.GetLoginRedirectUrl("網(wǎng)站應(yīng)用的id","掃碼完成后跳轉(zhuǎn)的鏈接","code","snsapi_login","自定義的附加信息");//獲取到這個(gè)鏈接后就直接regedit到這個(gè)鏈接就可以了 5 /**或者小程序中調(diào)用wx.login來獲取用戶的code*/ 6 wx.login({ 7 success(r){ 8 wx.request({ 9 url:'你的登錄api' + r.code, 10 method: 'GET', 11 header: { 12 'content-type': 'application/json', // 默認(rèn)值 13 }, 14 success(lres: any) { 15 } 16 } 17 }) 18 } 19 }) 20 /**拿到用戶的code后*/ 21 var user = await wx.GetWxUserInfo(code!);//通過用戶的code獲取具體信息 22 var opid = user!.OpenId!;//用戶在小程序或者網(wǎng)站中的openid 23 var nickname = user!.NickName!;//用戶昵稱 24 var icon = user!.Icon!;//用戶的頭像
第四步 調(diào)起支付
1 /**調(diào)起二維碼支付*/ 2 var url = npay!.NativePlaceOnOrder("商戶自己的訂單編號(hào)", "商品名稱和描述", "附加信息", money);//money為訂單總價(jià)格,按照分來算,比如:1元=100分,所以money=100標(biāo)識(shí)一元 3 /**將url變成二維碼,掃碼就可以支付了*/ 4 <img src="https://www.zhaimaojun.cn/QrCode/?color=black&code={上面調(diào)用方法得到的url}" /> 5 6 /**下面是小程序小游戲等中使用jsapi調(diào)起支付*/ 7 var turl = npay.JsApiPlaceOnOrder("支付者的openid", "商戶自己的訂單編號(hào)", "商品名稱和描述", "附加信息", money);//money為訂單總價(jià)格,按照分來算 8 var res = WxPayApi.GetApiPaySign("商戶自己的訂單編號(hào)", "小程序的appid", turl, "商戶證書的本地地址", "商戶id");//這里返回的res是一個(gè)object,發(fā)送給小程序后,小程序上調(diào)起支付如: 9 wx.requestPayment({timeStamp:r.data.timestamp,nonceStr:r.data.nonce,package:'prepay_id=' + r.data.prepayid,signType:'RSA',paySign:r.data.sign,success(e){}) 10 /**小程序中調(diào)起支付需要注意:需要小程序用戶先登錄并且獲取到openid,其次小程序要綁定到微信商戶上,否則調(diào)起jsapi會(huì)失敗*/
第五步 處理支付結(jié)果通知
1 /**以下代碼在應(yīng)該在webapi中*/ 2 using var ms = new System.IO.MemoryStream(); 3 await Request.BodyReader.CopyToAsync(ms); 4 ms.Seek(0, SeekOrigin.Begin); 5 var req = Encoding.UTF8.GetString(ms.ToArray()); 6 var msg = WxPayApi.GetTransActionMessageFromContent(req, "wx支付api3的私鑰", out _); 7 //完善交易信息(可根據(jù)自己的需要) 8 oder.PayerOpenId = msg.Payer!.Openid!;//支付者的openid 9 oder.Attach = msg.Attach ?? "";//附加數(shù)據(jù),也就是下單時(shí)寫入的附加內(nèi)容 10 oder.TradeType = msg.TradeType!;//支付類型,jsapi,二維碼支付等 11 oder.TradeState = msg.TradeState!;//支付結(jié)果,一般都是success表示支付成功
?文章來源地址http://www.zghlxwxcb.cn/news/detail-840338.html
到了這里,關(guān)于輕量級(jí).net standard微信支付登錄Nuget開源庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!