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

首頁 > 學院 > 開發設計 > 正文

微信公眾號支付(三):頁面調用微信支付JS并完成支付

2019-11-14 15:38:06
字體:
來源:轉載
供稿:網友

一、調用微信的JS文件

1.首先要綁定【JS接口安全域名】,“公眾號設置”的“功能設置”中

2.引入JS文件

 備注:支持使用 AMD/CMD 標準模塊加載方法加載

1 <script type="text/javascript" src="http://res.wx.QQ.com/open/js/jweixin-1.0.0.js"></script>

3.通過config接口注入權限驗證配置

1 wx.config({2     debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。3     appId: '', // 必填,公眾號的唯一標識4     timestamp: , // 必填,生成簽名的時間戳5     nonceStr: '', // 必填,生成簽名的隨機串6     signature: '',// 必填,簽名,見附錄17     jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,這里只寫支付的8 });

4.通過ready接口處理成功驗證

1 wx.ready(function(){2     wx.hideOptionMenu();//隱藏右邊的一些菜單3 });

 

二、wx.config中的簽名

1.首先要獲取到access token:公眾號的全局唯一票據 。然后根據access token獲取到jsapi_ticket:公眾號用于調用微信JS接口的臨時票據。再用jsapi_ticket獲取到簽名。

2.獲取access token:文檔:url:http://mp.weixin.qq.com/wiki/15/54ce45d8d30b6bf6758f68d2e95bc627.html

 1   public static Token getToken(String appid, String appsecret) { 2         Token token = null; 3         String requestUrl = Constants.token_url.replace("APPID", appid).replace("APPSECRET", appsecret); 4         // 發起GET請求獲取憑證 5         JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(requestUrl, "GET", null); 6  7         if (null != jsonObject) { 8             try { 9                 token = new Token();10                 token.setAccessToken(jsonObject.getString("access_token"));11                 token.setExpiresIn(jsonObject.getInt("expires_in"));12             } catch (JSONException e) {13                 token = null;14                 // 獲取token失敗15                 log.error("獲取token失敗 "+jsonObject.getInt("errcode")+","+jsonObject.getString("errmsg"));16             }17         }18         return token;19     }

有些方法在前兩篇中。

3.獲取jsapi_ticket

 1   public static Ticket getTicket() { 2         //Constants.ticket_url = https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi 3         String requestUrl = Constants.ticket_url.replace("ACCESS_TOKEN", TokenThread.accessToken.getAccessToken()); 4         // 發起GET請求獲取憑證 5         JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(requestUrl, "GET", null); 6         Ticket ticket = null; 7         String jsapi_ticket = ""; 8         int expires_in = 0; 9         if (null != jsonObject) {10             try {11                 jsapi_ticket = jsonObject.getString("ticket");12                 expires_in = jsonObject.getInt("expires_in");13                 ticket = new Ticket();14                 ticket.setTicket(jsapi_ticket);15                 ticket.setExpiresIn(expires_in);16             } catch (JSONException e) {17                 // 獲取失敗18                 log.error("獲取jsapi_ticket失敗"+jsonObject.getInt("errcode")+","+jsonObject.getString("errmsg"));19             }20         }21         return ticket;22     }

注意:jsapi_ticket和access token為7200的有效時間。7200后要重新獲取,我是放在線程里面死循環的。

4.算簽名

 1 /** 2  * 簽名實體類 3  * @author rory.wu 4  * 5  */ 6 public class Signature implements Serializable { 7     PRivate static final long serialVersionUID = -7799030247222127708L; 8      9     private String url;10     private String jsapi_ticket;11     private String nonceStr;12     private String timestamp;13     private String signature;14        15    //下面是getset方法       16 }
 1    /** 2      * 算出簽名 3      * @param jsapi_ticket  4      * @param url 業務中調用微信js的地址 5      * @return 6      */ 7     public static Signature sign(String jsapi_ticket, String url) { 8         String nonce_str = CommonUtil.create_nonce_str(); 9         String timestamp = CommonUtil.create_timestamp();10         String string1;11         String signature = "";12 13         //注意這里參數名必須全部小寫,且必須有序14         string1 = "jsapi_ticket=" + jsapi_ticket +15                   "&noncestr=" + nonce_str +16                   "&timestamp=" + timestamp +17                   "&url=" + url;18         try19         {20             MessageDigest crypt = MessageDigest.getInstance("SHA-1");21             crypt.reset();22             crypt.update(string1.getBytes("UTF-8"));23             signature = CommonUtil.byteToStr(crypt.digest());24         }25         catch (NoSuchAlgorithmException e)26         {27             e.printStackTrace();28         }29         catch (UnsupportedEncodingException e)30         {31             e.printStackTrace();32         }33         34         Signature result = new Signature();35         result.setUrl(url);36         result.setJsapi_ticket(jsapi_ticket);37         result.setNonceStr(nonce_str);38         result.setTimestamp(timestamp);39         result.setSignature(signature);40 41         return result;42     }

注意:有些方法在前兩篇中

這樣就算出簽名了。

5.傳遞到前端頁面

把隨機字符串:nonce_str,timestamp時間戳,appId,簽名,包裝為prepay_id=prepay_id的預支付ID傳遞到前端。

1 wx.config({2     appId: '${appId}', // 必填,公眾號的唯一標識3     timestamp: ${timestamp}, // 必填,生成簽名的時間戳4     nonceStr: '${nonceStr}', // 必填,生成簽名的隨機串5     signature: '${signature}',// 必填,簽名,見附錄16     jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄27 });

6.現在就可以使用微信JS了。

 三、調用微信支付

在前一篇中已經獲取到了預支付訂單的ID,prepay_id,

 

 1 /** 2  * 微信支付對象 3  * @author rory.wu 4  * 5  */ 6 public class WxPay implements Serializable { 7     private static final long serialVersionUID = 3843862351717555525L; 8     private String paySign; 9     private String prepay_id;10     private String nonce_str;11     private String timeStamp;12     13     //get,set方法14 }
 1    /** 2      * 獲取頁面上weixin支付JS所需的參數 3      * @param map 4      * @return 5      */ 6     private WxPay getWxPayInfo(String prepay_id) { 7         String nonce = CommonUtil.create_nonce_str().replace("-", ""); 8         String timeStamp = CommonUtil.create_timestamp(); 9         //再算簽名10         String newPrepay_id = "prepay_id="+prepay_id;11         String args = "appId="+Constants.appid12                       +"&nonceStr="+nonce13                       +"&package="+newPrepay_id14                       +"&signType=md5"15                       +"&timeStamp="+timeStamp16                       +"&key="+key;17         String paySign = SignUtil.getSign(args, "MD5");18         WxPay wxPay = new WxPay();19         wxPay.setNonce_str(nonce);20         wxPay.setPaySign(paySign);21         wxPay.setPrepay_id(newPrepay_id);22         wxPay.setTimeStamp(timeStamp);23         return wxPay;24     }25     

注意:有些方法在前2篇中。

微信支付的最后一步:js調用

 1 wx.chooseWXPay({ 2     timestamp: json.timeStamp, 3     nonceStr: json.nonce_str,  4     package: json.prepay_id, 5     signType: 'MD5', 6     paySign: json.paySign,  7     success: function (res) { 8         alert("支付成功"); 9     }10 });


結束,微信支付全部結束啦,有問題可以留言找我哦,只會java的,88


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019免费中文字幕视频三| 国产欧美精品在线| 国产成人精品一区| 国产精品男人的天堂| 亚洲色图在线观看| 色中色综合影院手机版在线观看| 亚洲一区二区三区四区视频| 日韩av在线免费播放| 热久久免费国产视频| 欧美日韩视频在线| 国产精品稀缺呦系列在线| 日韩国产激情在线| 97超碰蝌蚪网人人做人人爽| 这里只有精品久久| 色偷偷av一区二区三区| 国产亚洲精品久久| 色偷偷偷综合中文字幕;dd| 亚洲人成电影在线| 亚洲精品一区二三区不卡| 中文字幕亚洲图片| 欧美乱大交xxxxx另类电影| 欧美日韩美女在线| 国产成人久久久精品一区| 在线精品播放av| 亚洲综合日韩中文字幕v在线| 最近更新的2019中文字幕| 国产91精品最新在线播放| 成人黄色午夜影院| 精品丝袜一区二区三区| 岛国精品视频在线播放| 日韩一区视频在线| 欧美日韩免费看| 国产精品三级久久久久久电影| 亚洲成人网av| 亚洲在线一区二区| 欧美国产亚洲精品久久久8v| 在线观看久久av| 性欧美xxxx视频在线观看| 黑人极品videos精品欧美裸| 日韩免费在线视频| 亚洲色图50p| 日韩电视剧免费观看网站| 久久久亚洲天堂| 欧美精品一区二区免费| 91社影院在线观看| 亚洲三级免费看| 国产精品主播视频| 岛国av一区二区在线在线观看| 国产精品精品视频| 中文亚洲视频在线| 欧美一级视频免费在线观看| 色综合老司机第九色激情| 在线免费观看羞羞视频一区二区| 欧美亚洲第一页| 亚洲国内高清视频| 懂色av一区二区三区| 欧美亚洲午夜视频在线观看| 国产成人精品免高潮费视频| 国产亚洲人成a一在线v站| 成人日韩av在线| 亚洲欧美制服丝袜| 黑人欧美xxxx| 日韩精品视频免费| 中文字幕精品一区久久久久| 精品视频久久久久久| 亚洲精品影视在线观看| 亚洲综合成人婷婷小说| 国产99久久精品一区二区 夜夜躁日日躁| 久久久久999| 久久99热这里只有精品国产| 国产精品日日摸夜夜添夜夜av| 亚洲欧美日韩精品久久奇米色影视| 在线播放精品一区二区三区| 国产福利视频一区| 538国产精品一区二区在线| 日韩精品中文字幕在线观看| 日日摸夜夜添一区| 成人午夜激情免费视频| 久久久久久久久久久人体| 美日韩精品免费视频| 国产激情综合五月久久| 日韩精品高清在线| 国产成人一区三区| 一区二区三区美女xx视频| 宅男66日本亚洲欧美视频| 成年人精品视频| 疯狂蹂躏欧美一区二区精品| 欧美日韩人人澡狠狠躁视频| www.国产精品一二区| 久久天天躁狠狠躁夜夜躁2014| 麻豆国产精品va在线观看不卡| 精品久久久久久久久久国产| 69久久夜色精品国产7777| www日韩中文字幕在线看| 国产精品香蕉av| 日韩中文字幕不卡视频| 亚洲毛茸茸少妇高潮呻吟| 欧美性猛交xxxx久久久| 九九热r在线视频精品| 亚洲电影免费观看高清完整版在线观看| 最近更新的2019中文字幕| 国产亚洲精品久久久优势| 国产亚洲成av人片在线观看桃| 91精品国产综合久久男男| 日本久久91av| 精品国产一区二区三区久久狼5月| 色www亚洲国产张柏芝| 久久综合久久美利坚合众国| 国产精品爽黄69| 青青久久av北条麻妃黑人| 丁香五六月婷婷久久激情| 亚洲午夜久久久久久久| 亚洲欧洲xxxx| 68精品久久久久久欧美| 91久久精品国产91性色| 深夜福利91大全| 另类图片亚洲另类| 久久久久国色av免费观看性色| 国产v综合ⅴ日韩v欧美大片| 久久久久久12| 欧美另类在线观看| 国产日韩换脸av一区在线观看| 久久精品国产视频| 国产精品久久电影观看| 欧美片一区二区三区| 日韩在线观看免费高清完整版| 欧美成人久久久| 国产一区二区丝袜| 亚洲精品久久久久久下一站| 成人a在线观看| 欧美在线免费观看| 国产精品入口免费视频一| 亚洲网站在线看| 欧美日韩色婷婷| 2019av中文字幕| 亚洲国产小视频在线观看| 国产精品自拍网| 亚洲欧美www| 最近日韩中文字幕中文| 性欧美视频videos6一9| 国产日韩欧美在线| 欧美精品在线播放| 91欧美精品午夜性色福利在线| 亚洲a级在线播放观看| 亚洲最新在线视频| 亚洲影院污污.| 国产精自产拍久久久久久蜜| 久久躁日日躁aaaaxxxx| 中文字幕国产精品久久| 欧美日韩激情视频| 亚洲一区二区三区香蕉| 国产精品一区=区| 久久久中精品2020中文| 亚洲男人天天操| 亚洲伦理中文字幕| 播播国产欧美激情| 亚洲激情小视频| 日本高清+成人网在线观看| 91大神在线播放精品| 狠狠干狠狠久久| 日韩在线视频中文字幕| 欧美日韩国产中文字幕| 日韩在线中文字| 国产成人精品av在线|