shawenguan 1 год назад
Родитель
Сommit
655990dc5a
1 измененных файлов с 103 добавлено и 18 удалено
  1. 103 18
      Scripts/hbcpre/hbcpreOrder.js

+ 103 - 18
Scripts/hbcpre/hbcpreOrder.js

@@ -98,7 +98,7 @@ async function tryFastOrder(){
         for(let i=0; i < itemList.length; i++){
             const iData = itemList[i];
             const id = iData.id;
-            const price = parseFloat(iData.pay_price || 9999.99);
+            const price = parseFloat(iData.pay_price || 99999.99);
             if(id == itemId){
                 if(price >= willPrice - priceFloatInterval &&  price <= willPrice + priceFloatInterval){
                     willBuyList.push(iData);
@@ -111,7 +111,7 @@ async function tryFastOrder(){
         for(let i=0; i < itemList.length; i++){
             const iData = itemList[i];
             const title = iData.title;
-            const price = parseFloat(iData.pay_price || 9999.99);
+            const price = parseFloat(iData.pay_price || 99999.99);
             if(title.indexOf(itemName) > -1){
                 if(price >= willPrice - priceFloatInterval &&  price <= willPrice + priceFloatInterval){
                     willBuyList.push(iData);
@@ -135,11 +135,30 @@ async function tryFastOrder(){
             if(buyRet.code == 1000){
                 // magicJS.notification.appendNotifyInfo(`🎉产品【${iData.title}】快捷下单成功`);
                 if(buyRet.data.url){
-                    // await openUrl(buyRet.data.url);
                     let queryData = magicJS.parseQueryStr(buyRet.data.url);
-                    let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.pay_price));
-                    if(paySuccFlag){
-                        magicJS.notification.post(scriptName, "", `🎉产品【${iData.title}】快捷下单成功,并支付成功!`);
+                    let newHeaders = {
+                        'Accept' : `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`,
+                        'Accept-Encoding' : `gzip, deflate, br`,
+                        'Cookie' : `aliyungf_tc=deb5a0bf09b2b2914456330284da78f4dd6625813acc42b992eb59069c342eed`,
+                        'Connection' : `keep-alive`,
+                        'Sec-Fetch-Mode' : `navigate`,
+                        'Host' : `cash.yeepay.com`,
+                        'User-Agent' : gUserAgent,
+                        'Sec-Fetch-Site' : `cross-site`,
+                        'Referer' : `https://luanshu.hbcpre.com/`,
+                        'Sec-Fetch-Dest' : `document`,
+                        'Accept-Language' : `zh-CN,zh-Hans;q=0.9`
+                    };
+                    let cashierInit0 = await openUrl(buyRet.data.url, newHeaders);
+                    if(cashierInit0){
+                        let cashierInit1 = await yeepayWapRequest(queryData.token, queryData.merchantNo, 'BDbiAXHCpS5A*VlA7eDbTg%3D%3D');
+                        let cashierInit2 = await yeepayNewWap(queryData.token, queryData.merchantNo);
+                        let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.pay_price)+priceFloatInterval);
+                        if(paySuccFlag){
+                            magicJS.notification.post(scriptName, "", `🎉产品【${iData.title}】快捷下单成功,并支付成功!`);
+                        } else {
+                            magicJS.notification.post(scriptName, "", `🎉产品【${iData.title}】快捷下单成功,需前往支付!`, buyRet.data.url);
+                        }
                     } else {
                         magicJS.notification.post(scriptName, "", `🎉产品【${iData.title}】快捷下单成功,需前往支付!`, buyRet.data.url);
                     }
@@ -153,6 +172,61 @@ async function tryFastOrder(){
     }
 }
 
+function shallowClone(obj) {
+    let clone = {};
+    for (let key in obj) {
+        if (obj.hasOwnProperty(key)) {
+            clone[key] = obj[key];
+        }
+    }
+    return clone;
+}
+
+async function yeepayWapRequest(token, merchantNo, key){
+    const url = `https://cash.yeepay.com/wap/request/${merchantNo}/${key}?token=${merchantNo}`;
+    const headers = gYeepayHeaders;
+    let options = {
+        url: `${url}`,
+        headers: headers,
+        body: ``
+    };
+    let result = await magicJS.http.get(options).then(response => {
+        try {
+            const body = response.body;
+            return body;
+        } catch (e) {
+            magicJS.logger.error(e);
+        }
+    }).catch(err => {
+        const msg = `打开网页异常\n${JSON.stringify(err)}`;
+        magicJS.logger.error(msg);
+    });
+    return result;
+}
+
+
+async function yeepayNewWap(token){
+    const url = `https://cash.yeepay.com/newwap/?token=${token}&onlyWalletAvailable=Y`;
+    const headers = gYeepayHeaders;
+    let options = {
+        url: `${url}`,
+        headers: headers,
+        body: ``
+    };
+    let result = await magicJS.http.get(options).then(response => {
+        try {
+            const body = response.body;
+            return body;
+        } catch (e) {
+            magicJS.logger.error(e);
+        }
+    }).catch(err => {
+        const msg = `打开网页异常\n${JSON.stringify(err)}`;
+        magicJS.logger.error(msg);
+    });
+    return result;
+}
+
 async function doYeepay(token, referPrice){
     magicJS.logger.info(`尝试使用易宝钱包余额进行自动支付`);
     let orderInfo = await yeepayOrderInfo(token);
@@ -170,16 +244,27 @@ async function doYeepay(token, referPrice){
             return false;
         }
     }
-    if(orderInfo.amount > bankData.accountBalance){
-        magicJS.notification.appendNotifyInfo(`易宝钱包账户余额:${bankData.accountBalance},不足支付${orderInfo.amount}`);
+    let paySelectIdx = 1;
+    if(paySelectIdx == 1){
+        if(orderInfo.amount > bankData.accountBalance){
+            magicJS.notification.appendNotifyInfo(`易宝钱包账户余额:${bankData.accountBalance},不足支付${orderInfo.amount}`);
+            return false;
+        }
+        let password = magicJS.data.read(HbcpreConstKey.walletPayPassword, 'AES4254386817B52B8BC242611552B8805D');
+        let payRet = await yeepayWalletPay(token, 'WALLET_BALANCE', '', password);
+        if(payRet && payRet.token){
+            let finalRet = await yeepayQueryResult(payRet.token);
+        }
+    } else if(paySelectIdx == 2){
+        let supportWalletBankList = bankData.supportWalletBankList;
+        let password = magicJS.data.read(HbcpreConstKey.walletPayPassword, 'AES4254386817B52B8BC242611552B8805D');
+        let payRet = await yeepayWalletPay(token, 'WALLET_BIND_DEBIT', supportWalletBankList[0].bindId, password);
+        if(payRet && payRet.token){
+            let finalRet = await yeepayQueryResult(payRet.token);
+        }
+    } else {
         return false;
     }
-    let password = magicJS.data.read(HbcpreConstKey.walletPayPassword, 'AES4254386817B52B8BC242611552B8805D');
-    let payRet = await yeepayWalletPay(token, '', password);
-    if(payRet && payRet.token){
-        let finalRet = await yeepayQueryResult(payRet.token);
-
-    }
     return true;
 }
 
@@ -293,13 +378,13 @@ async function yeepaySupportBankList(token){
 }
 
 
-async function yeepayWalletPay(token, bindId, tradePassword){
+async function yeepayWalletPay(token, payType, bindId, tradePassword){
     const headers = gYeepayHeaders;
     headers['Referer'] = `https://cash.yeepay.com/newwap/mobile-cashier/index.html`;
     const reqData = {
         token: token,
         bindId: bindId || '',
-        payType: 'WALLET_BALANCE',
+        payType: payType || 'WALLET_BALANCE',
         tradePassword: tradePassword,
     }
     let url = `https://cash.yeepay.com/newh5/ajax/request/wallet/pay`;
@@ -447,9 +532,8 @@ function decryptAES(wordStr, keyStr, ivStr) {
 }
 
 
-async function openUrl(url){
+async function openUrl(url, headers){
     const tokenInfo = magicJS.data.read(HbcpreConstKey.token, '');
-    const headers = gCommonHeaders;
     headers.Authorization = `Bearer ${tokenInfo}`;
     let options = {
         url: `${url}`,
@@ -459,6 +543,7 @@ async function openUrl(url){
     let result = await magicJS.http.get(options).then(response => {
         try {
             const body = response.body;
+            magicJS.logger.info(body);
             return body;
         } catch (e) {
             magicJS.logger.error(e);