• 微信支付相关js


    import $ from "jquery"

    /*支付功能开始*/
    let ip="";
    let nonceStr;
    let appId;
    let mchId;
    let APISecret;
    let userOpenId="";
    let notifyUrl="";
    let wx_url = urlWay.host;
    let hex_chr = "0123456789abcdefghijklmnopqrstuvwxyz";
    let _this_obj = '';

    export default function (obj) {
    _this_obj = obj;

    return {
    paycall : paycall
    }
    }
    //openID
    function getUserId() {
    $.ajax({
    url: wx_url + 'wx/getOpenId.action',
    cache:false,
    async:false,
    data:{action:"openId"},
    success:function(result) {
    userOpenId=result.openId;
    //alert(userOpenId + '1');
    },
    error: function (x) {
    //alert('1'+JSON.stringify(x));
    }
    });
    return userOpenId;
    }
    //获取openid结束 2015-7-18 17:06:56-----------------------------------------------------------------------------------------------------

    function getTimeStamp(){
    let timestamp=new Date().getTime();
    let timestampstring = timestamp.toString();//一定要转换字符串
    return timestampstring;
    }
    //获取精确到毫秒的时间字符串-----------------------------------------------------------------------------------------------------------------

    function getNonceStr(){
    let $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let maxPos = $chars.length;
    let noceStr = "";
    for (let i = 0; i < 32; i++) {
    noceStr += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return noceStr;
    }
    //获取32位随机字符串-------------------------------------------------------------------------------------------------------------------------

    function getRemoteIp() {
    let remoteIp="";
    $.ajax({
    url:wx_url+'wx/configManage.action', // 跳转到 action
    data:{action:"getRemoteIp"},
    cache:false,
    async:false,
    success:function(result) {
    remoteIp=result.ip;
    //alert(remoteIp+'2');
    },
    error:function(x, textStatus, errorThrown) {
    //alert('2'+JSON.stringify(x));
    }
    });
    return remoteIp;
    }
    //获取到ip地址-----------------------------------------------------------------------------------------------------------------------------

    function getAppId() {
    let appId="";
    $.ajax({
    url:wx_url+'wx/configManage.action', // 跳转到 action
    data:{action:"getProperty", propertyName:"corpIdFamilyDoctor"},
    cache:false,
    async:false,
    success:function(result) {
    appId=result.propertyValue;
    //alert(appId+'3');
    },
    error:function(x, textStatus, errorThrown) {
    //alert("3"+JSON.stringify(x));
    }
    });
    return appId;
    }
    //获取到appid---------------------------------------------------------------------------------------------------------------------------------

    function getMchId() {
    let mchId="";
    $.ajax({
    url:wx_url+'wx/configManage.action', // 跳转到 action
    data:{action:"getProperty", propertyName:"mchIdFamilyDoctor"},
    cache:false,
    async:false,
    success:function(result) {
    mchId=result.propertyValue;
    //alert(mchId+'4'); }, error:function(x, textStatus, errorThrown) { //alert('4'+JSON.stringify(x)); } }); return mchId;}//获取到微信支付的商户号-------------------------------------------------------------------------------------------------------------------------------function getAPISecret() { let APISecret=""; $.ajax({ url:wx_url+'wx/configManage.action', // 跳转到 action data:{action:"getProperty", propertyName:"corpSecretFamilyDoctor"}, cache:false, async:false, success:function(result) { APISecret=result.propertyValue; //alert(APISecret+'5'); }, error:function(x, textStatus, errorThrown) { //alert('5'+JSON.stringify(x)); } }); return APISecret;}//获取到微信支付应用密匙---------------------------------------------------------------------------------------------------------------------------------//下面开始获取notifyUrl------------------------------------------------------------------------------------------------------------------------------function getNotifyUrl(){ $.ajax({ type:'post', url:wx_url+'wx/configManage.action', data:{action:"getProperty", propertyName:"notify_url"}, cache:false, async:false, success:function(result){ notifyUrl=result.propertyValue; //alert(notifyUrl+'6'); }, error: function (x) { //alert('6'+JSON.stringify(x)); } }); return notifyUrl;}//调用微信支付-----------------------------------------------------------------------------------------------------------------------------------------function paycall(orderDesc, orderNum, orderAmount) { userOpenId=getUserId(); ip=getRemoteIp(); nonceStr=getNonceStr(); appId = getAppId(); mchId = getMchId(); APISecret = getAPISecret(); 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(orderDesc, orderNum, orderAmount); }}function onBridgeReady(orderDesc, orderNum, orderAmount){ let prepId = getPrePayId(orderDesc,orderNum,orderAmount); let timeStr = getTimeStamp(); let nonStr = getNonceStr(); let signStringforPay="appId="+appId+"&nonceStr="+nonStr+"&package=prepay_id="+prepId+"&signType=MD5&timeStamp="+timeStr+"&key="+APISecret; signStringforPay=MD5(signStringforPay); signStringforPay=signStringforPay.toUpperCase(); appId=appId+""; timeStr=timeStr+""; nonStr=nonStr+""; signStringforPay=signStringforPay+""; // alert(signStringforPay); WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":appId, //公众号名称,由商户传入 "timeStamp":timeStr, //时间戳,自1970年以来的秒数 "nonceStr":nonStr, //随机串 "package":"prepay_id=" + prepId, "signType":"MD5", //微信签名方式: "paySign":signStringforPay //微信签名 }, function(res){ _this_obj.whetherToPay(res); } );}function getPrePayId(orderDesc,orderNum,orderAmount) { let prepayId=""; let orderNumCopy=orderNum; notifyUrl=getNotifyUrl(); let signString="appid="+ appId +"&body="+orderDesc+"&mch_id=" + mchId + "&nonce_str="+nonceStr+"&notify_url="+notifyUrl+"&openid="+userOpenId+"&out_trade_no="+orderNumCopy+"&spbill_create_ip="+ip+"&total_fee="+orderAmount+"&trade_type=JSAPI&key="+APISecret; // alert("signString=="+signString);//测试 signString=MD5(signString); signString=signString.toUpperCase(); //alert(signString); $.ajax({ url:wx_url+'wx/getPrepayId.action', // 跳转到 action data:{action:"getPrepayId",mchId:mchId,tradeNo:orderNum,remoteIp:ip,nonceStr:nonceStr,signStr:signString,userOpenId:userOpenId,body:orderDesc,totalFee:orderAmount}, cache:false, async:false, success:function(result) { let resultXml=result.result; prepayId= resultXml.substring(resultXml.indexOf("<prepay_id>")+20,resultXml.indexOf("</prepay_id>")-3); //alert('1'+JSON.stringify(result)); //alert('2'+JSON.stringify(prepayId)); }, error:function(XMLHttpRequest, textStatus, errorThrown) { //alert('7'+JSON.stringify(XMLHttpRequest)); } }); return prepayId;}//加密function rhex(num) { let str = ""; for (let j = 0; j <= 3; j++) { str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15); } return str;}function str2blks_MD5(str) { let nblk = ((str.length + 8) >> 6) + 1; let blks = new Array(nblk * 16); for (let i = 0; i < nblk * 16; i++) { blks[i] = 0; } let j; for (j = 0; j < str.length; j++) { blks[j >> 2] |= str.charCodeAt(j) << ((j % 4) * 8); } blks[j >> 2] |= 128 << ((j % 4) * 8); blks[nblk * 16 - 2] = str.length * 8; return blks;}function add(x, y) { let lsw = (x & 65535) + (y & 65535); let msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 65535);}function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt));}function cmn(q, a, b, x, s, t) { return add(rol(add(add(a, q), add(x, t)), s), b);}function ff(a, b, c, d, x, s, t) { return cmn((b & c) | ((~b) & d), a, b, x, s, t);}function gg(a, b, c, d, x, s, t) { return cmn((b & d) | (c & (~d)), a, b, x, s, t);}function hh(a, b, c, d, x, s, t) { return cmn(b ^ c ^ d, a, b, x, s, t);}function ii(a, b, c, d, x, s, t) { return cmn(c ^ (b | (~d)), a, b, x, s, t);}function MD5(str) { let x = str2blks_MD5(str); let a = 1732584193; let b = -271733879; let c = -1732584194; let d = 271733878; for (let i = 0; i < x.length; i += 16) { let olda = a; let oldb = b; let oldc = c; let oldd = d; a = ff(a, b, c, d, x[i + 0], 7, -680876936); d = ff(d, a, b, c, x[i + 1], 12, -389564586); c = ff(c, d, a, b, x[i + 2], 17, 606105819); b = ff(b, c, d, a, x[i + 3], 22, -1044525330); a = ff(a, b, c, d, x[i + 4], 7, -176418897); d = ff(d, a, b, c, x[i + 5], 12, 1200080426); c = ff(c, d, a, b, x[i + 6], 17, -1473231341); b = ff(b, c, d, a, x[i + 7], 22, -45705983); a = ff(a, b, c, d, x[i + 8], 7, 1770035416); d = ff(d, a, b, c, x[i + 9], 12, -1958414417); c = ff(c, d, a, b, x[i + 10], 17, -42063); b = ff(b, c, d, a, x[i + 11], 22, -1990404162); a = ff(a, b, c, d, x[i + 12], 7, 1804603682); d = ff(d, a, b, c, x[i + 13], 12, -40341101); c = ff(c, d, a, b, x[i + 14], 17, -1502002290); b = ff(b, c, d, a, x[i + 15], 22, 1236535329); a = gg(a, b, c, d, x[i + 1], 5, -165796510); d = gg(d, a, b, c, x[i + 6], 9, -1069501632); c = gg(c, d, a, b, x[i + 11], 14, 643717713); b = gg(b, c, d, a, x[i + 0], 20, -373897302); a = gg(a, b, c, d, x[i + 5], 5, -701558691); d = gg(d, a, b, c, x[i + 10], 9, 38016083); c = gg(c, d, a, b, x[i + 15], 14, -660478335); b = gg(b, c, d, a, x[i + 4], 20, -405537848); a = gg(a, b, c, d, x[i + 9], 5, 568446438); d = gg(d, a, b, c, x[i + 14], 9, -1019803690); c = gg(c, d, a, b, x[i + 3], 14, -187363961); b = gg(b, c, d, a, x[i + 8], 20, 1163531501); a = gg(a, b, c, d, x[i + 13], 5, -1444681467); d = gg(d, a, b, c, x[i + 2], 9, -51403784); c = gg(c, d, a, b, x[i + 7], 14, 1735328473); b = gg(b, c, d, a, x[i + 12], 20, -1926607734); a = hh(a, b, c, d, x[i + 5], 4, -378558); d = hh(d, a, b, c, x[i + 8], 11, -2022574463); c = hh(c, d, a, b, x[i + 11], 16, 1839030562); b = hh(b, c, d, a, x[i + 14], 23, -35309556); a = hh(a, b, c, d, x[i + 1], 4, -1530992060); d = hh(d, a, b, c, x[i + 4], 11, 1272893353); c = hh(c, d, a, b, x[i + 7], 16, -155497632); b = hh(b, c, d, a, x[i + 10], 23, -1094730640); a = hh(a, b, c, d, x[i + 13], 4, 681279174); d = hh(d, a, b, c, x[i + 0], 11, -358537222); c = hh(c, d, a, b, x[i + 3], 16, -722521979); b = hh(b, c, d, a, x[i + 6], 23, 76029189); a = hh(a, b, c, d, x[i + 9], 4, -640364487); d = hh(d, a, b, c, x[i + 12], 11, -421815835); c = hh(c, d, a, b, x[i + 15], 16, 530742520); b = hh(b, c, d, a, x[i + 2], 23, -995338651); a = ii(a, b, c, d, x[i + 0], 6, -198630844); d = ii(d, a, b, c, x[i + 7], 10, 1126891415); c = ii(c, d, a, b, x[i + 14], 15, -1416354905); b = ii(b, c, d, a, x[i + 5], 21, -57434055); a = ii(a, b, c, d, x[i + 12], 6, 1700485571); d = ii(d, a, b, c, x[i + 3], 10, -1894986606); c = ii(c, d, a, b, x[i + 10], 15, -1051523); b = ii(b, c, d, a, x[i + 1], 21, -2054922799); a = ii(a, b, c, d, x[i + 8], 6, 1873313359); d = ii(d, a, b, c, x[i + 15], 10, -30611744); c = ii(c, d, a, b, x[i + 6], 15, -1560198380); b = ii(b, c, d, a, x[i + 13], 21, 1309151649); a = ii(a, b, c, d, x[i + 4], 6, -145523070); d = ii(d, a, b, c, x[i + 11], 10, -1120210379); c = ii(c, d, a, b, x[i + 2], 15, 718787259); b = ii(b, c, d, a, x[i + 9], 21, -343485551); a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); } return rhex(a) + rhex(b) + rhex(c) + rhex(d);}
  • 相关阅读:
    概述各种事务隔离级别发生的影响
    linux内核的经典书籍
    sso 登录,网页跳转的实现方式
    初探移动网站的架构和设计
    C# PrintDocument 打印
    .Text分页技术(1)分页的存储过程分析
    SQL2008使用CTE递归查询批量插入500万数据
    自己写的Web服务器
    OMCS 语音视频框架
    ESFramework4.x
  • 原文地址:https://www.cnblogs.com/myfirstboke/p/8512824.html
Copyright © 2020-2023  润新知