ts-glitter 14.2.5 → 14.2.7
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/hwq81jngms.json +1 -0
- package/lhygmbqjwr.json +1 -0
- package/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/cms-plugin/filter-options.js +1 -3
- package/lowcode/cms-plugin/filter-options.ts +1 -3
- package/lowcode/cms-plugin/module/product-excel.js +537 -0
- package/lowcode/cms-plugin/module/product-excel.ts +652 -0
- package/lowcode/cms-plugin/shopping-allowance-manager.js +12 -5
- package/lowcode/cms-plugin/shopping-allowance-manager.ts +12 -5
- package/lowcode/cms-plugin/shopping-finance-setting.js +0 -7
- package/lowcode/cms-plugin/shopping-finance-setting.ts +8 -8
- package/lowcode/cms-plugin/shopping-invoice-manager.js +5 -1
- package/lowcode/cms-plugin/shopping-invoice-manager.ts +5 -2
- package/lowcode/cms-plugin/shopping-order-manager.js +8 -0
- package/lowcode/cms-plugin/shopping-order-manager.ts +8 -0
- package/lowcode/cms-plugin/shopping-product-setting.js +61 -638
- package/lowcode/cms-plugin/shopping-product-setting.ts +67 -790
- package/lowcode/jspage/main.ts +0 -1
- package/lowcode/public-components/checkout/index.js +62 -21
- package/lowcode/public-components/checkout/index.ts +64 -21
- package/lowcode/public-components/checkout/index_.js +1724 -412
- package/lowcode/public-components/checkout/index_.ts +2032 -704
- package/lowcode/public-components/product/pd-class.js +51 -1
- package/lowcode/public-components/product/pd-class.ts +55 -2
- package/lowcode/public-components/product/product-detail.js +1 -1
- package/lowcode/public-components/product/product-detail.ts +7 -3
- package/lowcode/public-components/product/product-list.js +55 -0
- package/lowcode/public-components/product/product-list.ts +62 -1
- package/lowcode/public-components/public/ad.js +14 -0
- package/lowcode/public-components/public/ad.ts +15 -0
- package/nmj1s3fc0x.json +1 -0
- package/package.json +7 -4
- package/src/api-public/controllers/shop.js +16 -0
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +27 -3
- package/src/api-public/services/EcInvoice.js +18 -12
- package/src/api-public/services/EcInvoice.js.map +1 -1
- package/src/api-public/services/EcInvoice.ts +19 -14
- package/src/api-public/services/financial-service.d.ts +49 -1
- package/src/api-public/services/financial-service.js +226 -1
- package/src/api-public/services/financial-service.js.map +1 -1
- package/src/api-public/services/financial-service.ts +282 -1
- package/src/api-public/services/shopping.d.ts +2 -2
- package/src/api-public/services/shopping.js +9 -9
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +28 -28
- package/src/helper/glitter-util.d.ts +0 -1
- package/src/helper/glitter-util.js.map +1 -5
- package/src/index.js +108 -89
- package/src/index.js.map +1 -1
- package/src/index.ts +424 -397
- package/y7x8oegu36.json +1 -0
- package/zgp27fxdah.json +1 -0
|
@@ -3,10 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EcPay = exports.EzPay = void 0;
|
|
6
|
+
exports.LinePay = exports.PayPal = exports.EcPay = exports.EzPay = void 0;
|
|
7
7
|
const crypto_1 = __importDefault(require("crypto"));
|
|
8
8
|
const database_js_1 = __importDefault(require("../../modules/database.js"));
|
|
9
9
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const redis_1 = __importDefault(require("../../modules/redis"));
|
|
10
12
|
const html = String.raw;
|
|
11
13
|
class FinancialService {
|
|
12
14
|
constructor(appName, keyData) {
|
|
@@ -369,4 +371,227 @@ class EcPay {
|
|
|
369
371
|
}
|
|
370
372
|
}
|
|
371
373
|
exports.EcPay = EcPay;
|
|
374
|
+
class PayPal {
|
|
375
|
+
constructor(appName, keyData) {
|
|
376
|
+
this.keyData = keyData;
|
|
377
|
+
this.appName = appName;
|
|
378
|
+
this.PAYPAL_CLIENT_ID = "AfxmQilUtZiATwO5vEZH_RPRJWBTiEGhUm27Wu5LyElZ7_OlXGwkc2vDlpUPsJHjoA8rVARy7i8A6VbY";
|
|
379
|
+
this.PAYPAL_SECRET = "EKSx6S6nnjPgrjcEPLFytJGqwakuZ5vUcTv-kF-eKkprd7Ci22P7UV93-85b0Xupa9ggULebx9Rvsx7e";
|
|
380
|
+
this.PAYPAL_BASE_URL = "https://api-m.sandbox.paypal.com";
|
|
381
|
+
}
|
|
382
|
+
async getAccessToken() {
|
|
383
|
+
var _a;
|
|
384
|
+
try {
|
|
385
|
+
const tokenUrl = `${this.PAYPAL_BASE_URL}/v1/oauth2/token`;
|
|
386
|
+
const config = {
|
|
387
|
+
method: "POST",
|
|
388
|
+
url: tokenUrl,
|
|
389
|
+
headers: {
|
|
390
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
391
|
+
},
|
|
392
|
+
auth: {
|
|
393
|
+
username: this.PAYPAL_CLIENT_ID,
|
|
394
|
+
password: this.PAYPAL_SECRET,
|
|
395
|
+
},
|
|
396
|
+
data: new URLSearchParams({
|
|
397
|
+
grant_type: "client_credentials",
|
|
398
|
+
}).toString(),
|
|
399
|
+
};
|
|
400
|
+
const response = await axios_1.default.request(config);
|
|
401
|
+
return response.data.access_token;
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
console.error("Error fetching access token:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
|
405
|
+
throw new Error("Failed to retrieve PayPal access token.");
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
async checkout(orderData) {
|
|
409
|
+
var _a;
|
|
410
|
+
const accessToken = await this.getAccessToken();
|
|
411
|
+
const order = await this.createOrderPage(accessToken, orderData);
|
|
412
|
+
return {
|
|
413
|
+
orderId: order.id,
|
|
414
|
+
approveLink: (_a = order.links.find((link) => link.rel === "approve")) === null || _a === void 0 ? void 0 : _a.href,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
async createOrderPage(accessToken, orderData) {
|
|
418
|
+
var _a;
|
|
419
|
+
try {
|
|
420
|
+
const createOrderUrl = `${this.PAYPAL_BASE_URL}/v2/checkout/orders`;
|
|
421
|
+
let itemPrice = 0;
|
|
422
|
+
orderData.lineItems.forEach((item) => {
|
|
423
|
+
itemPrice += item.sale_price;
|
|
424
|
+
});
|
|
425
|
+
const config = {
|
|
426
|
+
method: "POST",
|
|
427
|
+
url: createOrderUrl,
|
|
428
|
+
headers: {
|
|
429
|
+
"Content-Type": "application/json",
|
|
430
|
+
Authorization: `Bearer ${accessToken}`,
|
|
431
|
+
},
|
|
432
|
+
data: {
|
|
433
|
+
intent: "CAPTURE",
|
|
434
|
+
purchase_units: [
|
|
435
|
+
{
|
|
436
|
+
reference_id: orderData.orderID,
|
|
437
|
+
amount: {
|
|
438
|
+
currency_code: "TWD",
|
|
439
|
+
value: itemPrice,
|
|
440
|
+
breakdown: {
|
|
441
|
+
item_total: {
|
|
442
|
+
currency_code: "TWD",
|
|
443
|
+
value: itemPrice,
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
items: orderData.lineItems.map((item) => {
|
|
448
|
+
var _a;
|
|
449
|
+
return {
|
|
450
|
+
name: item.title,
|
|
451
|
+
unit_amount: {
|
|
452
|
+
currency_code: "TWD",
|
|
453
|
+
value: item.sale_price,
|
|
454
|
+
},
|
|
455
|
+
quantity: item.count,
|
|
456
|
+
description: (_a = item.spec.join(',')) !== null && _a !== void 0 ? _a : ""
|
|
457
|
+
};
|
|
458
|
+
}),
|
|
459
|
+
},
|
|
460
|
+
],
|
|
461
|
+
application_context: {
|
|
462
|
+
brand_name: this.appName,
|
|
463
|
+
landing_page: "NO_PREFERENCE",
|
|
464
|
+
user_action: "PAY_NOW",
|
|
465
|
+
return_url: `${this.keyData.ReturnURL}&payment=true&appName=${this.appName}&orderID=${orderData.orderID}`,
|
|
466
|
+
cancel_url: `${this.keyData.ReturnURL}&payment=false`,
|
|
467
|
+
},
|
|
468
|
+
},
|
|
469
|
+
};
|
|
470
|
+
const response = await axios_1.default.request(config);
|
|
471
|
+
await database_js_1.default.execute(`INSERT INTO \`${this.appName}\`.t_checkout (cart_token, status, email, orderData) VALUES (?, ?, ?, ?)
|
|
472
|
+
`, [orderData.orderID, 0, orderData.user_email, orderData]);
|
|
473
|
+
await redis_1.default.setValue('paypal' + orderData.orderID, response.data.id);
|
|
474
|
+
return response.data;
|
|
475
|
+
}
|
|
476
|
+
catch (error) {
|
|
477
|
+
console.error("Error creating order:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
|
478
|
+
throw new Error("Failed to create PayPal order.");
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
async getOrderDetails(orderId, accessToken) {
|
|
482
|
+
var _a;
|
|
483
|
+
const url = `/v2/checkout/orders/${orderId}`;
|
|
484
|
+
const axiosInstance = axios_1.default.create({
|
|
485
|
+
baseURL: this.PAYPAL_BASE_URL,
|
|
486
|
+
headers: {
|
|
487
|
+
"Content-Type": "application/json",
|
|
488
|
+
},
|
|
489
|
+
});
|
|
490
|
+
const config = {
|
|
491
|
+
method: "GET",
|
|
492
|
+
url: url,
|
|
493
|
+
headers: {
|
|
494
|
+
Authorization: `Bearer ${accessToken}`,
|
|
495
|
+
},
|
|
496
|
+
};
|
|
497
|
+
try {
|
|
498
|
+
const response = await axiosInstance.request(config);
|
|
499
|
+
const order = response.data;
|
|
500
|
+
if (order.status === "APPROVED") {
|
|
501
|
+
return order;
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
throw new Error(`Order status is not APPROVED. Current status: ${order.status}`);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
catch (error) {
|
|
508
|
+
console.error("Error fetching order details:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
|
509
|
+
throw error;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
async capturePayment(orderId, accessToken) {
|
|
513
|
+
var _a;
|
|
514
|
+
const url = `/v2/checkout/orders/${orderId}/capture`;
|
|
515
|
+
const axiosInstance = axios_1.default.create({
|
|
516
|
+
baseURL: this.PAYPAL_BASE_URL,
|
|
517
|
+
headers: {
|
|
518
|
+
"Content-Type": "application/json",
|
|
519
|
+
},
|
|
520
|
+
});
|
|
521
|
+
const config = {
|
|
522
|
+
method: "POST",
|
|
523
|
+
url: url,
|
|
524
|
+
headers: {
|
|
525
|
+
Authorization: `Bearer ${accessToken}`,
|
|
526
|
+
},
|
|
527
|
+
};
|
|
528
|
+
try {
|
|
529
|
+
const response = await axiosInstance.request(config);
|
|
530
|
+
return response.data;
|
|
531
|
+
}
|
|
532
|
+
catch (error) {
|
|
533
|
+
console.error("Error capturing payment:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
|
|
534
|
+
throw error;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
async confirmAndCaptureOrder(orderId) {
|
|
538
|
+
try {
|
|
539
|
+
const accessToken = await this.getAccessToken();
|
|
540
|
+
const order = await this.getOrderDetails(orderId, accessToken);
|
|
541
|
+
const captureResult = await this.capturePayment(order.id, accessToken);
|
|
542
|
+
console.log("Payment process completed successfully.");
|
|
543
|
+
return captureResult;
|
|
544
|
+
}
|
|
545
|
+
catch (error) {
|
|
546
|
+
console.error("Error during order confirmation or payment capture:", error.message);
|
|
547
|
+
throw error;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
async saveMoney(orderData) {
|
|
551
|
+
const params = {
|
|
552
|
+
MerchantID: this.keyData.MERCHANT_ID,
|
|
553
|
+
RespondType: 'JSON',
|
|
554
|
+
TimeStamp: Math.floor(Date.now() / 1000),
|
|
555
|
+
Version: '2.0',
|
|
556
|
+
MerchantOrderNo: new Date().getTime(),
|
|
557
|
+
Amt: orderData.total,
|
|
558
|
+
ItemDesc: orderData.title,
|
|
559
|
+
NotifyURL: this.keyData.NotifyURL,
|
|
560
|
+
ReturnURL: this.keyData.ReturnURL,
|
|
561
|
+
};
|
|
562
|
+
const appName = this.appName;
|
|
563
|
+
await database_js_1.default.execute(`INSERT INTO \`${appName}\`.${orderData.table} (orderID, userID, money, status, note) VALUES (?, ?, ?, ?, ?)
|
|
564
|
+
`, [params.MerchantOrderNo, orderData.userID, orderData.total * orderData.ratio, 0, orderData.note]);
|
|
565
|
+
const qs = FinancialService.JsonToQueryString(params);
|
|
566
|
+
const tradeInfo = FinancialService.aesEncrypt(qs, this.keyData.HASH_KEY, this.keyData.HASH_IV);
|
|
567
|
+
const tradeSha = crypto_1.default.createHash('sha256').update(`HashKey=${this.keyData.HASH_KEY}&${tradeInfo}&HashIV=${this.keyData.HASH_IV}`).digest('hex').toUpperCase();
|
|
568
|
+
const subMitData = {
|
|
569
|
+
actionURL: this.keyData.ActionURL,
|
|
570
|
+
MerchantOrderNo: params.MerchantOrderNo,
|
|
571
|
+
MerchantID: this.keyData.MERCHANT_ID,
|
|
572
|
+
TradeInfo: tradeInfo,
|
|
573
|
+
TradeSha: tradeSha,
|
|
574
|
+
Version: params.Version,
|
|
575
|
+
};
|
|
576
|
+
return html `<form name="Newebpay" action="${subMitData.actionURL}" method="POST" class="payment">
|
|
577
|
+
<input type="hidden" name="MerchantID" value="${subMitData.MerchantID}" />
|
|
578
|
+
<input type="hidden" name="TradeInfo" value="${subMitData.TradeInfo}" />
|
|
579
|
+
<input type="hidden" name="TradeSha" value="${subMitData.TradeSha}" />
|
|
580
|
+
<input type="hidden" name="Version" value="${subMitData.Version}" />
|
|
581
|
+
<input type="hidden" name="MerchantOrderNo" value="${subMitData.MerchantOrderNo}" />
|
|
582
|
+
<button type="submit" class="btn btn-secondary custom-btn beside-btn" id="submit" hidden></button>
|
|
583
|
+
</form>`;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
exports.PayPal = PayPal;
|
|
587
|
+
class LinePay {
|
|
588
|
+
constructor(appName, keyData) {
|
|
589
|
+
this.keyData = keyData;
|
|
590
|
+
this.appName = appName;
|
|
591
|
+
this.LinePay_CLIENT_ID = "2006615995";
|
|
592
|
+
this.LinePay_SECRET = "05231f46428525ee68c2816f16635145";
|
|
593
|
+
this.LinePay_BASE_URL = "https://api-m.sandbox.paypal.com";
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
exports.LinePay = LinePay;
|
|
372
597
|
//# sourceMappingURL=financial-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financial-service.js","sourceRoot":"","sources":["financial-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"financial-service.js","sourceRoot":"","sources":["financial-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import crypto, { Encoding } from 'crypto';
|
|
2
2
|
import db from '../../modules/database.js';
|
|
3
3
|
import moment from 'moment-timezone';
|
|
4
|
+
import axios, {AxiosRequestConfig} from "axios";
|
|
5
|
+
import redis from "../../modules/redis";
|
|
4
6
|
|
|
5
7
|
interface KeyData {
|
|
6
8
|
MERCHANT_ID: string;
|
|
@@ -9,7 +11,7 @@ interface KeyData {
|
|
|
9
11
|
NotifyURL: string;
|
|
10
12
|
ReturnURL: string;
|
|
11
13
|
ActionURL: string;
|
|
12
|
-
TYPE: 'newWebPay' | 'ecPay';
|
|
14
|
+
TYPE: 'newWebPay' | 'ecPay' | 'PayPal' | 'LinePay';
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
const html = String.raw;
|
|
@@ -77,6 +79,9 @@ export default class FinancialService {
|
|
|
77
79
|
`,
|
|
78
80
|
[orderData.orderID, 0, orderData.user_email, orderData]
|
|
79
81
|
);
|
|
82
|
+
|
|
83
|
+
// //todo 修改付款方式 to paypal
|
|
84
|
+
// return await new PayPal(this.appName, this.keyData).checkout(orderData);
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
async saveWallet(orderData: { total: number; userID: number; note: any; method: string ,table:string,title:string,ratio:number}): Promise<string> {
|
|
@@ -496,3 +501,279 @@ export class EcPay {
|
|
|
496
501
|
`;
|
|
497
502
|
}
|
|
498
503
|
}
|
|
504
|
+
|
|
505
|
+
// PayPal金流
|
|
506
|
+
export class PayPal {
|
|
507
|
+
keyData: KeyData;
|
|
508
|
+
appName: string;
|
|
509
|
+
PAYPAL_CLIENT_ID:string;
|
|
510
|
+
PAYPAL_SECRET:string;
|
|
511
|
+
PAYPAL_BASE_URL:string
|
|
512
|
+
//todo PAYPAL_CLIENT_ID PAYPAL_SECRET 會是動態的 還有 PAYPAL_BASE_URL的沙箱環境
|
|
513
|
+
constructor(appName: string, keyData: KeyData) {
|
|
514
|
+
this.keyData = keyData;
|
|
515
|
+
this.appName = appName;
|
|
516
|
+
this.PAYPAL_CLIENT_ID = "AfxmQilUtZiATwO5vEZH_RPRJWBTiEGhUm27Wu5LyElZ7_OlXGwkc2vDlpUPsJHjoA8rVARy7i8A6VbY"; // 替換為您的 Client ID
|
|
517
|
+
this.PAYPAL_SECRET = "EKSx6S6nnjPgrjcEPLFytJGqwakuZ5vUcTv-kF-eKkprd7Ci22P7UV93-85b0Xupa9ggULebx9Rvsx7e"; // 替換為您的 Secret Key
|
|
518
|
+
this.PAYPAL_BASE_URL = "https://api-m.sandbox.paypal.com"; // 沙箱環境
|
|
519
|
+
// const PAYPAL_BASE_URL = "https://api-m.paypal.com"; // 正式環境
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
async getAccessToken(): Promise<string> {
|
|
523
|
+
try {
|
|
524
|
+
const tokenUrl = `${this.PAYPAL_BASE_URL}/v1/oauth2/token`;
|
|
525
|
+
|
|
526
|
+
const config: AxiosRequestConfig = {
|
|
527
|
+
method: "POST",
|
|
528
|
+
url: tokenUrl,
|
|
529
|
+
headers: {
|
|
530
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
531
|
+
},
|
|
532
|
+
auth: {
|
|
533
|
+
username: this.PAYPAL_CLIENT_ID,
|
|
534
|
+
password: this.PAYPAL_SECRET,
|
|
535
|
+
},
|
|
536
|
+
data: new URLSearchParams({
|
|
537
|
+
grant_type: "client_credentials",
|
|
538
|
+
}).toString(),
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
const response = await axios.request(config);
|
|
542
|
+
return response.data.access_token;
|
|
543
|
+
} catch (error: any) {
|
|
544
|
+
console.error("Error fetching access token:", error.response?.data || error.message);
|
|
545
|
+
throw new Error("Failed to retrieve PayPal access token.");
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
async checkout(orderData:any){
|
|
549
|
+
const accessToken = await this.getAccessToken();
|
|
550
|
+
const order = await this.createOrderPage(accessToken , orderData);
|
|
551
|
+
return {
|
|
552
|
+
orderId: order.id,
|
|
553
|
+
approveLink: order.links.find((link: any) => link.rel === "approve")?.href,
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
async createOrderPage(accessToken: string,orderData: {
|
|
557
|
+
lineItems: {
|
|
558
|
+
id: string;
|
|
559
|
+
spec: string[];
|
|
560
|
+
count: number;
|
|
561
|
+
sale_price: number;
|
|
562
|
+
title:string
|
|
563
|
+
}[];
|
|
564
|
+
total: number;
|
|
565
|
+
email: string;
|
|
566
|
+
shipment_fee: number;
|
|
567
|
+
orderID: string;
|
|
568
|
+
use_wallet: number;
|
|
569
|
+
user_email: string;
|
|
570
|
+
method?: string;
|
|
571
|
+
}) {
|
|
572
|
+
try {
|
|
573
|
+
const createOrderUrl = `${this.PAYPAL_BASE_URL}/v2/checkout/orders`;
|
|
574
|
+
let itemPrice = 0
|
|
575
|
+
orderData.lineItems.forEach((item)=>{
|
|
576
|
+
itemPrice += item.sale_price;
|
|
577
|
+
})
|
|
578
|
+
const config: AxiosRequestConfig = {
|
|
579
|
+
method: "POST",
|
|
580
|
+
url: createOrderUrl,
|
|
581
|
+
headers: {
|
|
582
|
+
"Content-Type": "application/json",
|
|
583
|
+
Authorization: `Bearer ${accessToken}`,
|
|
584
|
+
},
|
|
585
|
+
data: {
|
|
586
|
+
intent: "CAPTURE", // 訂單目標: CAPTURE (立即支付) 或 AUTHORIZE (授權後支付)
|
|
587
|
+
purchase_units: [
|
|
588
|
+
{
|
|
589
|
+
reference_id: orderData.orderID, // 訂單參考 ID,可自定義
|
|
590
|
+
amount: {
|
|
591
|
+
currency_code: "TWD", // 貨幣
|
|
592
|
+
value: itemPrice, // 總金額
|
|
593
|
+
breakdown: {
|
|
594
|
+
item_total: {
|
|
595
|
+
currency_code: "TWD",
|
|
596
|
+
value: itemPrice,
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
},
|
|
600
|
+
items:orderData.lineItems.map((item)=>{
|
|
601
|
+
return {
|
|
602
|
+
name: item.title, // 商品名稱
|
|
603
|
+
unit_amount: {
|
|
604
|
+
currency_code: "TWD",
|
|
605
|
+
value: item.sale_price,
|
|
606
|
+
},
|
|
607
|
+
quantity: item.count, // 商品數量
|
|
608
|
+
description:item.spec.join(',')??""
|
|
609
|
+
}
|
|
610
|
+
}),
|
|
611
|
+
},
|
|
612
|
+
],
|
|
613
|
+
|
|
614
|
+
application_context: {
|
|
615
|
+
brand_name: this.appName, // 商店名稱
|
|
616
|
+
landing_page: "NO_PREFERENCE", // 登陸頁面類型
|
|
617
|
+
user_action: "PAY_NOW", // 用戶操作: PAY_NOW (立即支付)
|
|
618
|
+
return_url: `${this.keyData.ReturnURL}&payment=true&appName=${this.appName}&orderID=${orderData.orderID}`, // 成功返回 URL
|
|
619
|
+
cancel_url: `${this.keyData.ReturnURL}&payment=false`, // 取消返回 URL
|
|
620
|
+
},
|
|
621
|
+
},
|
|
622
|
+
};
|
|
623
|
+
|
|
624
|
+
const response = await axios.request(config);
|
|
625
|
+
await db.execute(
|
|
626
|
+
`INSERT INTO \`${this.appName}\`.t_checkout (cart_token, status, email, orderData) VALUES (?, ?, ?, ?)
|
|
627
|
+
`,
|
|
628
|
+
[orderData.orderID, 0, orderData.user_email, orderData]
|
|
629
|
+
);
|
|
630
|
+
await redis.setValue('paypal'+orderData.orderID,response.data.id)
|
|
631
|
+
return response.data;
|
|
632
|
+
} catch (error: any) {
|
|
633
|
+
console.error("Error creating order:", error.response?.data || error.message);
|
|
634
|
+
throw new Error("Failed to create PayPal order.");
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
async getOrderDetails(orderId: string, accessToken: string) {
|
|
638
|
+
const url = `/v2/checkout/orders/${orderId}`;
|
|
639
|
+
const axiosInstance = axios.create({
|
|
640
|
+
baseURL: this.PAYPAL_BASE_URL,
|
|
641
|
+
headers: {
|
|
642
|
+
"Content-Type": "application/json",
|
|
643
|
+
},
|
|
644
|
+
});
|
|
645
|
+
const config: AxiosRequestConfig = {
|
|
646
|
+
method: "GET",
|
|
647
|
+
url: url,
|
|
648
|
+
headers: {
|
|
649
|
+
Authorization: `Bearer ${accessToken}`,
|
|
650
|
+
},
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
try {
|
|
654
|
+
const response = await axiosInstance.request(config);
|
|
655
|
+
const order = response.data;
|
|
656
|
+
|
|
657
|
+
// 檢查訂單狀態是否為 APPROVED
|
|
658
|
+
if (order.status === "APPROVED") {
|
|
659
|
+
return order;
|
|
660
|
+
} else {
|
|
661
|
+
throw new Error(`Order status is not APPROVED. Current status: ${order.status}`);
|
|
662
|
+
}
|
|
663
|
+
} catch (error:any) {
|
|
664
|
+
console.error("Error fetching order details:", error.response?.data || error.message);
|
|
665
|
+
throw error;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
async capturePayment(orderId: string, accessToken: string) {
|
|
670
|
+
const url = `/v2/checkout/orders/${orderId}/capture`;
|
|
671
|
+
const axiosInstance = axios.create({
|
|
672
|
+
baseURL: this.PAYPAL_BASE_URL,
|
|
673
|
+
headers: {
|
|
674
|
+
"Content-Type": "application/json",
|
|
675
|
+
},
|
|
676
|
+
});
|
|
677
|
+
const config: AxiosRequestConfig = {
|
|
678
|
+
method: "POST",
|
|
679
|
+
url: url,
|
|
680
|
+
headers: {
|
|
681
|
+
Authorization: `Bearer ${accessToken}`,
|
|
682
|
+
},
|
|
683
|
+
};
|
|
684
|
+
|
|
685
|
+
try {
|
|
686
|
+
const response = await axiosInstance.request(config);
|
|
687
|
+
return response.data;
|
|
688
|
+
} catch (error:any) {
|
|
689
|
+
console.error("Error capturing payment:", error.response?.data || error.message);
|
|
690
|
+
throw error;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
async confirmAndCaptureOrder(orderId: string) {
|
|
695
|
+
try {
|
|
696
|
+
const accessToken = await this.getAccessToken();
|
|
697
|
+
// 確認訂單狀態
|
|
698
|
+
const order = await this.getOrderDetails(orderId, accessToken);
|
|
699
|
+
// 捕獲付款
|
|
700
|
+
const captureResult = await this.capturePayment(order.id, accessToken);
|
|
701
|
+
|
|
702
|
+
console.log("Payment process completed successfully.");
|
|
703
|
+
return captureResult;
|
|
704
|
+
} catch (error:any) {
|
|
705
|
+
console.error("Error during order confirmation or payment capture:", error.message);
|
|
706
|
+
throw error;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
async saveMoney(orderData: { total: number; userID: number; note: string,table:string,title:string,ratio:number }) {
|
|
712
|
+
// 1. 建立請求的參數
|
|
713
|
+
const params = {
|
|
714
|
+
MerchantID: this.keyData.MERCHANT_ID,
|
|
715
|
+
RespondType: 'JSON',
|
|
716
|
+
TimeStamp: Math.floor(Date.now() / 1000),
|
|
717
|
+
Version: '2.0',
|
|
718
|
+
MerchantOrderNo: new Date().getTime(),
|
|
719
|
+
Amt: orderData.total,
|
|
720
|
+
ItemDesc: orderData.title,
|
|
721
|
+
NotifyURL: this.keyData.NotifyURL,
|
|
722
|
+
ReturnURL: this.keyData.ReturnURL,
|
|
723
|
+
};
|
|
724
|
+
|
|
725
|
+
const appName = this.appName;
|
|
726
|
+
await db.execute(
|
|
727
|
+
`INSERT INTO \`${appName}\`.${orderData.table} (orderID, userID, money, status, note) VALUES (?, ?, ?, ?, ?)
|
|
728
|
+
`,
|
|
729
|
+
[params.MerchantOrderNo, orderData.userID, orderData.total * orderData.ratio, 0, orderData.note]
|
|
730
|
+
);
|
|
731
|
+
|
|
732
|
+
// 2. 產生 Query String
|
|
733
|
+
const qs = FinancialService.JsonToQueryString(params);
|
|
734
|
+
// 3. 開始加密
|
|
735
|
+
// { method: 'aes-256-cbc', inputEndcoding: 'utf-8', outputEndcoding: 'hex' };
|
|
736
|
+
// createCipheriv 方法中,key 要滿 32 字元、iv 要滿 16 字元,請之後測試多注意這點
|
|
737
|
+
const tradeInfo = FinancialService.aesEncrypt(qs, this.keyData.HASH_KEY, this.keyData.HASH_IV);
|
|
738
|
+
|
|
739
|
+
// 4. 產生檢查碼
|
|
740
|
+
const tradeSha = crypto.createHash('sha256').update(`HashKey=${this.keyData.HASH_KEY}&${tradeInfo}&HashIV=${this.keyData.HASH_IV}`).digest('hex').toUpperCase();
|
|
741
|
+
const subMitData = {
|
|
742
|
+
actionURL: this.keyData.ActionURL,
|
|
743
|
+
MerchantOrderNo: params.MerchantOrderNo,
|
|
744
|
+
MerchantID: this.keyData.MERCHANT_ID,
|
|
745
|
+
TradeInfo: tradeInfo,
|
|
746
|
+
TradeSha: tradeSha,
|
|
747
|
+
Version: params.Version,
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
// 5. 回傳物件
|
|
751
|
+
return html`<form name="Newebpay" action="${subMitData.actionURL}" method="POST" class="payment">
|
|
752
|
+
<input type="hidden" name="MerchantID" value="${subMitData.MerchantID}" />
|
|
753
|
+
<input type="hidden" name="TradeInfo" value="${subMitData.TradeInfo}" />
|
|
754
|
+
<input type="hidden" name="TradeSha" value="${subMitData.TradeSha}" />
|
|
755
|
+
<input type="hidden" name="Version" value="${subMitData.Version}" />
|
|
756
|
+
<input type="hidden" name="MerchantOrderNo" value="${subMitData.MerchantOrderNo}" />
|
|
757
|
+
<button type="submit" class="btn btn-secondary custom-btn beside-btn" id="submit" hidden></button>
|
|
758
|
+
</form>`;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
// LinePay金流
|
|
763
|
+
export class LinePay {
|
|
764
|
+
keyData: KeyData;
|
|
765
|
+
appName: string;
|
|
766
|
+
LinePay_CLIENT_ID:string;
|
|
767
|
+
LinePay_SECRET:string;
|
|
768
|
+
LinePay_BASE_URL:string
|
|
769
|
+
//todo LinePay_CLIENT_ID LinePay_SECRET 會是動態的 還有 LinePay_BASE_URL的沙箱環境
|
|
770
|
+
constructor(appName: string, keyData: KeyData) {
|
|
771
|
+
this.keyData = keyData;
|
|
772
|
+
this.appName = appName;
|
|
773
|
+
this.LinePay_CLIENT_ID = "2006615995"; // 替換為您的 Client ID
|
|
774
|
+
this.LinePay_SECRET = "05231f46428525ee68c2816f16635145"; // 替換為您的 Secret Key
|
|
775
|
+
this.LinePay_BASE_URL = "https://api-m.sandbox.paypal.com"; // 沙箱環境
|
|
776
|
+
// const PAYPAL_BASE_URL = "https://api-m.paypal.com"; // 正式環境
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
}
|
|
@@ -130,7 +130,7 @@ export declare class Shopping {
|
|
|
130
130
|
type: string;
|
|
131
131
|
divisor: number;
|
|
132
132
|
executionTime: string;
|
|
133
|
-
queryStatus: "
|
|
133
|
+
queryStatus: "error" | "success";
|
|
134
134
|
queryData: any;
|
|
135
135
|
} | {
|
|
136
136
|
type: string;
|
|
@@ -504,7 +504,7 @@ export declare class Shopping {
|
|
|
504
504
|
allowanceInvoiceTotalAmount: string;
|
|
505
505
|
itemList: any;
|
|
506
506
|
invoiceDate: string;
|
|
507
|
-
}): Promise<
|
|
507
|
+
}): Promise<boolean>;
|
|
508
508
|
voidAllowance(obj: {
|
|
509
509
|
invoiceNo: string;
|
|
510
510
|
allowanceNo: string;
|