亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信JSAPI支付操作需要注意的細節

2019-11-19 18:02:49
字體:
來源:轉載
供稿:網友

首先介紹一下我在調用微信支付接口使用的是 weixin.senparc SDK,非常方便好用開源的一個微信開發SDK。

weixin.senparc SDK 官網:http://weixin.senparc.com/

先去下載下來Senparc.Weixin SDK。

在調起支付接口之前,需要先要調用統一下單接口,商戶系統先調用該接口在微信支付服務后臺生成預支付交易單,返回正確的預支付交易回話標識后再在APP里面調起支付。

 微信 JsApi支付 在這個目錄下 Senparc.Weixin.MP.Sample.Controllers 找到JsApi支付。

public ActionResult JsApi(string code, string state)  {   if (string.IsNullOrEmpty(code))   {    return Content("您拒絕了授權!");   }   if (!state.Contains("|"))   {    //這里的state其實是會暴露給客戶端的,驗證能力很弱,這里只是演示一下    //實際上可以存任何想傳遞的數據,比如用戶ID,并且需要結合例如下面的Session["OAuthAccessToken"]進行驗證    return Content("驗證失?。≌垙恼幫緩竭M入!1001");   }   try   {    //獲取產品信息    var stateData = state.Split('|');    int productId = 0;    ProductModel product = null;    if (int.TryParse(stateData[0], out productId))    {     int hc = 0;     if (int.TryParse(stateData[1], out hc))     {      var products = ProductModel.GetFakeProductList();      product = products.FirstOrDefault(z => z.Id == productId);      if (product == null || product.GetHashCode() != hc)      {       return Content("商品信息不存在,或非法進入!1002");      }      ViewData["product"] = product;     }    }    //通過,用code換取access_token    var openIdResult = OAuthApi.GetAccessToken(TenPayV3Info.AppId, TenPayV3Info.AppSecret, code);    if (openIdResult.errcode != ReturnCode.請求成功)    {     return Content("錯誤:" + openIdResult.errmsg);    }    string sp_billno = Request["order_no"];    if (string.IsNullOrEmpty(sp_billno))    {     //生成訂單10位序列號,此處用時間和隨機數生成,商戶根據自己調整,保證唯一     sp_billno = string.Format("{0}{1}{2}", TenPayV3Info.MchId, DateTime.Now.ToString("yyyyMMdd"),      TenPayV3Util.BuildRandomStr(10));    }    else    {     sp_billno = Request["order_no"];    }    var timeStamp = TenPayV3Util.GetTimestamp();    var nonceStr = TenPayV3Util.GetNoncestr();    var body = product == null ? "test" : product.Name;    var price = product == null ? 100 : product.Price * 100;    var xmlDataInfo = new TenPayV3UnifiedorderRequestData(TenPayV3Info.AppId, TenPayV3Info.MchId, body, sp_billno, price, Request.UserHostAddress, TenPayV3Info.TenPayV3Notify, TenPayV3Type.JSAPI, openIdResult.openid, TenPayV3Info.Key, nonceStr);    var result = TenPayV3.Unifiedorder(xmlDataInfo);//調用統一訂單接口    //JsSdkUiPackage jsPackage = new JsSdkUiPackage(TenPayV3Info.AppId, timeStamp, nonceStr,);    var package = string.Format("prepay_id={0}", result.prepay_id);    ViewData["appId"] = TenPayV3Info.AppId;    ViewData["timeStamp"] = timeStamp;    ViewData["nonceStr"] = nonceStr;    ViewData["package"] = package;    ViewData["paySign"] = TenPayV3.GetJsPaySign(TenPayV3Info.AppId, timeStamp, nonceStr, package, TenPayV3Info.Key);    return View();   }   catch (Exception ex)   {    var msg = ex.Message;    msg += "<br>" + ex.StackTrace;    msg += "<br>==Source==<br>" + ex.Source;    if (ex.InnerException != null)    {     msg += "<br>===InnerException===<br>" + ex.InnerException.Message;    }    return Content(msg);   }  }

先在微信服務后臺生成預支付交易單,獲得預支付訂單號。

先說說在統一下單這里遇到的坑。 

1.在統一下單的時候解析返回結果,一直出現以下問題:您沒有JSAPI支付權限

<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[您沒有JSAPI支付權限]]></return_msg></xml>

1)先看看你的公眾號微信支付設置是否正確。

關于如何配置微信支付:可以參考這個 http://jingyan.baidu.com/article/77b8dc7fef360d6174eab690.html

2)檢查你的授權目錄是否正確,格式要這樣,后面記得別漏了一個/   例如:http://test.cn/u/

3)檢查需要傳過去的賬戶參數,上公眾號還有商戶號檢查你的賬戶參數是否正確。我在開發當中就出現,微信公眾號商戶號,appid 是分別不同兩個公眾號的,坑啊,找了好久,覺得不對勁,原來是給的配置參數密鑰不對。

 這里詳細說一下對應的參數:

MCHID:商戶號(必須配置,開戶郵件中可查看),商戶申請微信支付后,由微信支付分配的商戶收款賬號。
APPID:微信開放平臺審核通過的應用APPID,appid是微信公眾賬號或開放平臺APP的唯一標識,在公眾平臺申請公眾賬號或者在開放平臺申請APP賬號后,微信會自動分配對應的appid用于標識該應用??稍谖⑿殴娖脚_-->開發者中心查看,商戶的微信支付審核通過郵件中也會包含該字段值.

KEY:商戶支付密鑰,參考開戶郵件設置(必須配置,登錄商戶平臺自行設置),交易過程生成簽名的密鑰,僅保留在商戶系統和微信支付后臺,不會在網絡中傳播。商戶妥善保管該Key,切勿在網絡中傳輸,不能在其他客戶端中存儲,保證key不會被泄漏。商戶可根據郵件提示登錄微信商戶平臺進行設置。也可按一下路徑設置:微信商戶平臺(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置.
APPSECRET:公眾帳號secert(僅JSAPI支付的時候需要配置, 登錄公眾平臺,進入開發者中心可設置)

 2.在統一下單,解析返回來的結果我出現了商戶號mch_id與appid不匹配這個問題

<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[商戶號mch_id與appid不匹配]]></return_msg></xml>

原因是我拿到的商戶號不是這個公眾號的。一定要檢查是不是這個公眾號的商戶號。

 3.在統一下單,解析返回來的結果出現 appid and openid not match,appid和openid不匹配。

<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[appid and openid not match]]></return_msg></xml>

原因是我這個用戶的openid 不是這個公眾號的 

4.在統一下單,解析返回來的結果出現 CDATA[openid is invalid],openid無效

<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[openid is invalid]]></return_msg></xml>

原因是,傳過去不是有效的opendid。不小心看錯了,把用戶id 當做openid傳過去了。

當統一下單成功,會返回以下格式的參數

<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str> <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id> <trade_type><![CDATA[APP]]></trade_type></xml>

解析獲得預支付單號:

string prepayId = res.Element("xml").Element("prepay_id").Value; //獲取預支付訂單號

給頁面對應地參數

 ViewData["appId"] = TenPayV3Info.AppId;    ViewData["timeStamp"] = timeStamp;    ViewData["nonceStr"] = nonceStr;    ViewData["package"] = package;    ViewData["paySign"] = TenPayV3.GetJsPaySign(TenPayV3Info.AppId, timeStamp, nonceStr, package, TenPayV3Info.Key);

靜態頁面js調用:

wx.chooseWXPay({ timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp字段均為小寫。但最新版的支付后臺生成簽名使用的timeStamp字段名需大寫其中的S字符 nonceStr: '', // 支付簽名隨機串,不長于 32 位 package: '', // 統一支付接口返回的prepay_id參數值,提交格式如:prepay_id=***) signType: '', // 簽名方式,默認為'SHA1',使用新版支付需傳入'MD5' paySign: '', // 支付簽名 success: function (res) {  if (res.err_msg == "get_brand_wcpay_request:ok") {//支付成功   } else {   //支付失敗  }  // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對可靠。 }});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级成年大片在线观看| 久久夜精品香蕉| 亚洲色图狂野欧美| 97精品久久久| 欧美高清视频在线观看| 亚洲精品欧美日韩专区| 国产精品亚洲精品| 欧美激情伊人电影| 久久久噜噜噜久噜久久| 欧美激情第一页xxx| 成人羞羞国产免费| 亚洲第一区在线| 美日韩精品免费观看视频| 国产精品久久久久久中文字| 国产精品青草久久久久福利99| 欧美日韩日本国产| 亚洲第一网站免费视频| 日韩乱码在线视频| 亚洲欧美一区二区三区久久| 亚洲尤物视频网| 成人网页在线免费观看| 亚洲人成欧美中文字幕| 中文字幕国产亚洲| 国产ts人妖一区二区三区| 亚洲精品小视频在线观看| 久久久久久久久国产精品| 91高清视频免费观看| 久久噜噜噜精品国产亚洲综合| 91成品人片a无限观看| 精品国产美女在线| 久久精品视频中文字幕| 国产精品96久久久久久又黄又硬| 亚洲欧洲偷拍精品| 国产男女猛烈无遮挡91| 欧美亚洲国产日韩2020| 国产一区香蕉久久| 成人乱人伦精品视频在线观看| 国产精品1区2区在线观看| 久久精品亚洲一区| 欧美午夜电影在线| 亚洲综合色激情五月| 91亚洲精品久久久久久久久久久久| 成人免费自拍视频| 国产中文字幕91| 狠狠躁18三区二区一区| 97国产精品免费视频| 91chinesevideo永久地址| 国产欧美在线观看| 亚洲新声在线观看| 亚洲国产成人精品久久久国产成人一区| 中文字幕亚洲二区| 亚洲夜晚福利在线观看| 在线观看免费高清视频97| 日韩高清免费观看| xxx欧美精品| 97视频国产在线| 国产99久久精品一区二区 夜夜躁日日躁| 国产免费一区二区三区在线观看| 91av网站在线播放| 欧美日韩午夜视频在线观看| 欧美极品xxxx| 欧美日韩国产成人高清视频| 国产精品视频永久免费播放| 欧美性极品xxxx娇小| 另类少妇人与禽zozz0性伦| 亚洲美女免费精品视频在线观看| 久热在线中文字幕色999舞| 欧美日韩国产第一页| 国产欧美精品日韩| 欧美日韩黄色大片| 中文字幕日韩视频| 国产亚洲综合久久| 久久69精品久久久久久久电影好| 国产精品国产福利国产秒拍| 国产精品欧美日韩一区二区| 日韩免费看的电影电视剧大全| 精品视频在线播放免| 久久亚洲精品毛片| 在线看欧美日韩| 欧美有码在线观看视频| 国产精品视频永久免费播放| 欧美日韩一区二区精品| 26uuu另类亚洲欧美日本一| 国产成人精品在线观看| 9.1国产丝袜在线观看| 91精品国产综合久久男男| 亚洲国产精品久久精品怡红院| 欧美xxxx14xxxxx性爽| 久久久久久久久电影| 97在线视频国产| 日韩在线欧美在线| 久久精品视频99| 欧美日韩免费看| 亚洲国产精品久久久久秋霞不卡| 国产精品视频播放| 亚洲精品一区二区网址| 日韩精品高清在线观看| 成人av在线亚洲| 日韩精品小视频| 88国产精品欧美一区二区三区| 久久久久久亚洲精品| 国产欧美日韩高清| 97成人精品区在线播放| 美日韩精品免费观看视频| 国内精品模特av私拍在线观看| 国产精品扒开腿做爽爽爽男男| 精品欧美激情精品一区| 亚洲成avwww人| www.久久色.com| 欧美性xxxxx| 羞羞色国产精品| 欧美尺度大的性做爰视频| 亚洲aa在线观看| 亚洲理论在线a中文字幕| 欧美老女人在线视频| 午夜精品99久久免费| 欧美国产精品日韩| 性色av香蕉一区二区| 亚洲一区二区三区香蕉| 伊人久久综合97精品| 亚洲欧美一区二区三区四区| 26uuu久久噜噜噜噜| 国产精品视频网| 亚洲欧美国产日韩天堂区| 国产97色在线| 亚洲综合色激情五月| 日韩欧美国产视频| 欧美日韩综合视频网址| 性日韩欧美在线视频| 亚洲图片在线综合| 国产精品老女人视频| 亚洲视频在线观看| 九九精品在线视频| 欧美日韩国产黄| 精品人伦一区二区三区蜜桃网站| 欧美国产一区二区三区| 国产成人精品电影| 久国内精品在线| 美女国内精品自产拍在线播放| 91人成网站www| 午夜精品美女自拍福到在线| 影音先锋日韩有码| 欧美激情欧美激情在线五月| 国产精品高潮粉嫩av| 日韩高清中文字幕| 久久99久久亚洲国产| 国产成人自拍视频在线观看| 欧美特级www| 国产精品视频成人| 日韩免费电影在线观看| 午夜精品久久久久久99热软件| 国产午夜精品理论片a级探花| 久久久久国色av免费观看性色| 日日骚av一区| 91精品国产色综合| 欧美xxxx14xxxxx性爽| 欧美在线影院在线视频| 色先锋久久影院av| 亚洲人成网站免费播放| 午夜精品www| 久久精品久久久久电影| 国产精品2018| 在线视频欧美性高潮| 久久天天躁狠狠躁老女人|