|
|
@@ -29,6 +29,7 @@ const HbcpreConstKey = {
|
|
|
homeSeriesId: 'HbcpreHomeSeriesId',
|
|
|
homeSeriesName: 'HbcpreHomeSeriesName',
|
|
|
homeSeriesLimitBuy: 'HbcpreHomeSeriesLimitBuy',
|
|
|
+ homeSeriesRapidFrequencyCount: 'HbcpreHomeSeriesRapidFrequencyCount',
|
|
|
};
|
|
|
|
|
|
const gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1`;
|
|
|
@@ -104,6 +105,15 @@ function isHomeSeriesDataGrabEnabled() {
|
|
|
return JSON.parse(flag);
|
|
|
}
|
|
|
|
|
|
+function getRapidFrequencyCount(){
|
|
|
+ let num = magicJS.data.read(HbcpreConstKey.homeSeriesRapidFrequencyCount, 2);
|
|
|
+ return Number(num);
|
|
|
+}
|
|
|
+
|
|
|
+function checkAllowAutoPay(seriesInfo, willPrice){
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
async function tryGrabNew() {
|
|
|
let itemId = magicJS.data.read(HbcpreConstKey.homeSeriesId, null);
|
|
|
let itemName = magicJS.data.read(HbcpreConstKey.homeSeriesName, null);
|
|
|
@@ -143,7 +153,25 @@ async function tryGrabNew() {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- let buyRet = await primOrder(iData.seriesId, limitBuyNum || 1);
|
|
|
+ let buyRet = null;
|
|
|
+ let fCount = getRapidFrequencyCount();
|
|
|
+ let interval = 1000/fCount;
|
|
|
+ let activityData = null;
|
|
|
+ let lastTime = Date.now() - interval2;
|
|
|
+ let passTime = 0;
|
|
|
+ for(let i = 0; i < fCount; i++){
|
|
|
+ passTime = Date.now() - lastTime;
|
|
|
+ magicJS.logger.info(`PassTime:${passTime}ms[${i}]`);
|
|
|
+ if(passTime < interval){
|
|
|
+ await magicJS.utils.sleep(interval-passTime);
|
|
|
+ }
|
|
|
+ lastTime = Date.now();
|
|
|
+ buyRet = await primOrder(iData.seriesId, limitBuyNum || 1);
|
|
|
+ if (buyRet && buyRet.code == 200) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (buyRet) {
|
|
|
if (buyRet.code == 200) {
|
|
|
// magicJS.notification.appendNotifyInfo(`🎉产品【${iData.seriesName}】快捷下单成功`);
|
|
|
@@ -156,13 +184,22 @@ async function tryGrabNew() {
|
|
|
}
|
|
|
if (payRet) {
|
|
|
let paymentInfo = encodeURI(payRet.paymentInfo);
|
|
|
- let bOpenRet = await browserOpenUrl();
|
|
|
- let queryData = magicJS.parseQueryStr(paymentInfo);
|
|
|
- let cashierInit1 = await yeepayWapRequest(queryData.token, queryData.merchantNo, 'BDbiAXHCpS5A*VlA7eDbTg%3D%3D');
|
|
|
- let cashierInit2 = await yeepayNewWap(queryData.token);
|
|
|
- let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.amount || iData.price) + priceFloatInterval);
|
|
|
- if (paySuccFlag) {
|
|
|
- magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,并支付成功!`);
|
|
|
+ if(checkAllowAutoPay(iData, willPrice)){
|
|
|
+ let browserRet = await openUrlByRemoteBrowser(paymentInfo);
|
|
|
+ // let queryData = magicJS.parseQueryStr(paymentInfo);
|
|
|
+ // let cashierInit1 = await yeepayWapRequest(queryData.token, queryData.merchantNo, 'BDbiAXHCpS5A*VlA7eDbTg%3D%3D');
|
|
|
+ // let cashierInit2 = await yeepayNewWap(queryData.token);
|
|
|
+ if(browserRet && browserRet.code == 200){
|
|
|
+ let queryData = magicJS.parseQueryStr(browserRet.data.url);
|
|
|
+ let paySuccFlag = await doYeepay(queryData.token, parseFloat(iData.pay_price) + priceFloatInterval);
|
|
|
+ if (paySuccFlag) {
|
|
|
+ magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,并支付成功!`);
|
|
|
+ } else {
|
|
|
+ magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
|
|
|
+ }
|
|
|
} else {
|
|
|
magicJS.notification.post(scriptName, "", `🎉产品【${iData.seriesName}】快捷下单成功,需前往支付!`, paymentInfo);
|
|
|
}
|
|
|
@@ -347,7 +384,50 @@ async function doOrderPay(payType, orderId) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
-async function browserOpenUrl(url, headers) {
|
|
|
+
|
|
|
+async function openUrlByRemoteBrowser(url) {
|
|
|
+ let headers = {
|
|
|
+ 'Sec-Fetch-Dest': `empty`,
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
+ 'Content-Type': `application/json;charset=UTF-8`,
|
|
|
+ 'Sec-Fetch-Site': `same-origin`,
|
|
|
+ 'Origin': `https://cash.yeepay.com`,
|
|
|
+ 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1`,
|
|
|
+ 'Sec-Fetch-Mode': `cors`,
|
|
|
+ 'Cookie': `aliyungf_tc=deb5a0bf09b2b2914456330284da78f4dd6625813acc42b992eb59069c342eed`,
|
|
|
+ 'Host': `cash.yeepay.com`,
|
|
|
+ 'Referer': `https://cash.yeepay.com/newwap/mobile-cashier/index.html`,
|
|
|
+ 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
|
|
|
+ 'Accept': `application/json, text/plain, */*`
|
|
|
+ };
|
|
|
+ let data = {
|
|
|
+ url: url,
|
|
|
+ headers: headers,
|
|
|
+ };
|
|
|
+ let proxyUrl = magicJS.data.read(HbcpreConstKey.browserProxyUrl, 'http://127.0.0.1:5000/proxy');
|
|
|
+ let options = {
|
|
|
+ url: proxyUrl,
|
|
|
+ headers: headers,
|
|
|
+ body: JSON.stringify(data),
|
|
|
+ };
|
|
|
+ let result = await magicJS.http.post(options).then(response => {
|
|
|
+ try {
|
|
|
+ magicJS.logger.info(JSON.stringify(response));
|
|
|
+ const body = response.body;
|
|
|
+ magicJS.logger.info(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 getHtmlContent(url, headers) {
|
|
|
let options = {
|
|
|
url: `${url}`,
|
|
|
headers: headers,
|