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

首頁 > 開發 > JS > 正文

使用weixin-java-tools完成微信授權登錄、微信支付的示例

2024-05-06 16:46:12
字體:
來源:轉載
供稿:網友

本文為學習記錄weixin-java-tools實現公眾號微信支付.

碼云地址:點我

    // 授權登錄用到    <dependency>      <groupId>com.github.binarywang</groupId>      <artifactId>weixin-java-mp</artifactId>      <version>3.1.0</version>    </dependency>
    // 微信支付用到    <dependency>      <groupId>com.github.binarywang</groupId>      <artifactId>weixin-java-pay</artifactId>      <version>3.1.0</version>    </dependency>

授權登錄官方 api:點我

個人理解的授權登錄流程:引導用戶點擊喚起授權登錄的地址,打開頁面后攜帶微信返回的code參數;使用code參數獲取AccessToken;獲取用戶數據。

引導客戶打開授權登錄地址后,攜帶code跳轉到指定頁面在指定頁面調用方法:

public Result getAccessToken(@RequestParam(name = "code") String code, HttpServletRequest request, HttpServletResponse response) {    if (StringUtils.isBlank(code)) {      return Result.error("code不存在");    }    try {      WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);      String accessToken = wxMpOAuth2AccessToken.getAccessToken();      // 獲取用戶微信賬戶信息      WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxMpOAuth2AccessToken.getOpenId());      if (StringUtils.isBlank(wxMpUser.getOpenId())) {        return Result.error("用戶數據不存在");      }      return Result.success(wxMpUser);    } catch (WxErrorException e) {      e.printStackTrace();      log.info("授權異常:{}", e);      return Result.error("授權登錄失敗");    } catch (Exception e) {      e.printStackTrace();      return Result.error("登錄失敗");    }  }

前端保存下用戶信息就完事了。

個人理解的微信支付流程:用戶頁面點擊<微信支付>按鈕 后端調用 <微信統一下單> 統一下單返回參數 ,前端使用 <統一下單>返回的參數喚起微信支付。

商戶中需要在api安全中設置很多東西... 就不一一贅述了 

微信支付官方api 前端:點我

后端api點我

商戶登錄地址 點我

public Result pay(Long orderNo, HttpServletRequest request) {        //查詢訂單信息    Order order = orderService.findByOrderNo(orderNo);    try {      WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();      //獲取當前用戶      UserInfo userInfo = RequestContextHolderUtil.getUserInfo();      orderRequest.setBody("支付內容的說明");      //商戶號      orderRequest.setMchId(mchId);      orderRequest.setAttach("xxx公司");      orderRequest.setOutTradeNo(orderNo.toString());      orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(order.getPayment().toString()));//元轉成分      orderRequest.setOpenid(userInfo.getOpenId());      orderRequest.setSpbillCreateIp(HttpUtils.getIp(request));      //我這里是微信公眾號內打開的h5頁面 type使用 JSAPI 根據業務場景變更      orderRequest.setTradeType(WxPayConstants.TradeType.JSAPI);      // 支付成功后跳轉頁面  這里需要對url進行編碼      orderRequest.setNotifyUrl("http://xxxxxxxxx");      orderRequest.setAppid(appId);            // 調用sdk提供的統一下單方法 createOrder會返回重新組裝后的對象 建議使用這個       Object unOrder = wxService.createOrder(orderRequest);      // 這個可能是偏向原生一點的統一下單,返回的參數有很多沒用的 或者null值 建議使用 createOrder下單      // wxService.unifiedOrder(orderRequest);             return Result.success(unOrder);    } catch (Exception e) {      log.error("微信支付失敗!訂單號:{},原因:{}", orderNo, e.getMessage());      e.printStackTrace();      return Result.error("支付失敗,請稍后重試!");    }  }

前端js代碼:

前端喚起微信支付的時候可能會出一些問題,這里建議使用 console.log(res.err_desc);輸出錯誤信息 

res.err_msg 只會提示支付失敗... desc會提示一些具體信息

function onBridgeReady(){  WeixinJSBridge.invoke(    'getBrandWCPayRequest', {      "appId":"wx31fd1e1bad23db37",   //公眾號名稱,由商戶傳入      "timeStamp":wxData.timeStamp,     //時間戳,自1970年以來的秒數      "nonceStr":wxData.nonceStr, //隨機串      "package":wxData.packageValue,      "signType":wxData.signType,     //微信簽名方式:      "paySign":wxData.paySign //微信簽名    },    function(res){      console.log(res.err_desc)      if(res.err_msg == "get_brand_wcpay_request:ok" ){        // 使用以上方式判斷前端返回,微信團隊鄭重提示:        //res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對可靠。      }    });}var wxData={};function pay(orderId){  $.ajax({    url:"統一下單方法url",    type:'get',    data:{orderNo:orderId},    beforeSend: function (xhr) {      xhr.setRequestHeader("token", $.cookie("token"));    },    crossDomain: true,    success:function(result){      wxData=result.data;      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();      }    }  });}

注:商戶中心支付路徑設置 所有調起微信支付的頁面都要在此注冊,否則微信支付會一閃而過。
微信開發工具上可以模擬授權登錄,但是無法模擬微信支付,所以微信支付在微信開發工具上出現的錯誤都不用管,直接拿到真機上去測試!

使用了sdk后的支付和授權還是很方便的,麻煩的是微信方面的一些配置和流程... 很坑。

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲二区在线播放视频| 日韩一中文字幕| 亚洲综合视频1区| 亚洲四色影视在线观看| 蜜臀久久99精品久久久无需会员| 欧美成在线视频| 日韩欧美中文字幕在线播放| 一区二区三区日韩在线| 国产成人精品网站| 亚洲最大福利网站| 欧美精品久久久久| 国产精品va在线播放我和闺蜜| 一区二区三区日韩在线| 欧美高清视频一区二区| 亚洲精品一区中文字幕乱码| 51久久精品夜色国产麻豆| 成人免费在线视频网址| 欧美肥臀大乳一区二区免费视频| 亚洲香蕉伊综合在人在线视看| 成人做爰www免费看视频网站| 欧美影院久久久| 欧美日本亚洲视频| 欧美日韩亚洲精品内裤| 黄色成人在线播放| 国内精品国产三级国产在线专| 亚洲成人免费在线视频| 日韩在线观看免费网站| 亚洲第一网中文字幕| 自拍偷拍亚洲精品| 亚洲国产三级网| 91精品免费视频| 久久人人爽人人爽人人片av高清| 亚洲午夜精品久久久久久久久久久久| 欧美大片在线影院| 91精品久久久久久久久青青| 欧美日韩成人在线视频| 亚洲欧洲国产一区| 国精产品一区一区三区有限在线| 欧美性猛交xxxxx水多| 久久人人爽国产| 91视频-88av| 久久69精品久久久久久久电影好| 欧美一二三视频| 国产日韩在线一区| 亚洲欧美日韩久久久久久| 国产精品夜间视频香蕉| 久久久久久伊人| 国产91网红主播在线观看| 亚洲一区中文字幕| 中文字幕日韩av| 国产亚洲精品久久久优势| 91极品女神在线| 亚洲国产91精品在线观看| 懂色aⅴ精品一区二区三区蜜月| 中文字幕欧美亚洲| 91av视频在线免费观看| 国产成人自拍视频在线观看| 欧美国产精品人人做人人爱| 亚洲欧美日韩网| 亚洲女人天堂网| 欧美视频二区36p| 精品高清美女精品国产区| 国产亚洲激情视频在线| 91黑丝在线观看| 亚洲网站视频福利| 国产精品日韩欧美大师| 国产欧美久久一区二区| 国产精品丝袜视频| 亚洲成人久久网| 国产精品电影久久久久电影网| 欧美亚洲第一区| 91免费人成网站在线观看18| 欧美精品在线看| 日韩av片电影专区| 亚洲色图日韩av| 成人免费xxxxx在线观看| 亚洲人成毛片在线播放| 欧美成人三级视频网站| 97免费视频在线| 亚洲电影在线看| 午夜精品久久久久久99热软件| 欧美最近摘花xxxx摘花| 国模极品一区二区三区| 久久久久久久久久婷婷| 亚洲成人三级在线| 亚洲国产精品一区二区三区| 欧美限制级电影在线观看| 欧美三级欧美成人高清www| 免费91麻豆精品国产自产在线观看| 91福利视频网| 久久久久久香蕉网| 日韩在线播放一区| 丁香五六月婷婷久久激情| 亚洲欧美一区二区三区四区| 亚洲福利视频网站| 国产成人精品a视频一区www| 亚洲天堂av综合网| 久久综合色影院| 久久人人爽人人爽人人片av高清| 亚洲精品国产电影| 亚洲视频在线免费观看| 国产三级精品网站| 福利视频导航一区| 成人激情视频在线播放| 日韩精品中文字幕视频在线| 日本在线精品视频| 久久亚洲综合国产精品99麻豆精品福利| 国产一区二区三区视频免费| 黑人巨大精品欧美一区二区免费| 国产午夜精品视频| 日韩专区中文字幕| 国产精品视频免费观看www| 欧美日韩国产中字| 91精品国产高清久久久久久| 欧美激情免费在线| 亚洲第一免费网站| 中文字幕亚洲欧美日韩2019| 狠狠躁夜夜躁人人爽天天天天97| 欧美日韩国产中文精品字幕自在自线| 激情av一区二区| 日韩成人在线免费观看| 91国产美女视频| 亚洲男人天堂手机在线| 欧美高跟鞋交xxxxhd| 日韩av手机在线观看| 国外成人在线直播| 亚洲性生活视频| 亚洲欧美日韩国产成人| 中文字幕日韩在线播放| 精品亚洲一区二区三区在线播放| 亚洲成人精品久久久| 亚洲精品一区中文字幕乱码| 57pao成人永久免费视频| 欧美激情一区二区三区高清视频| 日韩精品有码在线观看| 国内伊人久久久久久网站视频| 亚洲国产精品久久久久秋霞不卡| 日韩在线中文字| 久久夜色撩人精品| 欧美性xxxx极品hd满灌| 日韩国产高清视频在线| 91精品国产九九九久久久亚洲| 日韩有码在线电影| 国产欧美久久久久久| 中文字幕日韩精品有码视频| 亚洲午夜色婷婷在线| 在线看日韩av| 日韩国产精品亚洲а∨天堂免| 久久电影一区二区| 精品亚洲男同gayvideo网站| 一本色道久久88精品综合| 亚洲色无码播放| 免费91麻豆精品国产自产在线观看| 97在线精品视频| 中文字幕在线观看亚洲| 色噜噜狠狠狠综合曰曰曰| 波霸ol色综合久久| 成人性生交大片免费看视频直播| 深夜成人在线观看| 91av在线播放视频| 色偷偷888欧美精品久久久| 久久久精品国产| 亚洲国产精品va在线| 中文字幕一区电影|