weixin.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. var weixin = {
  2. AppId: 'wx6de69d22565ac596',
  3. // 解析页面查询参数
  4. parseQueryParams(url, decode=true) {
  5. var queryString = url.split('?')[1];
  6. // console.log('queryString: ' + queryString);
  7. if (queryString == undefined)
  8. return '';
  9. if (decode)
  10. queryString = Base64.decode(queryString);
  11. // console.log(queryString);
  12. var params = new URLSearchParams(queryString);
  13. return params;
  14. },
  15. // 获取微信code用于后续服务端获取用户openid
  16. getWxCode() {
  17. var code = '';
  18. var params = this.parseQueryParams(window.location.href, false);
  19. if (params != '')
  20. code = params.get('code');
  21. if (code == null || code === '') {
  22. var redirect_uri = window.location.href;
  23. redirect_uri = encodeURIComponent(redirect_uri);
  24. console.log('redirect_uri:' + redirect_uri);
  25. window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+ this.AppId
  26. + '&redirect_uri=' + redirect_uri
  27. + '&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
  28. } else {
  29. return code;
  30. }
  31. },
  32. initWeixinJSBridge(payParam, successFunc=null, successParam=null, failFunc=null, failParam=null) {
  33. // 支付只能在微信内置浏览器才有效果,在其他浏览器里面是无效的,进行判断
  34. if (typeof WeixinJSBridge == "undefined") {
  35. console.log("请在微信客户端打开");
  36. alert("请在微信客户端打开");
  37. if (document.addEventListener) {
  38. document.addEventListener('WeixinJSBridgeReady', onBridgeReady(payParam, successFunc, successParam, failFunc, failParam), false);
  39. } else if (document.attachEvent) {
  40. document.attachEvent('WeixinJSBridgeReady', onBridgeReady(payParam, successFunc, successParam, failFunc, failParam));
  41. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady(payParam, successFunc, successParam, failFunc, failParam));
  42. }
  43. } else {
  44. onBridgeReady(payParam, successFunc, successParam, failFunc, failParam);
  45. }
  46. },
  47. // JSAPI调起支付
  48. onBridgeReady(payParam, successFunc=null, successParam=null, failFunc=null, failParam=null) {
  49. WeixinJSBridge.invoke(
  50. "getBrandWCPayRequest",
  51. {
  52. appId: payParam.AppId, //公众号ID,由商户传入
  53. timeStamp: payParam.TimeStamp, //时间戳,自1970年以来的秒数
  54. nonceStr: payParam.NonceStr, //随机串
  55. package: payParam.Package,
  56. signType: payParam.SignType, //微信签名方式
  57. paySign: payParam.PaySign //微信签名
  58. },
  59. function (res) {
  60. if (res.err_msg == "get_brand_wcpay_request:ok") {
  61. // 使用以上方式判断前端返回,微信团队郑重提示:
  62. //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  63. if (successFunc != null && successFunc != '') {
  64. if (successParam != null && successParam != '') {
  65. successFunc(successParam);
  66. } else {
  67. successFunc();
  68. }
  69. } else {
  70. alert("支付成功");
  71. }
  72. } else {
  73. if (failFunc != null && failFunc != '') {
  74. if (failParam != null && failParam != '') {
  75. failFunc(failParam);
  76. } else {
  77. failFunc();
  78. }
  79. } else {
  80. alert("支付取消");
  81. }
  82. }
  83. }
  84. );
  85. }
  86. };
  87. export default weixin;