|
|
@@ -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);
|