https://dc-static.wondershare.cc/hybrid_scan_pay/js/ws_wa_pay_2.js

Last Checked: Aug 10, 2023, 19:50 EDT

IP Address: 47.246.20.229
ASN #: AS24429 TAOBAO Zhejiang Taobao Network Co.,Ltd, CN
Location: Unknown, Unknown, Unknown
URL Reputation:
  • Unknown This URL is not identified as malicious in the PhishTank Database.
  • Unknown PhishCheck thinks this URL is likely not a phish.
  • Unknown OpenPhish: URL not in feed.

Other submissions on 47.246.20.229:

  • http://udomino.boxiangyx.com/

  • https://dc-static.wondershare.cc/account_center/google-sdk.js

  • https://www.paris2024.org/

Other submissions on wondershare.cc:

  • https://dc-static.wondershare.cc/account_center/google-sdk.js

  • https://analytics.wondershare.cc:8106/sa.gif?project=UA_MediaIo_Web

  • http://prod-web.wondershare.cc/

Previous checks:

                               Domain Name: WONDERSHARE.CC
Registry Domain ID: 99748921_DOMAIN_CC-VRSN
Registrar WHOIS Server: whois.godaddy.com
Registrar URL: https://www.godaddy.com
Updated Date: 2022-05-31T02:15:29Z
Creation Date: 2012-05-25T04:44:13Z
Registrar Registration Expiration Date: 2024-05-25T04:44:13Z
Registrar: GoDaddy.com, LLC
Registrar IANA ID: 146
Registrar Abuse Contact Email: abuse@godaddy.com
Registrar Abuse Contact Phone: +1.4806242505
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Registry Registrant ID: Not Available From Registry
Registrant Name: Registration Private
Registrant Organization: Domains By Proxy, LLC
Registrant Street: DomainsByProxy.com
Registrant Street: 2155 E Warner Rd
Registrant City: Tempe
Registrant State/Province: Arizona
Registrant Postal Code: 85284
Registrant Country: US
Registrant Phone: +1.4806242599
Registrant Phone Ext:
Registrant Fax: +1.4806242598
Registrant Fax Ext:
Registrant Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=WONDERSHARE.CC
Registry Admin ID: Not Available From Registry
Admin Name: Registration Private
Admin Organization: Domains By Proxy, LLC
Admin Street: DomainsByProxy.com
Admin Street: 2155 E Warner Rd
Admin City: Tempe
Admin State/Province: Arizona
Admin Postal Code: 85284
Admin Country: US
Admin Phone: +1.4806242599
Admin Phone Ext:
Admin Fax: +1.4806242598
Admin Fax Ext:
Admin Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=WONDERSHARE.CC
Registry Tech ID: Not Available From Registry
Tech Name: Registration Private
Tech Organization: Domains By Proxy, LLC
Tech Street: DomainsByProxy.com
Tech Street: 2155 E Warner Rd
Tech City: Tempe
Tech State/Province: Arizona
Tech Postal Code: 85284
Tech Country: US
Tech Phone: +1.4806242599
Tech Phone Ext:
Tech Fax: +1.4806242598
Tech Fax Ext:
Tech Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=WONDERSHARE.CC
Name Server: VIP3.ALIDNS.COM
Name Server: VIP4.ALIDNS.COM
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2023-08-10T23:50:26Z <<<
For more information on Whois status codes, please visit https://icann.org/epp

TERMS OF USE: The data contained in this registrar's Whois database, while believed by the
registrar to be reliable, is provided "as is" with no guarantee or warranties regarding its
accuracy. This information is provided for the sole purpose of assisting you in obtaining
information about domain name registration records. Any use of this data for any other purpose
is expressly forbidden without the prior written permission of this registrar. By submitting
an inquiry, you agree to these terms and limitations of warranty. In particular, you agree not
to use this data to allow, enable, or otherwise support the dissemination or collection of this
data, in part or in its entirety, for any purpose, such as transmission by e-mail, telephone,
postal mail, facsimile or other means of mass unsolicited, commercial advertising or solicitations
of any kind, including spam. You further agree not to use this data to enable high volume, automated
or robotic electronic processes designed to collect or compile this data for any purpose, including
mining this data for your own personal or commercial purposes. Failure to comply with these terms
may result in termination of access to the Whois database. These terms may be subject to modification
at any time without notice.

                             
  • GET
    0 Timed out waiting for a response.

    https://dc-static.wondershare.cc/favicon.ico

<html><head><link rel="stylesheet" href="resource://content-accessible/plaintext.css"></head><body><pre>(function () {
  var DEFAULT_TIMEOUT = 30000;

  // 进入页面,首先取出location.href的所有参数组装为hrefParams,后面æ&nbsp;¹æ®å–参直接æ&nbsp;¹æ®key取值即可
  var hrefParams = {};
  // 解决urlç¼–ç&nbsp;æ—¶å–不到参数的问题
  var href = decodeURIComponent(window.location.href);
  href.replace(/([^?&amp;=]+)=([^?&amp;=#]*)/g, function (_, $1, $2) {
    hrefParams[$1] = hrefParams[$1] ? hrefParams[$1] : $2;
  });
  var sc_message_id = hrefParams.wgp_msg_id || hrefParams.sc_message_id || "";
  var sc_project = hrefParams.sc_project || "";
  var sc_uid = hrefParams.sc_uid || "";
  var p_test = hrefParams.p_test || "";

  if (!sc_project) {
    // sc_project未ä¼&nbsp;值,使用默认值
    if (window.VConsole) {
      sc_project = "UA_WGP_System_test";
    } else {
      sc_project = "UA_WGP_System";
    }
  }

  var _plat = platform();
  if (_plat === "") {
    // 只有在浏览器环境才会上报曝光事件(在微信或支付宝环境不会上报曝光事件)
    reportSensorsData({
      event: "wgp_cart_page_view",
    });
  }

  /* 
  错误ç&nbsp;ï¼š
  10000 需要登录
  10001 ä¼&nbsp;参错误
  110001 åŠ&nbsp;购失败
  110002 获取微信openid失败
  110003 用优æƒ&nbsp;券需要先åŠ&nbsp;è´­
  110004 订单支付中,æ—&nbsp;法继续åŠ&nbsp;è´­
  */

  function alertFunc(str) {
    if (window.VConsole) {
      alert(str);
    }
  }

  // 判断是否为支付宝或者微信
  function platform() {
    if (/MicroMessenger/.test(window.navigator.userAgent)) {
      return "wx";
    } else if (/AlipayClient/.test(window.navigator.userAgent)) {
      return "ali";
    } else {
      return "";
    }
  }

  function isMobile() {
    return /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
      navigator.userAgent
    );
  }

  // 默认http设置
  function getDefaultHttpParams() {
    return {
      // 默认值
      timeout: DEFAULT_TIMEOUT,
      contentType: "application/json",
      dataType: "json",
    };
  }

  // 是否数组
  function isArrayEle(arr) {
    var res = false;
    if (arr &amp;&amp; Array.isArray(arr) &amp;&amp; arr.length &gt; 0) {
      res = true;
    }
    return res;
  }

  /*
    复杂json转为FormData
    parent:key值,data:数据值,form:FormData实例
    使用:JsonToFormData("", a, null);
 */
  function JsonToFormData(parent, data, form) {
    form = form || new FormData();
    // 循环ä¼&nbsp;入的值转换formData
    var index = 0;
    Object.keys(data).forEach((key) =&gt; {
      var val = data[key];
      if (val === null) {
        var pk = parent ? parent + "[" + key + "]" : key;
        form.set(pk, val || "");
      } else if (typeof val === "object") {
        if (val.length === 0) {} else if (val.length &gt;= 1) {
          // 数组
          var pk = parent ? parent + "[" + index + "]" + "[" + key + "]" : key;
          JsonToFormData(pk, val, form);
        } else {
          // 纯对象
          var pk = parent ? parent + "[" + key + "]" : key;
          JsonToFormData(pk, val, form);
        }
      } else {
        var pk = parent ? parent + "[" + key + "]" : key;
        form.set(pk, val || "");
      }
      index++;
    });
    if (parent === "") return form;
  }

  // 将formData数据转化为字符串
  function transferFormDataToString(FormData) {
    var str = "";
    for (var [key, value] of FormData) {
      str += key + "=" + value + "&amp;";
    }
    return str.substring(0, str.length - 1);
  }

  // 合并请求配置(contentType、timeout、withCredentials、headers)
  function getCombinedHttpParams(httpParams) {
    var httpObj = getDefaultHttpParams();
    if (httpParams) {
      var httpKeys = Object.keys(httpParams);
      if (httpKeys.length &gt; 0) {
        httpObj = Object.assign({}, httpObj, httpParams);
      }
    }
    return httpObj;
  }

  // 构建神策上报请求url
  function buildSensorsRequestUrl(dataObj) {
    var res = "https://prod-web.wondershare.cc/api/v1/email-report?";
    for (var key in dataObj) {
      res += key + "=" + dataObj[key] + "&amp;";
    }
    if (res.endsWith("&amp;")) {
      var len = res.length;
      res = res.substring(0, len - 1);
    }
    return res;
  }

  function getCookie(name) {
    var v = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)");
    return v ? decodeURIComponent(v[2]) : null;
  }

  function getScDistinctId() {
    var sc_distinct_id = hrefParams.sc_distinct_id || "";
    // 优先取url的参数,其次取Cookie的值,最后设为99999
    if (!sc_distinct_id) {
      if (getCookie("ws_visit_id")) {
        sc_distinct_id = getCookie("ws_visit_id");
      } else if (!sc_uid) {
        sc_distinct_id = "99999";
      }
    }
    return sc_distinct_id;
  }

  // 上报神策数据
  function reportSensorsData(data) {
    // 只有在扫ç&nbsp;é¡µurl有sc_project参数才需要上报神策埋点(中间页不上报)
    if (!sc_project) {
      return;
    }
    var event = data.event;
    var params = {
      project: sc_project,
      type: "track",
      event: event,
      tid: "UA-WGP-System",
      message_id: sc_message_id,
      psource: hrefParams.sc_psource || "",
      distinct_id: getScDistinctId(),
      operation_id: hrefParams.sc_operation_id || "",
      uid: sc_uid,
      pid: hrefParams.sc_pid || "",
      pver: hrefParams.sc_pver || "",
      track_id: hrefParams.sc_track_id || "",
      order_id: data.order_id || "",
    };
    if (hrefParams.sc_template_id) {
      params.template_id = hrefParams.sc_template_id;
    }
    if (hrefParams.sc_wechat_active_id) {
      params.wechat_active_id = hrefParams.sc_wechat_active_id;
    }
    if (hrefParams.sc_operation_tag) {
      params.operation_tag = hrefParams.sc_operation_tag;
    }
    alertFunc(JSON.stringify(params));
    // https://prod-web.wondershare.cc/api/v1/email-report?project=UA_CscOperation_Web_test&amp;type=track&amp;event=recall_page_view&amp;psource=email&amp;distinct_id=551924004&amp;operation_id=20211111_0_1_5&amp;sku_id=20022&amp;uid=551924004&amp;pid=10789/10726/10788/3223&amp;pver=&amp;track_id=ef4bfcf0-42d3-11ec-b2f6-6c4b90e5cbb2
    var fetchUrl = buildSensorsRequestUrl(params);
    fetch(fetchUrl, {
        method: "GET",
      })
      .then((response) =&gt; response.text())
      .then((result) =&gt; console.log(result))
      .catch((error) =&gt; console.log("error", error));
  }

  // 生成唯一ID
  function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i &lt; 36; i++) {
      s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] &amp; 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
  }

  // 原生请求通用函数
  function httpRequest(obj, successfun, errFun) {
    var xhr = null;
    // 创建 XMLHttpRequest 对象,老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
    if (window.XMLHttpRequest) {
      // code for all new browsers
      xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      // code for IE5 and IE6
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // 判断是否支持请求
    if (xhr === null) {
      alert("浏览器不支持xmlHttp");
      return;
    }

    // 请求方式, 转换为大写
    var httpMethod = (obj.method || "Get").toUpperCase();
    // 数据类型
    // var httpDataType = obj.dataType || "json";
    var contentType = obj.contentType || "application/json";
    var timeout = obj.timeout || DEFAULT_TIMEOUT; // 超时时间,单位是毫秒
    var withCredentials = obj.withCredentials || false;
    // 请求地址
    var httpUrl = obj.url || "";

    // 异步请求
    var async = true;

    // 超时
    xhr.timeout = timeout;
    // 允许携带Cookie
    xhr.withCredentials = withCredentials;

    // get请求参数处理
    if (httpMethod === "GET") {
      var data = obj.data || {};
      var requestData = "";
      for (var gKey in data) {
        requestData += gKey + "=" + data[gKey] + "&amp;";
      }
      requestData = requestData.substring(0, requestData.length - 1);
      if (httpUrl.indexOf("?") !== -1 &amp;&amp; httpUrl.indexOf("&amp;") !== -1) {
        httpUrl += "&amp;" + requestData;
      } else {
        httpUrl += "?" + requestData;
      }
    } else {
      // post put
      var data = obj.data || {};
      var requestData = "";
      if (data === "") {
        requestData = "";
      } else {
        if (contentType === "application/x-www-form-urlencoded") {
          var formData = JsonToFormData("", data, null);
          requestData = transferFormDataToString(formData);
        } else if (contentType === "application/json") {
          requestData = JSON.stringify(data); // 序列化
        } else {
          requestData = data;
        }
      }
    }

    // onreadystatechange 是一个事件句柄。它的值 (state_Change) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。状态从 0 (uninitialized) 到 4 (complete) 进行变化。仅在状态为 4 时,我们才执行代ç&nbsp;
    xhr.onreadystatechange = function () {
      // complete
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          // 请求成功执行的回调函数
          var responseText1 = xhr.responseText || {};
          if (responseText1 &amp;&amp; typeof responseText1 === "string") {
            responseText1 = JSON.parse(responseText1);
          }
          successfun(responseText1);
        } else {
          // 请求失败的回调函数
          var responseText2 = xhr.responseText || {};
          if (responseText2 &amp;&amp; typeof responseText2 === "string") {
            responseText2 = JSON.parse(responseText2);
          }
          errFun(responseText2);
        }
      }
    };
    // 请求接口
    if (httpMethod === "GET") {
      xhr.open("GET", httpUrl, async);
      xhr.send(null);
    } else {
      // post put
      xhr.open(httpMethod, httpUrl, async);

      // headers处理
      var headers = obj.headers || {};
      if (headers &amp;&amp; typeof headers === "object") {
        for (var hk in headers) {
          xhr.setRequestHeader(hk, headers[hk]);
        }
      }
      xhr.setRequestHeader("Content-Type", contentType);
      xhr.send(requestData);
    }
  }

  var commonApiUtils = {
    baseUrl: "https://store.wondershare.cn/",
    baseApiUrl: "https://store.wondershare.cn",
    appid: "",
    timer: null,
    // 初始化购物车appid
    initShopAppId: function (appid) {
      this.appid = appid;
    },
    // 获取当前正在轮询的定时器数值
    getQueryPayResultTimer: function () {
      return this.timer;
    },
    // =====================国内收银台sku折扣系列api=====================
    // sdk初始化接口(post)Content-Type application/json
    init: function (params, httpParams) {
      var appid = this.appid;

      var auth_type = params.auth_type || ""; // 7985
      var code = params.auth_code || ""; // 499
      var app_id = appid || "";
      var app_key = params.app_key || "";

      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var data = {
        auth_type: auth_type,
        code: code,
        app_id: app_id,
        app_key: app_key,
      };

      // extra_param组装,为后端支付完成(wgp_order_finish)神策埋点做准备
      if (sc_project) {
        var extra_param = {
          sc_project: sc_project,
          sc_message_id: sc_message_id,
          sc_psource: hrefParams.sc_psource || "",
          sc_distinct_id: getScDistinctId(),
          sc_operation_id: hrefParams.sc_operation_id || "",
          sc_uid: sc_uid,
          sc_pid: hrefParams.sc_pid || "",
          sc_pver: hrefParams.sc_pver || "",
          sc_track_id: hrefParams.sc_track_id || "",
          cart_type: "cn", // æ&nbsp;‡è¯†å›½å†…购物车
        };
        if (hrefParams.sc_template_id) {
          extra_param.sc_template_id = hrefParams.sc_template_id;
        }
        if (hrefParams.sc_wechat_active_id) {
          extra_param.sc_wechat_active_id = hrefParams.sc_wechat_active_id;
        }
        data.extra_param = extra_param;
      }

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/init";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: data,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            if (
              res &amp;&amp;
              res.code === 0 &amp;&amp;
              res.data &amp;&amp;
              res.data.ws_id &amp;&amp;
              !sc_uid
            ) {
              sc_uid = res.data.ws_id;
            }
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 查询优æƒ&nbsp;券列表(post)Content-Type application/json
    getCoupons: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/coupon/query";

      if (params.sku_list) {
        params.sku_id_list = params.sku_list;
        delete params.sku_list;
      }

      if (!params.country) {
        params.country = "CN"; // 国家默认值
      }

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            if (res &amp;&amp; res.code === 0 &amp;&amp; isArrayEle(res.data)) {
              // 只返回有效券(status=1)
              res.data = res.data.filter(function (item) {
                return item.status === 1;
              });
            }
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 领取优æƒ&nbsp;券(post)Content-Type application/json
    reveiveCoupons: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/coupon/receive";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 询价接口(post)Content-Type application/json 前端BUY页面展示价æ&nbsp;¼ä¿¡æ¯
    getCalcPrice: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/price/query";

      if (params.coupon_no) {
        params.coupon_codes = params.coupon_no;
        delete params.coupon_no;
      } else {
        params.coupon_codes = "";
      }

      if (!params.currency) {
        params.currency = "CNY"; // 货币默认值
      }
      if (!params.country) {
        params.country = "CN"; // 国家默认值
      }

      if (
        params.sku_list &amp;&amp;
        Array.isArray(params.sku_list) &amp;&amp;
        params.sku_list.length &gt; 0
      ) {
        params.sku_list.map(function (item) {
          item.sku_id = Number(item.sku_id); // sku_id字段转化为number类型
          if (
            item.contract_period === undefined ||
            item.contract_period === null ||
            item.contract_period === ""
          ) {
            item.contract_period = 0;
          }
          if (
            item.modify_feature === undefined ||
            item.modify_feature === null ||
            item.modify_feature === ""
          ) {
            item.modify_feature = "[]";
          }
          if (item.activity_ids === undefined || item.activity_ids === null) {
            item.activity_ids = "";
          }
          if (
            item.pay_activity_id === undefined ||
            item.pay_activity_id === null ||
            item.pay_activity_id === ""
          ) {
            item.pay_activity_id = 0;
          }
        });
      }

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 获取支付会话id(post)Content-Type application/json
    getPaySessionId: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/get_session_key";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      // 初始化状态
      hasOrderPayReportOnce = false;

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 获取支付会话id【自带定时器轮询】(post)Content-Type application/json
    getPaySessionIdWithTimer: function (
      params,
      httpParams,
      timerInterval,
      payingCallback,
      payFinishCallback
    ) {
      // 请求相关的设置参数
      var _this = this;
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/get_session_key";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      // 初始化状态
      hasOrderPayReportOnce = false;

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            if (res.code === 0 &amp;&amp; res.data &amp;&amp; res.data.pay_session_id) {
              _this.timer = setInterval(
                function () {
                  var timerIntervalDefault = 10 * 1000;
                  if (timerInterval) {
                    if (
                      typeof timerInterval === "number" ||
                      typeof timerInterval === "string"
                    ) {
                      timerInterval = parseInt(timerInterval);
                    } else {
                      timerInterval = timerIntervalDefault;
                    }
                  } else {
                    timerInterval = timerIntervalDefault;
                  }

                  var queryPayResultUrl =
                    baseUrl + "/api/v1/cnorder/query_pay_result";

                  var queryPayResultParams = {};
                  queryPayResultParams.pay_session_id = res.data.pay_session_id;
                  queryPayResultParams.app_id = _this.appid;
                  queryPayResultParams.t = new Date().getTime();

                  var queryPayResultRequestData = Object.assign({}, {
                      method: "get",
                      url: queryPayResultUrl,
                      data: queryPayResultParams,
                    },
                    httpObj
                  );
                  httpRequest(
                    queryPayResultRequestData,
                    function (res) {
                      if (res &amp;&amp; res.code === 0 &amp;&amp; res.data) {
                        // pay_status: 0 未扫ç&nbsp;  1 已经下单【二维ç&nbsp;éœ€è¦å±è”½æŽ‰ï¼Œä¸èƒ½å†æ‰«ã€‘ 4 支付完成
                        if (res.data.pay_status === 1) {
                          if (
                            res &amp;&amp;
                            res.code === 0 &amp;&amp;
                            res.data &amp;&amp;
                            !hasOrderPayReportOnce &amp;&amp;
                            !isMobile()
                          ) {
                            var order_id = res.data.order_id || "";
                            reportSensorsData({
                              event: "wgp_pay_order",
                              order_id: order_id,
                            });
                            hasOrderPayReportOnce = true;
                          }
                          payingCallback &amp;&amp;
                            typeof payingCallback === "function" &amp;&amp;
                            payingCallback();
                        } else if (res.data.pay_status === 4) {
                          // 支付成功,需清除定时器
                          _this.timer &amp;&amp; window.clearInterval(_this.timer);
                          // 后端上报wgp_order_finish事件埋点
                          payFinishCallback &amp;&amp;
                            typeof payFinishCallback === "function" &amp;&amp;
                            payFinishCallback();
                        } else if (res.data.pay_status !== 0) {
                          // 支付失败
                        }
                      }
                    },
                    function (err) {
                      console.log(err);
                    }
                  );
                }.bind(this),
                timerInterval
              );
            }
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 聚合支付组合api
    /*
    // åŠ&nbsp;è´­
    // 使用优æƒ&nbsp;券(ä¼&nbsp;参coupon_no有值,则需要调使用优æƒ&nbsp;券接口)
    // 发起支付
    // 聚合支付接口
    */
    payCommon: function (params, httpParams) {
      hasOrderPayReportOnce = false;
      var t1 = new Date();
      // 请求相关的设置参数
      var directPayParams = {
        pay_session_id: params.pay_session_id,
        order_products: params.order_products,
      };
      if (!params.request_id) {
        params.request_id = uuid();
      }
      directPayParams.request_id = params.request_id;
      if (params.coupon_no) {
        directPayParams.coupon_id = params.coupon_no;
      }
      if (params.pay_type === "wx_jsapi" || params.pay_type === "wx_h5") {
        directPayParams.pay_method = 27;
      }
      if (params.pay_type === "alipay") {
        directPayParams.pay_method = 14;
      }
      if (params.pay_type === "alipay_app") {
        directPayParams.pay_method = 97;
      }
      if (params.pay_type === "wx_jsapi") {
        // 微信混合扫ç&nbsp;åŠ&nbsp;è´­æ—&nbsp;需ä¼&nbsp;wx_codeå’Œwx_appid
        directPayParams.wx_code = params.wx_code;
        directPayParams.wx_appid = params.wx_appid;
      }
      if (params.extra_param) {
        directPayParams.extra = params.extra_param;
      }
      if (params.extra) {
        directPayParams.extra = params.extra;
      }
      if (params.market_activity_id) {
        directPayParams.market_activity_id = params.market_activity_id;
      }
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var directPayUrl = baseUrl + "/api/v1/app/cnorder/directpay";

      // 直接支付(合并原先åŠ&nbsp;购、使用优æƒ&nbsp;券、支付接口为一个接口)
      var directPayRequestData = Object.assign({}, {
          method: "post",
          url: directPayUrl,
          data: directPayParams,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          directPayRequestData,
          function (res) {
            // alertFunc(JSON.stringify(res));
            if (res &amp;&amp; res.code === 0 &amp;&amp; res.data &amp;&amp; res.data.pay_info) {
              var t2 = new Date();
              if (p_test === "1") {
                alertFunc(t1 + " ~ " + t2);
              }
              res.data = res.data.pay_info;
              // 只要购买页前端调payCommon API,待directpay接口返回pay_info(order_id)则上报wgp_pay_order事件埋点
              // 在payCommon上报,只针对h5支付有效,å›&nbsp;为混合扫ç&nbsp;è¯¥API是在中间页调用,此时中间页没有神策上报相关参数,所以混合扫ç&nbsp;å®žé™…不会上报
              if (_plat === "" &amp;&amp; !hasOrderPayReportOnce) {
                var order_id = res.data.order_id || "";
                reportSensorsData({
                  event: "wgp_pay_order",
                  order_id: order_id,
                });
                hasOrderPayReportOnce = true;
              }
            }
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // åŠ&nbsp;购接口(post)Content-Type application/json
    addOrder: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/add_order";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            alertFunc(JSON.stringify(res));
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 使用优æƒ&nbsp;券(put)Content-Type application/json 注意是put请求
    applyCoupon: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/apply_coupon";

      if (params.coupon_no) {
        params.coupon_codes = params.coupon_no;
        delete params.coupon_no;
      }

      var requestData = Object.assign({}, {
          method: "put",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 发起支付(post)Content-Type application/json
    pay: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/pay";

      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    // 查询支付结果(get)
    queryPayResult: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/query_pay_result";

      params.app_id = this.appid;
      params.t = new Date().getTime();

      var requestData = Object.assign({}, {
          method: "get",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            // 混合扫ç&nbsp;åœºæ™¯pc端购买页轮询支付状态上报wgp_pay_order神策埋点
            // 微信内嵌浏览器场景(类似h5支付的场景,也是点击支付按钮拉起微信支付,payCommonä¼&nbsp;参wx_jsapi,会轮询支付状态)也需要上报wgp_pay_order神策埋点
            if (
              res &amp;&amp;
              res.code === 0 &amp;&amp;
              res.data &amp;&amp;
              res.data.pay_status === 1 &amp;&amp;
              !hasOrderPayReportOnce &amp;&amp;
              (!isMobile() || (isMobile() &amp;&amp; _plat === "wx"))
            ) {
              // pay_status: 0 未扫ç&nbsp;  1 已经下单【二维ç&nbsp;éœ€è¦å±è”½æŽ‰ï¼Œä¸èƒ½å†æ‰«ã€‘ 4 支付完成
              var order_id = res.data.order_id || "";
              reportSensorsData({
                event: "wgp_pay_order",
                order_id: order_id,
              });
              hasOrderPayReportOnce = true;
            }
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    encodeUrlParams: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/set_params";
      var requestData = Object.assign({}, {
          method: "post",
          url: url,
          data: params,
        },
        httpObj
      );

      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
    decodeUrlParams: function (params, httpParams) {
      // 请求相关的设置参数
      var httpObj = getCombinedHttpParams(httpParams);

      var baseUrl = this.baseApiUrl;
      var url = baseUrl + "/api/v1/cnorder/get_params";

      if (typeof params !== "string") {
        reject("please input string!!!");
      }
      url += "/" + params;

      var requestData = Object.assign({}, {
          method: "get",
          url: url,
        },
        httpObj
      );
      return new Promise(function (resolve, reject) {
        httpRequest(
          requestData,
          function (res) {
            resolve(res);
          },
          function (err) {
            reject(err);
          }
        );
      });
    },
  };

  // 中间页用到的api
  window.wsWAPay = commonApiUtils;
})();</pre></body></html>

                             

Screenshot: