ts-glitter 19.5.2 → 19.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lowcode/Entry.js
CHANGED
|
@@ -141,7 +141,7 @@ export class Entry {
|
|
|
141
141
|
}
|
|
142
142
|
window.renderClock = (_b = window.renderClock) !== null && _b !== void 0 ? _b : createClock();
|
|
143
143
|
console.log(`Entry-time:`, window.renderClock.stop());
|
|
144
|
-
glitter.share.editerVersion = 'V_19.5.
|
|
144
|
+
glitter.share.editerVersion = 'V_19.5.3';
|
|
145
145
|
glitter.share.start = new Date();
|
|
146
146
|
const vm = { appConfig: [] };
|
|
147
147
|
window.saasConfig = {
|
package/lowcode/Entry.ts
CHANGED
|
@@ -140,7 +140,7 @@ export class Entry {
|
|
|
140
140
|
}
|
|
141
141
|
(window as any).renderClock = (window as any).renderClock ?? createClock();
|
|
142
142
|
console.log(`Entry-time:`, (window as any).renderClock.stop());
|
|
143
|
-
glitter.share.editerVersion = 'V_19.5.
|
|
143
|
+
glitter.share.editerVersion = 'V_19.5.3';
|
|
144
144
|
glitter.share.start = new Date();
|
|
145
145
|
const vm = { appConfig: [] };
|
|
146
146
|
(window as any).saasConfig = {
|
package/package.json
CHANGED
|
@@ -27,7 +27,9 @@ class PayNowLogistics {
|
|
|
27
27
|
}))[0];
|
|
28
28
|
return {
|
|
29
29
|
pwd: deliveryConfig.value.pay_now.pwd,
|
|
30
|
-
link: deliveryConfig.value.pay_now.Action === 'test'
|
|
30
|
+
link: deliveryConfig.value.pay_now.Action === 'test'
|
|
31
|
+
? `https://testlogistic.paynow.com.tw`
|
|
32
|
+
: `https://logistic.paynow.com.tw`,
|
|
31
33
|
toggle: deliveryConfig.value.pay_now.toggle,
|
|
32
34
|
account: deliveryConfig.value.pay_now.account,
|
|
33
35
|
sender_name: deliveryConfig.value.pay_now.SenderName,
|
|
@@ -39,16 +41,21 @@ class PayNowLogistics {
|
|
|
39
41
|
async choseLogistics(type, return_url) {
|
|
40
42
|
const key = tool_js_1.default.randomString(6);
|
|
41
43
|
await redis_js_1.default.setValue('redirect_' + key, return_url);
|
|
42
|
-
const
|
|
43
|
-
const shipment_config = (await new user_js_1.User(this.app_name).getConfigV2({
|
|
44
|
+
const shipment_config = await new user_js_1.User(this.app_name).getConfigV2({
|
|
44
45
|
key: `shipment_config_${type}`,
|
|
45
|
-
user_id: 'manager'
|
|
46
|
-
})
|
|
46
|
+
user_id: 'manager',
|
|
47
|
+
});
|
|
48
|
+
let deliveryConfig = (await private_config_js_1.Private_config.getConfig({
|
|
49
|
+
appName: this.app_name,
|
|
50
|
+
key: 'glitter_delivery',
|
|
51
|
+
}))[0];
|
|
52
|
+
deliveryConfig = (deliveryConfig && deliveryConfig.value && deliveryConfig.value.pay_now) || {};
|
|
53
|
+
const code = await this.encrypt(deliveryConfig.pwd || process_1.default.env.logistic_apicode);
|
|
47
54
|
const cf = {
|
|
48
|
-
user_account: process_1.default.env.logistic_account,
|
|
55
|
+
user_account: deliveryConfig.account || process_1.default.env.logistic_account,
|
|
49
56
|
apicode: encodeURIComponent(code),
|
|
50
57
|
Logistic_serviceID: (() => {
|
|
51
|
-
const paynow_id = shipment_config_js_1.ShipmentConfig.list.find(
|
|
58
|
+
const paynow_id = shipment_config_js_1.ShipmentConfig.list.find(dd => {
|
|
52
59
|
return dd.value === type;
|
|
53
60
|
}).paynow_id;
|
|
54
61
|
if (shipment_config.bulk) {
|
|
@@ -72,20 +79,23 @@ class PayNowLogistics {
|
|
|
72
79
|
return paynow_id;
|
|
73
80
|
}
|
|
74
81
|
})(),
|
|
75
|
-
returnUrl: `${process_1.default.env.DOMAIN}/api-public/v1/ec/logistics/redirect?g-app=${this.app_name}&return=${key}
|
|
82
|
+
returnUrl: `${process_1.default.env.DOMAIN}/api-public/v1/ec/logistics/redirect?g-app=${this.app_name}&return=${key}`,
|
|
76
83
|
};
|
|
77
|
-
console.log(`Logistic_serviceID`, cf.Logistic_serviceID);
|
|
78
84
|
return html `
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
<form
|
|
86
|
+
action="https://logistic.paynow.com.tw/Member/Order/Choselogistics"
|
|
87
|
+
method="post"
|
|
88
|
+
enctype="application/x-www-form-urlencoded"
|
|
89
|
+
accept="text/html"
|
|
90
|
+
>
|
|
91
|
+
${Object.keys(cf)
|
|
92
|
+
.map(dd => {
|
|
83
93
|
return `<input type="hidden" name="${dd}" id="${dd}" value="${cf[dd]}"/>`;
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
})
|
|
95
|
+
.join('\n')}
|
|
96
|
+
<button type="submit" class="btn btn-secondary custom-btn beside-btn d-none" id="submit" hidden></button>
|
|
97
|
+
</form>
|
|
98
|
+
`;
|
|
89
99
|
}
|
|
90
100
|
async deleteLogOrder(orderNO, logisticNumber, totalAmount) {
|
|
91
101
|
const l_config = await this.config();
|
|
@@ -93,9 +103,9 @@ class PayNowLogistics {
|
|
|
93
103
|
const data = {
|
|
94
104
|
LogisticNumber: logisticNumber,
|
|
95
105
|
sno: 1,
|
|
96
|
-
PassCode: await this.sha1Encrypt([l_config.account, orderNO, totalAmount, l_config.pwd].join(''))
|
|
106
|
+
PassCode: await this.sha1Encrypt([l_config.account, orderNO, totalAmount, l_config.pwd].join('')),
|
|
97
107
|
};
|
|
98
|
-
Object.keys(data).map(
|
|
108
|
+
Object.keys(data).map(dd => {
|
|
99
109
|
data[dd] = `${data[dd]}`;
|
|
100
110
|
});
|
|
101
111
|
const config = {
|
|
@@ -103,22 +113,22 @@ class PayNowLogistics {
|
|
|
103
113
|
maxBodyLength: Infinity,
|
|
104
114
|
url: url,
|
|
105
115
|
headers: {
|
|
106
|
-
'Content-Type': 'application/JSON'
|
|
116
|
+
'Content-Type': 'application/JSON',
|
|
107
117
|
},
|
|
108
|
-
data: data
|
|
118
|
+
data: data,
|
|
109
119
|
};
|
|
110
120
|
const response = await (0, axios_1.default)(config);
|
|
111
121
|
console.log(`response_data==>`, response.data);
|
|
112
|
-
if (response.data && !
|
|
122
|
+
if (response.data && !response.data.includes('已繳費') && !response.data.includes('已寄件')) {
|
|
113
123
|
const order = (await database_js_1.default.query(`select *
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
from \`${this.app_name}\`.t_checkout
|
|
125
|
+
where cart_token = ?`, [orderNO]))[0];
|
|
116
126
|
delete order.orderData.user_info.shipment_number;
|
|
117
127
|
delete order.orderData.user_info.shipment_refer;
|
|
118
128
|
await new shopping_js_1.Shopping(this.app_name).putOrder({
|
|
119
129
|
cart_token: orderNO,
|
|
120
130
|
orderData: order.orderData,
|
|
121
|
-
status: undefined
|
|
131
|
+
status: undefined,
|
|
122
132
|
});
|
|
123
133
|
}
|
|
124
134
|
return response.data;
|
|
@@ -132,8 +142,8 @@ class PayNowLogistics {
|
|
|
132
142
|
maxBodyLength: Infinity,
|
|
133
143
|
url: url,
|
|
134
144
|
headers: {
|
|
135
|
-
'Content-Type': 'application/JSON'
|
|
136
|
-
}
|
|
145
|
+
'Content-Type': 'application/JSON',
|
|
146
|
+
},
|
|
137
147
|
};
|
|
138
148
|
const response = await (0, axios_1.default)(config);
|
|
139
149
|
return response.data;
|
|
@@ -141,19 +151,19 @@ class PayNowLogistics {
|
|
|
141
151
|
catch (e) {
|
|
142
152
|
console.log(e);
|
|
143
153
|
return {
|
|
144
|
-
status: e.status
|
|
154
|
+
status: e.status,
|
|
145
155
|
};
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
158
|
async printLogisticsOrder(carData) {
|
|
149
159
|
const l_config = await this.config();
|
|
150
160
|
const url = `${l_config.link}/api/Orderapi/Add_Order`;
|
|
151
|
-
const shipment_config =
|
|
161
|
+
const shipment_config = await new user_js_1.User(this.app_name).getConfigV2({
|
|
152
162
|
key: `shipment_config_${carData.user_info.shipment}`,
|
|
153
|
-
user_id: 'manager'
|
|
154
|
-
})
|
|
163
|
+
user_id: 'manager',
|
|
164
|
+
});
|
|
155
165
|
const service = (() => {
|
|
156
|
-
const paynow_id = shipment_config_js_1.ShipmentConfig.list.find(
|
|
166
|
+
const paynow_id = shipment_config_js_1.ShipmentConfig.list.find(dd => {
|
|
157
167
|
return dd.value === carData.user_info.shipment;
|
|
158
168
|
}).paynow_id;
|
|
159
169
|
if (shipment_config.bulk) {
|
|
@@ -184,7 +194,7 @@ class PayNowLogistics {
|
|
|
184
194
|
apicode: l_config.pwd,
|
|
185
195
|
Logistic_service: service,
|
|
186
196
|
OrderNo: carData.orderID,
|
|
187
|
-
DeliverMode:
|
|
197
|
+
DeliverMode: carData.customer_info.payment_select == 'cash_on_delivery' ? '01' : '02',
|
|
188
198
|
TotalAmount: carData.total,
|
|
189
199
|
receiver_storeid: carData.user_info.CVSStoreID,
|
|
190
200
|
receiver_storename: carData.user_info.CVSStoreName,
|
|
@@ -211,9 +221,9 @@ class PayNowLogistics {
|
|
|
211
221
|
return '0003';
|
|
212
222
|
}
|
|
213
223
|
})(),
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join(''))
|
|
224
|
+
Remark: '',
|
|
225
|
+
Description: '',
|
|
226
|
+
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join('')),
|
|
217
227
|
};
|
|
218
228
|
}
|
|
219
229
|
else {
|
|
@@ -222,7 +232,7 @@ class PayNowLogistics {
|
|
|
222
232
|
apicode: l_config.pwd,
|
|
223
233
|
Logistic_service: service,
|
|
224
234
|
OrderNo: carData.orderID,
|
|
225
|
-
DeliverMode:
|
|
235
|
+
DeliverMode: carData.customer_info.payment_select == 'cash_on_delivery' ? '01' : '02',
|
|
226
236
|
TotalAmount: carData.total,
|
|
227
237
|
receiver_storeid: carData.user_info.CVSStoreID,
|
|
228
238
|
receiver_storename: carData.user_info.CVSStoreName,
|
|
@@ -235,9 +245,9 @@ class PayNowLogistics {
|
|
|
235
245
|
Sender_Phone: l_config.sender_phone,
|
|
236
246
|
Sender_Email: l_config.sender_email,
|
|
237
247
|
Sender_address: l_config.sender_address,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join(''))
|
|
248
|
+
Remark: '',
|
|
249
|
+
Description: '',
|
|
250
|
+
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join('')),
|
|
241
251
|
};
|
|
242
252
|
}
|
|
243
253
|
})();
|
|
@@ -252,7 +262,7 @@ class PayNowLogistics {
|
|
|
252
262
|
else if (['02', '22', '04', '24'].includes(service)) {
|
|
253
263
|
data.Deadline = getDaysDifference(new Date(), new Date(carData.user_info.shipment_date));
|
|
254
264
|
}
|
|
255
|
-
Object.keys(data).map(
|
|
265
|
+
Object.keys(data).map(dd => {
|
|
256
266
|
data[dd] = `${data[dd]}`;
|
|
257
267
|
});
|
|
258
268
|
const config = {
|
|
@@ -260,11 +270,11 @@ class PayNowLogistics {
|
|
|
260
270
|
maxBodyLength: Infinity,
|
|
261
271
|
url: url,
|
|
262
272
|
headers: {
|
|
263
|
-
'Content-Type': 'application/JSON'
|
|
273
|
+
'Content-Type': 'application/JSON',
|
|
264
274
|
},
|
|
265
275
|
data: {
|
|
266
|
-
JsonOrder: await this.encrypt(JSON.stringify(data))
|
|
267
|
-
}
|
|
276
|
+
JsonOrder: await this.encrypt(JSON.stringify(data)),
|
|
277
|
+
},
|
|
268
278
|
};
|
|
269
279
|
const response = await (0, axios_1.default)(config);
|
|
270
280
|
console.log(`response_data==>`, response.data);
|
|
@@ -272,12 +282,12 @@ class PayNowLogistics {
|
|
|
272
282
|
}
|
|
273
283
|
async encrypt(content) {
|
|
274
284
|
try {
|
|
275
|
-
var ivbyte = crypto_js_1.default.enc.Utf8.parse(
|
|
285
|
+
var ivbyte = crypto_js_1.default.enc.Utf8.parse('12345678');
|
|
276
286
|
console.log(`ivbyte=>`, ivbyte);
|
|
277
|
-
const encrypted = crypto_js_1.default.TripleDES.encrypt(crypto_js_1.default.enc.Utf8.parse(content), crypto_js_1.default.enc.Utf8.parse(
|
|
287
|
+
const encrypted = crypto_js_1.default.TripleDES.encrypt(crypto_js_1.default.enc.Utf8.parse(content), crypto_js_1.default.enc.Utf8.parse('123456789070828783123456'), {
|
|
278
288
|
iv: ivbyte,
|
|
279
289
|
mode: crypto_js_1.default.mode.ECB,
|
|
280
|
-
padding: crypto_js_1.default.pad.ZeroPadding
|
|
290
|
+
padding: crypto_js_1.default.pad.ZeroPadding,
|
|
281
291
|
});
|
|
282
292
|
return encrypted.toString();
|
|
283
293
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paynow-logistics.js","sourceRoot":"","sources":["paynow-logistics.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAyC;AACzC,sEAA2C;AAC3C,sDAA8B;AAC9B,0DAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"paynow-logistics.js","sourceRoot":"","sources":["paynow-logistics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,312 +1,325 @@
|
|
|
1
|
-
import tool from
|
|
2
|
-
import redis from
|
|
3
|
-
import process from
|
|
4
|
-
import CryptoJS from
|
|
5
|
-
import {createHash} from
|
|
6
|
-
import {Private_config} from
|
|
7
|
-
import {ShipmentConfig} from
|
|
8
|
-
import axios from
|
|
9
|
-
import db from
|
|
1
|
+
import tool from '../../modules/tool.js';
|
|
2
|
+
import redis from '../../modules/redis.js';
|
|
3
|
+
import process from 'process';
|
|
4
|
+
import CryptoJS from 'crypto-js';
|
|
5
|
+
import { createHash } from 'crypto';
|
|
6
|
+
import { Private_config } from '../../services/private_config.js';
|
|
7
|
+
import { ShipmentConfig } from '../config/shipment-config.js';
|
|
8
|
+
import axios from 'axios';
|
|
9
|
+
import db from '../../modules/database.js';
|
|
10
10
|
import { CheckoutService } from './checkout.js';
|
|
11
11
|
import { Shopping } from './shopping.js';
|
|
12
12
|
import { User } from './user.js';
|
|
13
13
|
|
|
14
|
-
const html = String.raw
|
|
14
|
+
const html = String.raw;
|
|
15
15
|
|
|
16
16
|
export class PayNowLogistics {
|
|
17
|
-
|
|
17
|
+
app_name: string;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
constructor(app_name: string) {
|
|
20
|
+
this.app_name = app_name;
|
|
21
|
+
}
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
async config() {
|
|
24
|
+
const deliveryConfig = (
|
|
25
|
+
await Private_config.getConfig({
|
|
26
|
+
appName: this.app_name,
|
|
27
|
+
key: 'glitter_delivery',
|
|
28
|
+
})
|
|
29
|
+
)[0];
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
return {
|
|
32
|
+
pwd: deliveryConfig.value.pay_now.pwd,
|
|
33
|
+
link:
|
|
34
|
+
deliveryConfig.value.pay_now.Action === 'test'
|
|
35
|
+
? `https://testlogistic.paynow.com.tw`
|
|
36
|
+
: `https://logistic.paynow.com.tw`,
|
|
37
|
+
toggle: deliveryConfig.value.pay_now.toggle,
|
|
38
|
+
account: deliveryConfig.value.pay_now.account,
|
|
39
|
+
sender_name: deliveryConfig.value.pay_now.SenderName,
|
|
40
|
+
sender_phone: deliveryConfig.value.pay_now.SenderCellPhone,
|
|
41
|
+
sender_address: deliveryConfig.value.pay_now.SenderAddress,
|
|
42
|
+
sender_email: deliveryConfig.value.pay_now.SenderEmail,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
//超商選擇門市
|
|
47
|
+
async choseLogistics(type: string, return_url: string) {
|
|
48
|
+
const key = tool.randomString(6);
|
|
49
|
+
await redis.setValue('redirect_' + key, return_url);
|
|
50
|
+
const shipment_config = await new User(this.app_name).getConfigV2({
|
|
51
|
+
key: `shipment_config_${type}`,
|
|
52
|
+
user_id: 'manager',
|
|
53
|
+
});
|
|
54
|
+
let deliveryConfig = (
|
|
55
|
+
await Private_config.getConfig({
|
|
56
|
+
appName: this.app_name,
|
|
57
|
+
key: 'glitter_delivery',
|
|
58
|
+
})
|
|
59
|
+
)[0];
|
|
60
|
+
deliveryConfig = (deliveryConfig && deliveryConfig.value && deliveryConfig.value.pay_now) || {};
|
|
52
61
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
})(),
|
|
77
|
-
returnUrl: `${process.env.DOMAIN}/api-public/v1/ec/logistics/redirect?g-app=${this.app_name}&return=${key}`
|
|
62
|
+
const code = await this.encrypt(deliveryConfig.pwd || (process.env.logistic_apicode as string));
|
|
63
|
+
const cf: any = {
|
|
64
|
+
user_account: deliveryConfig.account || process.env.logistic_account,
|
|
65
|
+
apicode: encodeURIComponent(code as string),
|
|
66
|
+
Logistic_serviceID: (() => {
|
|
67
|
+
const paynow_id = ShipmentConfig.list.find(dd => {
|
|
68
|
+
return dd.value === type;
|
|
69
|
+
})!!.paynow_id;
|
|
70
|
+
if (shipment_config.bulk) {
|
|
71
|
+
if (paynow_id === '01') {
|
|
72
|
+
return '02';
|
|
73
|
+
} else if (paynow_id === '21') {
|
|
74
|
+
return '22';
|
|
75
|
+
} else if (paynow_id === '03') {
|
|
76
|
+
return '04';
|
|
77
|
+
} else if (paynow_id === '23') {
|
|
78
|
+
return '24';
|
|
79
|
+
} else {
|
|
80
|
+
return `-1`;
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
return paynow_id;
|
|
78
84
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
85
|
+
})(),
|
|
86
|
+
returnUrl: `${process.env.DOMAIN}/api-public/v1/ec/logistics/redirect?g-app=${this.app_name}&return=${key}`,
|
|
87
|
+
};
|
|
88
|
+
// console.log(`Logistic_serviceID`,cf.Logistic_serviceID)
|
|
89
|
+
return html`
|
|
90
|
+
<form
|
|
91
|
+
action="https://logistic.paynow.com.tw/Member/Order/Choselogistics"
|
|
92
|
+
method="post"
|
|
93
|
+
enctype="application/x-www-form-urlencoded"
|
|
94
|
+
accept="text/html"
|
|
95
|
+
>
|
|
96
|
+
${Object.keys(cf)
|
|
97
|
+
.map(dd => {
|
|
98
|
+
return `<input type="hidden" name="${dd}" id="${dd}" value="${cf[dd]}"/>`;
|
|
99
|
+
})
|
|
100
|
+
.join('\n')}
|
|
101
|
+
<button type="submit" class="btn btn-secondary custom-btn beside-btn d-none" id="submit" hidden></button>
|
|
102
|
+
</form>
|
|
103
|
+
`;
|
|
104
|
+
}
|
|
95
105
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
106
|
+
//取消托運單
|
|
107
|
+
async deleteLogOrder(orderNO: string, logisticNumber: string, totalAmount: string) {
|
|
108
|
+
const l_config = await this.config();
|
|
109
|
+
const url = `${l_config.link}/api/Orderapi/CancelOrder`;
|
|
110
|
+
const data: any = {
|
|
111
|
+
LogisticNumber: logisticNumber,
|
|
112
|
+
sno: 1,
|
|
113
|
+
PassCode: await this.sha1Encrypt([l_config.account, orderNO, totalAmount, l_config.pwd].join('')),
|
|
114
|
+
};
|
|
115
|
+
//轉成純字串
|
|
116
|
+
Object.keys(data).map(dd => {
|
|
117
|
+
data[dd] = `${data[dd]}`;
|
|
118
|
+
});
|
|
119
|
+
const config = {
|
|
120
|
+
method: 'delete',
|
|
121
|
+
maxBodyLength: Infinity,
|
|
122
|
+
url: url,
|
|
123
|
+
headers: {
|
|
124
|
+
'Content-Type': 'application/JSON',
|
|
125
|
+
},
|
|
126
|
+
data: data,
|
|
127
|
+
};
|
|
128
|
+
const response = await axios(config);
|
|
129
|
+
console.log(`response_data==>`, response.data);
|
|
130
|
+
if (response.data && !response.data.includes('已繳費') && !response.data.includes('已寄件')) {
|
|
131
|
+
const order = (
|
|
132
|
+
await db.query(
|
|
133
|
+
`select *
|
|
134
|
+
from \`${this.app_name}\`.t_checkout
|
|
135
|
+
where cart_token = ?`,
|
|
136
|
+
[orderNO]
|
|
137
|
+
)
|
|
138
|
+
)[0];
|
|
139
|
+
delete order.orderData.user_info.shipment_number;
|
|
140
|
+
delete order.orderData.user_info.shipment_refer;
|
|
141
|
+
await new Shopping(this.app_name).putOrder({
|
|
142
|
+
cart_token: orderNO,
|
|
143
|
+
orderData: order.orderData,
|
|
144
|
+
status: undefined,
|
|
145
|
+
});
|
|
131
146
|
}
|
|
147
|
+
return response.data;
|
|
148
|
+
}
|
|
132
149
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
150
|
+
//查詢物流單
|
|
151
|
+
async getOrderInfo(orderNO: string) {
|
|
152
|
+
try {
|
|
153
|
+
const l_config = await this.config();
|
|
154
|
+
const url = `${l_config.link}/api/Orderapi/Get_Order_Info_orderno?orderno=${orderNO}&user_account=${l_config.account}&sno=1`;
|
|
155
|
+
const config = {
|
|
156
|
+
method: 'get',
|
|
157
|
+
maxBodyLength: Infinity,
|
|
158
|
+
url: url,
|
|
159
|
+
headers: {
|
|
160
|
+
'Content-Type': 'application/JSON',
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
const response = await axios(config);
|
|
164
|
+
return response.data;
|
|
165
|
+
} catch (e: any) {
|
|
166
|
+
console.log(e);
|
|
167
|
+
return {
|
|
168
|
+
status: e.status,
|
|
169
|
+
};
|
|
154
170
|
}
|
|
171
|
+
}
|
|
155
172
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return `-1`
|
|
180
|
-
}
|
|
181
|
-
}else{
|
|
182
|
-
return paynow_id
|
|
183
|
-
}
|
|
184
|
-
})()
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const data: any = await (async () => {
|
|
189
|
-
if (service === '36') {
|
|
190
|
-
return {
|
|
191
|
-
user_account: l_config.account,
|
|
192
|
-
apicode: l_config.pwd,
|
|
193
|
-
Logistic_service: service,
|
|
194
|
-
OrderNo: carData.orderID,
|
|
195
|
-
DeliverMode: (carData.customer_info.payment_select == 'cash_on_delivery') ? '01' : '02',
|
|
196
|
-
TotalAmount: carData.total,
|
|
197
|
-
receiver_storeid: carData.user_info.CVSStoreID,
|
|
198
|
-
receiver_storename: carData.user_info.CVSStoreName,
|
|
199
|
-
return_storeid: '',
|
|
200
|
-
Receiver_Name: carData.user_info.name,
|
|
201
|
-
Receiver_Phone: carData.user_info.phone,
|
|
202
|
-
Receiver_Email: carData.user_info.email,
|
|
203
|
-
Receiver_address: carData.user_info.address,
|
|
204
|
-
Sender_Name: l_config.sender_name,
|
|
205
|
-
Sender_Phone: l_config.sender_phone,
|
|
206
|
-
Sender_Email: l_config.sender_email,
|
|
207
|
-
Sender_address: l_config.sender_address,
|
|
208
|
-
Length:carData.user_info.length,
|
|
209
|
-
Wide:carData.user_info.wide,
|
|
210
|
-
High:carData.user_info.high,
|
|
211
|
-
Weight:carData.user_info.weight,
|
|
212
|
-
DeliveryType:(()=>{
|
|
213
|
-
switch (carData.user_info.shipment){
|
|
214
|
-
case 'black_cat':
|
|
215
|
-
return '0001'
|
|
216
|
-
case 'black_cat_ice':
|
|
217
|
-
return '0002';
|
|
218
|
-
case 'black_cat_freezing':
|
|
219
|
-
return '0003';
|
|
220
|
-
}
|
|
221
|
-
})(),
|
|
222
|
-
"Remark": "",
|
|
223
|
-
"Description": "",
|
|
224
|
-
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join(''))
|
|
225
|
-
}
|
|
226
|
-
} else {
|
|
227
|
-
return {
|
|
228
|
-
user_account: l_config.account,
|
|
229
|
-
apicode: l_config.pwd,
|
|
230
|
-
Logistic_service: service,
|
|
231
|
-
OrderNo: carData.orderID,
|
|
232
|
-
DeliverMode: (carData.customer_info.payment_select == 'cash_on_delivery') ? '01' : '02',
|
|
233
|
-
TotalAmount: carData.total,
|
|
234
|
-
receiver_storeid: carData.user_info.CVSStoreID,
|
|
235
|
-
receiver_storename: carData.user_info.CVSStoreName,
|
|
236
|
-
return_storeid: '',
|
|
237
|
-
Receiver_Name: carData.user_info.name,
|
|
238
|
-
Receiver_Phone: carData.user_info.phone,
|
|
239
|
-
Receiver_Email: carData.user_info.email,
|
|
240
|
-
Receiver_address: carData.user_info.CVSAddress,
|
|
241
|
-
Sender_Name: l_config.sender_name,
|
|
242
|
-
Sender_Phone: l_config.sender_phone,
|
|
243
|
-
Sender_Email: l_config.sender_email,
|
|
244
|
-
Sender_address: l_config.sender_address,
|
|
245
|
-
"Remark": "",
|
|
246
|
-
"Description": "",
|
|
247
|
-
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join(''))
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
})();
|
|
251
|
-
function getDaysDifference(date1:Date, date2:Date) {
|
|
252
|
-
// 獲取毫秒時間戳,使用 Math.abs() 確保不受前後順序影響
|
|
253
|
-
const timeDifference = Math.abs(date2.getTime() - date1.getTime());
|
|
254
|
-
// 將毫秒轉換為天數 (1 天 = 1000 毫秒 * 60 秒 * 60 分鐘 * 24 小時)
|
|
255
|
-
const daysDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
|
|
256
|
-
return daysDifference;
|
|
173
|
+
//列印托運單
|
|
174
|
+
async printLogisticsOrder(carData: any) {
|
|
175
|
+
const l_config = await this.config();
|
|
176
|
+
const url = `${l_config.link}/api/Orderapi/Add_Order`;
|
|
177
|
+
const shipment_config = await new User(this.app_name).getConfigV2({
|
|
178
|
+
key: `shipment_config_${carData.user_info.shipment}`,
|
|
179
|
+
user_id: 'manager',
|
|
180
|
+
});
|
|
181
|
+
const service = (() => {
|
|
182
|
+
const paynow_id = ShipmentConfig.list.find(dd => {
|
|
183
|
+
return dd.value === carData.user_info.shipment;
|
|
184
|
+
})!!.paynow_id;
|
|
185
|
+
if (shipment_config.bulk) {
|
|
186
|
+
if (paynow_id === '01') {
|
|
187
|
+
return '02';
|
|
188
|
+
} else if (paynow_id === '21') {
|
|
189
|
+
return '22';
|
|
190
|
+
} else if (paynow_id === '03') {
|
|
191
|
+
return '04';
|
|
192
|
+
} else if (paynow_id === '23') {
|
|
193
|
+
return '24';
|
|
194
|
+
} else {
|
|
195
|
+
return `-1`;
|
|
257
196
|
}
|
|
197
|
+
} else {
|
|
198
|
+
return paynow_id;
|
|
199
|
+
}
|
|
200
|
+
})();
|
|
258
201
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
202
|
+
const data: any = await (async () => {
|
|
203
|
+
if (service === '36') {
|
|
204
|
+
return {
|
|
205
|
+
user_account: l_config.account,
|
|
206
|
+
apicode: l_config.pwd,
|
|
207
|
+
Logistic_service: service,
|
|
208
|
+
OrderNo: carData.orderID,
|
|
209
|
+
DeliverMode: carData.customer_info.payment_select == 'cash_on_delivery' ? '01' : '02',
|
|
210
|
+
TotalAmount: carData.total,
|
|
211
|
+
receiver_storeid: carData.user_info.CVSStoreID,
|
|
212
|
+
receiver_storename: carData.user_info.CVSStoreName,
|
|
213
|
+
return_storeid: '',
|
|
214
|
+
Receiver_Name: carData.user_info.name,
|
|
215
|
+
Receiver_Phone: carData.user_info.phone,
|
|
216
|
+
Receiver_Email: carData.user_info.email,
|
|
217
|
+
Receiver_address: carData.user_info.address,
|
|
218
|
+
Sender_Name: l_config.sender_name,
|
|
219
|
+
Sender_Phone: l_config.sender_phone,
|
|
220
|
+
Sender_Email: l_config.sender_email,
|
|
221
|
+
Sender_address: l_config.sender_address,
|
|
222
|
+
Length: carData.user_info.length,
|
|
223
|
+
Wide: carData.user_info.wide,
|
|
224
|
+
High: carData.user_info.high,
|
|
225
|
+
Weight: carData.user_info.weight,
|
|
226
|
+
DeliveryType: (() => {
|
|
227
|
+
switch (carData.user_info.shipment) {
|
|
228
|
+
case 'black_cat':
|
|
229
|
+
return '0001';
|
|
230
|
+
case 'black_cat_ice':
|
|
231
|
+
return '0002';
|
|
232
|
+
case 'black_cat_freezing':
|
|
233
|
+
return '0003';
|
|
279
234
|
}
|
|
235
|
+
})(),
|
|
236
|
+
Remark: '',
|
|
237
|
+
Description: '',
|
|
238
|
+
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join('')),
|
|
280
239
|
};
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
240
|
+
} else {
|
|
241
|
+
return {
|
|
242
|
+
user_account: l_config.account,
|
|
243
|
+
apicode: l_config.pwd,
|
|
244
|
+
Logistic_service: service,
|
|
245
|
+
OrderNo: carData.orderID,
|
|
246
|
+
DeliverMode: carData.customer_info.payment_select == 'cash_on_delivery' ? '01' : '02',
|
|
247
|
+
TotalAmount: carData.total,
|
|
248
|
+
receiver_storeid: carData.user_info.CVSStoreID,
|
|
249
|
+
receiver_storename: carData.user_info.CVSStoreName,
|
|
250
|
+
return_storeid: '',
|
|
251
|
+
Receiver_Name: carData.user_info.name,
|
|
252
|
+
Receiver_Phone: carData.user_info.phone,
|
|
253
|
+
Receiver_Email: carData.user_info.email,
|
|
254
|
+
Receiver_address: carData.user_info.CVSAddress,
|
|
255
|
+
Sender_Name: l_config.sender_name,
|
|
256
|
+
Sender_Phone: l_config.sender_phone,
|
|
257
|
+
Sender_Email: l_config.sender_email,
|
|
258
|
+
Sender_address: l_config.sender_address,
|
|
259
|
+
Remark: '',
|
|
260
|
+
Description: '',
|
|
261
|
+
PassCode: await this.sha1Encrypt([l_config.account, carData.orderID, carData.total, l_config.pwd].join('')),
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
})();
|
|
303
265
|
|
|
266
|
+
function getDaysDifference(date1: Date, date2: Date) {
|
|
267
|
+
// 獲取毫秒時間戳,使用 Math.abs() 確保不受前後順序影響
|
|
268
|
+
const timeDifference = Math.abs(date2.getTime() - date1.getTime());
|
|
269
|
+
// 將毫秒轉換為天數 (1 天 = 1000 毫秒 * 60 秒 * 60 分鐘 * 24 小時)
|
|
270
|
+
const daysDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
|
|
271
|
+
return daysDifference;
|
|
304
272
|
}
|
|
305
273
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
274
|
+
if (service === '36') {
|
|
275
|
+
data.Deadline = '0';
|
|
276
|
+
} else if (['02', '22', '04', '24'].includes(service as string)) {
|
|
277
|
+
data.Deadline = getDaysDifference(new Date(), new Date(carData.user_info.shipment_date));
|
|
309
278
|
}
|
|
279
|
+
//轉成純字串
|
|
280
|
+
Object.keys(data).map(dd => {
|
|
281
|
+
data[dd] = `${data[dd]}`;
|
|
282
|
+
});
|
|
283
|
+
const config = {
|
|
284
|
+
method: 'post',
|
|
285
|
+
maxBodyLength: Infinity,
|
|
286
|
+
url: url,
|
|
287
|
+
headers: {
|
|
288
|
+
'Content-Type': 'application/JSON',
|
|
289
|
+
},
|
|
290
|
+
data: {
|
|
291
|
+
JsonOrder: await this.encrypt(JSON.stringify(data)),
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
const response = await axios(config);
|
|
295
|
+
console.log(`response_data==>`, response.data);
|
|
296
|
+
return response.data;
|
|
297
|
+
}
|
|
310
298
|
|
|
299
|
+
async encrypt(content: string) {
|
|
300
|
+
try {
|
|
301
|
+
var ivbyte = CryptoJS.enc.Utf8.parse('12345678');
|
|
302
|
+
console.log(`ivbyte=>`, ivbyte);
|
|
303
|
+
const encrypted = CryptoJS.TripleDES.encrypt(
|
|
304
|
+
CryptoJS.enc.Utf8.parse(content),
|
|
305
|
+
CryptoJS.enc.Utf8.parse('123456789070828783123456'),
|
|
306
|
+
{
|
|
307
|
+
iv: ivbyte, // 当 mode 为 CBC 时,偏移量必传
|
|
308
|
+
mode: CryptoJS.mode.ECB,
|
|
309
|
+
padding: CryptoJS.pad.ZeroPadding,
|
|
310
|
+
}
|
|
311
|
+
);
|
|
312
|
+
// mBcTYds3zPQ=
|
|
313
|
+
// tB5BKj5AMGw=
|
|
314
|
+
// W1BhPWN3FAI= 這是對的
|
|
315
|
+
return encrypted.toString();
|
|
316
|
+
} catch (e) {
|
|
317
|
+
console.error(e);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
311
320
|
|
|
312
|
-
|
|
321
|
+
async sha1Encrypt(data: string) {
|
|
322
|
+
const hash = createHash('sha1').update(data, 'utf8').digest('hex');
|
|
323
|
+
return hash.toUpperCase();
|
|
324
|
+
}
|
|
325
|
+
}
|