ts-glitter 21.0.4 → 21.0.6
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 +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/backend-manager/bg-blog.js +22 -37
- package/lowcode/backend-manager/bg-blog.ts +45 -34
- package/lowcode/backend-manager/bg-list-component.js +2 -2
- package/lowcode/backend-manager/bg-list-component.ts +2 -2
- package/lowcode/backend-manager/bg-widget.js +21 -0
- package/lowcode/backend-manager/bg-widget.ts +21 -0
- package/lowcode/cms-plugin/filter-options.js +3 -3
- package/lowcode/cms-plugin/filter-options.ts +1 -1
- package/lowcode/cms-plugin/pos-pages/models.ts +1 -0
- package/lowcode/cms-plugin/pos-pages/payment-page.js +74 -8
- package/lowcode/cms-plugin/pos-pages/payment-page.ts +98 -19
- package/lowcode/cms-plugin/product-service.js +2 -1
- package/lowcode/cms-plugin/product-service.ts +3 -2
- package/lowcode/cms-plugin/shopping-finance-setting.js +251 -6
- package/lowcode/cms-plugin/shopping-finance-setting.ts +291 -6
- package/lowcode/cms-plugin/shopping-order-manager.js +56 -46
- package/lowcode/cms-plugin/shopping-order-manager.ts +59 -47
- package/lowcode/cms-plugin/shopping-product-setting.js +10 -5
- package/lowcode/cms-plugin/shopping-product-setting.ts +14 -6
- package/lowcode/cms-plugin/shopping-setting-advance.js +21 -72
- package/lowcode/cms-plugin/shopping-setting-advance.ts +31 -98
- package/lowcode/css/editor.css +48 -16
- package/lowcode/css/front-end.css +16 -17
- package/lowcode/glitter-base/global/language.js +2 -0
- package/lowcode/glitter-base/global/language.ts +3 -0
- package/lowcode/glitter-base/global/shipment-config.js +4 -4
- package/lowcode/glitter-base/global/shipment-config.ts +1 -1
- package/lowcode/glitter-base/route/shopping.js +11 -0
- package/lowcode/glitter-base/route/shopping.ts +12 -0
- package/lowcode/official_view_component/form-widget/input-custom.js +0 -1
- package/lowcode/official_view_component/form-widget/input-custom.ts +0 -1
- package/lowcode/public-components/checkout/index.js +578 -780
- package/lowcode/public-components/checkout/index.ts +2457 -2652
- package/lowcode/public-components/headers/header-class.js +252 -324
- package/lowcode/public-components/headers/header-class.ts +389 -480
- package/lowcode/public-components/modules/cart-module.js +433 -0
- package/lowcode/public-components/modules/cart-module.ts +491 -0
- package/lowcode/public-components/modules/product-module.js +45 -0
- package/lowcode/public-components/modules/product-module.ts +58 -0
- package/lowcode/public-components/product/product-detail.js +178 -184
- package/lowcode/public-components/product/product-detail.ts +564 -579
- package/lowcode/public-components/user-manager/um-order.js +162 -32
- package/lowcode/public-components/user-manager/um-order.ts +181 -46
- package/lowcode/public-models/product.ts +1 -0
- package/package.json +1 -1
- package/src/Language.js +1 -0
- package/src/Language.js.map +1 -1
- package/src/Language.ts +3 -0
- package/src/api-public/controllers/article.js +33 -29
- package/src/api-public/controllers/article.js.map +1 -1
- package/src/api-public/controllers/article.ts +152 -146
- package/src/api-public/controllers/index.js +2 -0
- package/src/api-public/controllers/index.js.map +1 -1
- package/src/api-public/controllers/index.ts +2 -0
- package/src/api-public/controllers/shop.js +125 -47
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +148 -61
- package/src/api-public/controllers/user.js +51 -52
- package/src/api-public/controllers/user.js.map +1 -1
- package/src/api-public/controllers/user.ts +63 -52
- package/src/api-public/models/glitter-finance.js +2 -1
- package/src/api-public/models/glitter-finance.js.map +5 -1
- package/src/api-public/services/checkout-event.d.ts +1 -0
- package/src/api-public/services/checkout-event.js +38 -13
- package/src/api-public/services/checkout-event.js.map +1 -1
- package/src/api-public/services/checkout-event.ts +38 -10
- package/src/api-public/services/factories/payment-strategy-factory.d.ts +6 -0
- package/src/api-public/services/factories/payment-strategy-factory.js +49 -0
- package/src/api-public/services/factories/payment-strategy-factory.js.map +1 -0
- package/src/api-public/services/factories/payment-strategy-factory.ts +71 -0
- package/src/api-public/services/fb-service.js +4 -4
- package/src/api-public/services/fb-service.js.map +1 -1
- package/src/api-public/services/financial-service.d.ts +2 -1
- package/src/api-public/services/financial-service.js +48 -53
- package/src/api-public/services/financial-service.js.map +1 -1
- package/src/api-public/services/financial-service.ts +29 -38
- package/src/api-public/services/financial-serviceV2.d.ts +298 -0
- package/src/api-public/services/financial-serviceV2.js +1158 -0
- package/src/api-public/services/financial-serviceV2.js.map +1 -0
- package/src/api-public/services/financial-serviceV2.ts +1518 -0
- package/src/api-public/services/interface/payment-keys-interface.d.ts +37 -0
- package/src/api-public/services/interface/payment-keys-interface.js +3 -0
- package/src/api-public/services/interface/payment-keys-interface.js.map +1 -0
- package/src/api-public/services/interface/payment-keys-interface.ts +46 -0
- package/src/api-public/services/interface/payment-strategy-interface.d.ts +17 -0
- package/src/api-public/services/interface/payment-strategy-interface.js +3 -0
- package/src/api-public/services/interface/payment-strategy-interface.js.map +1 -0
- package/src/api-public/services/interface/payment-strategy-interface.ts +48 -0
- package/src/api-public/services/migrate-event/public-user-config.d.ts +5 -0
- package/src/api-public/services/migrate-event/public-user-config.js +81 -0
- package/src/api-public/services/migrate-event/public-user-config.js.map +1 -0
- package/src/api-public/services/migrate-event/public-user-config.ts +106 -0
- package/src/api-public/services/model/handlePaymentTransaction.js +0 -68
- package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
- package/src/api-public/services/model/handlePaymentTransaction.ts +62 -54
- package/src/api-public/services/monitor.d.ts +1 -0
- package/src/api-public/services/payment-service.d.ts +12 -0
- package/src/api-public/services/payment-service.js +83 -0
- package/src/api-public/services/payment-service.js.map +1 -0
- package/src/api-public/services/payment-service.ts +112 -0
- package/src/api-public/services/shopping.d.ts +2 -1
- package/src/api-public/services/shopping.js +60 -23
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +88 -16
- package/src/api-public/services/strategies/ecpay-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/ecpay-strategy.js +26 -0
- package/src/api-public/services/strategies/ecpay-strategy.js.map +1 -0
- package/src/api-public/services/strategies/ecpay-strategy.ts +30 -0
- package/src/api-public/services/strategies/ezpay-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/ezpay-strategy.js +26 -0
- package/src/api-public/services/strategies/ezpay-strategy.js.map +1 -0
- package/src/api-public/services/strategies/ezpay-strategy.ts +31 -0
- package/src/api-public/services/strategies/jkopay-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/jkopay-strategy.js +32 -0
- package/src/api-public/services/strategies/jkopay-strategy.js.map +1 -0
- package/src/api-public/services/strategies/jkopay-strategy.ts +36 -0
- package/src/api-public/services/strategies/linepay-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/linepay-strategy.js +32 -0
- package/src/api-public/services/strategies/linepay-strategy.js.map +1 -0
- package/src/api-public/services/strategies/linepay-strategy.ts +35 -0
- package/src/api-public/services/strategies/paynow-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/paynow-strategy.js +26 -0
- package/src/api-public/services/strategies/paynow-strategy.js.map +1 -0
- package/src/api-public/services/strategies/paynow-strategy.ts +29 -0
- package/src/api-public/services/strategies/paypal-strategy.d.ts +8 -0
- package/src/api-public/services/strategies/paypal-strategy.js +28 -0
- package/src/api-public/services/strategies/paypal-strategy.js.map +1 -0
- package/src/api-public/services/strategies/paypal-strategy.ts +31 -0
- package/src/api-public/services/updated-table-checked.d.ts +1 -0
- package/src/api-public/services/updated-table-checked.js +37 -15
- package/src/api-public/services/updated-table-checked.js.map +1 -1
- package/src/api-public/services/updated-table-checked.ts +56 -36
- package/src/api-public/utils/ut-permission.d.ts +1 -0
- package/src/app-project/serverless/src/index.js +17 -7
- package/src/app-project/serverless/src/index.js.map +1 -1
- package/src/app-project/serverless/src/modules/CryptoJS.js +17 -7
- package/src/app-project/serverless/src/modules/CryptoJS.js.map +1 -1
- package/src/app-project/serverless/src/modules/ssh.js +17 -7
- package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
- package/src/config.d.ts +1 -1
- package/src/modules/AWSLib.js +3 -2
- package/src/modules/AWSLib.js.map +1 -1
- package/src/modules/CryptoJS.js +17 -7
- package/src/modules/CryptoJS.js.map +1 -1
- package/src/modules/database.d.ts +1 -1
- package/src/modules/redis.d.ts +1 -1
- package/src/modules/ssh.js +17 -7
- package/src/modules/ssh.js.map +1 -1
- package/src/modules/tool.d.ts +4 -4
- package/src/modules/tool.js +2 -1
- package/src/modules/tool.js.map +1 -1
- package/src/run.js +2 -1
- package/src/run.js.map +1 -1
- package/src/services/create-instance.js +4 -3
- package/src/services/create-instance.js.map +1 -1
- package/src/services/saas-table-check.js +2 -2
- package/src/services/saas-table-check.js.map +5 -1
- package/src/services/tool.js +3 -2
- package/src/services/tool.js.map +1 -1
- package/vp00rqhw1r.json +1 -0
- package/src/api-public/services/product-migrate.d.ts +0 -8
- package/src/api-public/services/product-migrate.js.map +0 -1
|
@@ -16,6 +16,7 @@ import { FormWidget } from '../../official_view_component/official/form.js';
|
|
|
16
16
|
import { Language } from '../../glitter-base/global/language.js';
|
|
17
17
|
import { CheckInput } from '../../modules/checkInput.js';
|
|
18
18
|
import { ShipmentConfig } from '../../glitter-base/global/shipment-config.js';
|
|
19
|
+
import { Animation } from '../../glitterBundle/module/Animation.js';
|
|
19
20
|
const html = String.raw;
|
|
20
21
|
const css = String.raw;
|
|
21
22
|
export class UMOrder {
|
|
@@ -201,20 +202,33 @@ export class UMOrder {
|
|
|
201
202
|
`);
|
|
202
203
|
}
|
|
203
204
|
static executePayment(gvc, payment_method, res) {
|
|
205
|
+
var _a, _b, _c, _d;
|
|
206
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
207
|
+
function showPayError() {
|
|
208
|
+
dialog.infoMessage({
|
|
209
|
+
text: '系統處理您的付款時遇到一些問題,導致交易未能完成。請聯繫我們的客服團隊以取得進一步的協助',
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (res.result == false) {
|
|
213
|
+
showPayError();
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
204
216
|
switch (payment_method) {
|
|
205
217
|
case 'line_pay':
|
|
206
218
|
if (gvc.glitter.share.is_application) {
|
|
207
219
|
gvc.glitter.runJsInterFace('intent_url', {
|
|
208
|
-
url: res.response.info.paymentUrl.app,
|
|
220
|
+
url: res.response.responseData.info.paymentUrl.app,
|
|
209
221
|
}, () => { });
|
|
210
222
|
}
|
|
211
223
|
else {
|
|
212
|
-
console.log("test -");
|
|
213
224
|
location.href = res.response.info.paymentUrl.web;
|
|
214
225
|
}
|
|
215
226
|
break;
|
|
216
227
|
case 'paypal': {
|
|
217
|
-
|
|
228
|
+
if (res.response.approveLink) {
|
|
229
|
+
location.href = res.response.approveLink;
|
|
230
|
+
}
|
|
231
|
+
showPayError();
|
|
218
232
|
break;
|
|
219
233
|
}
|
|
220
234
|
case 'jkopay': {
|
|
@@ -228,6 +242,111 @@ export class UMOrder {
|
|
|
228
242
|
}
|
|
229
243
|
break;
|
|
230
244
|
}
|
|
245
|
+
case 'paynow': {
|
|
246
|
+
if (!((_d = (_c = (_b = (_a = res.response) === null || _a === void 0 ? void 0 : _a.responseData) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.result) === null || _d === void 0 ? void 0 : _d.secret)) {
|
|
247
|
+
return 'paynow API失敗';
|
|
248
|
+
}
|
|
249
|
+
gvc.glitter.innerDialog((gvc) => {
|
|
250
|
+
document.body.style.setProperty('overflow-y', 'hidden', 'important');
|
|
251
|
+
gvc.addStyle(css `
|
|
252
|
+
.button-bgr {
|
|
253
|
+
width: 100%;
|
|
254
|
+
border: 0;
|
|
255
|
+
border-radius: 0.375rem;
|
|
256
|
+
height: 40px;
|
|
257
|
+
background: #393939;
|
|
258
|
+
padding: 0 24px;
|
|
259
|
+
margin: 18px 0;
|
|
260
|
+
}
|
|
261
|
+
.button-text {
|
|
262
|
+
color: #fff;
|
|
263
|
+
font-size: 16px;
|
|
264
|
+
}
|
|
265
|
+
`);
|
|
266
|
+
return gvc.bindView({
|
|
267
|
+
bind: `paynow`,
|
|
268
|
+
view: () => {
|
|
269
|
+
return html ` <div class="w-100 h-100 d-flex align-items-center justify-content-center">
|
|
270
|
+
${document.body.clientWidth < 800
|
|
271
|
+
? `
|
|
272
|
+
<div class="bg-white position-relative vw-100" style="height: ${window.innerHeight}px;overflow-y: auto;
|
|
273
|
+
padding-top:${50 + gvc.glitter.share.top_inset}px;
|
|
274
|
+
">
|
|
275
|
+
`
|
|
276
|
+
: `<div class="p-3 bg-white position-relative" style="max-height: calc(100vh - 90px);overflow-y:auto;">`}
|
|
277
|
+
<div
|
|
278
|
+
style="position: absolute; right: 15px;top:${15 + gvc.glitter.share.top_inset}px;z-index:1;"
|
|
279
|
+
onclick="${gvc.event(() => {
|
|
280
|
+
gvc.closeDialog();
|
|
281
|
+
})}"
|
|
282
|
+
>
|
|
283
|
+
<i class="fa-regular fa-circle-xmark fs-5 text-dark cursor_pointer"></i>
|
|
284
|
+
</div>
|
|
285
|
+
<div id="paynow-container" class="" style="">
|
|
286
|
+
<div style="width:200px;height:200px;">loading...</div>
|
|
287
|
+
</div>
|
|
288
|
+
<div class="px-3 px-sm-0 w-100">
|
|
289
|
+
<button
|
|
290
|
+
class="button-bgr"
|
|
291
|
+
id="checkoutButton"
|
|
292
|
+
onclick="${gvc.event(() => {
|
|
293
|
+
const PayNow = window.PayNow;
|
|
294
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
295
|
+
dialog.dataLoading({ visible: true });
|
|
296
|
+
PayNow.checkout().then((response) => {
|
|
297
|
+
dialog.dataLoading({ visible: false });
|
|
298
|
+
if (response.error) {
|
|
299
|
+
dialog.errorMessage({
|
|
300
|
+
text: response.error.message,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
})}"
|
|
305
|
+
>
|
|
306
|
+
<span class="button-text">確認結帳</span>
|
|
307
|
+
</button>
|
|
308
|
+
</div>
|
|
309
|
+
</div>`;
|
|
310
|
+
},
|
|
311
|
+
divCreate: {
|
|
312
|
+
class: ` h-100 d-flex align-items-center justify-content-center`,
|
|
313
|
+
style: `max-width:100vw;${document.body.clientWidth < 800 ? 'width:100%;' : 'width:400px;'};`,
|
|
314
|
+
},
|
|
315
|
+
onCreate: () => {
|
|
316
|
+
var _a, _b;
|
|
317
|
+
const publicKey = (_a = res.response) === null || _a === void 0 ? void 0 : _a.responseData.publicKey;
|
|
318
|
+
const secret = (_b = res.response) === null || _b === void 0 ? void 0 : _b.responseData.data.result.secret;
|
|
319
|
+
const env = res.response.responseData.BETA == 'true' ? 'sandbox' : 'production';
|
|
320
|
+
const PayNow = window.PayNow;
|
|
321
|
+
PayNow.createPayment({
|
|
322
|
+
publicKey: publicKey,
|
|
323
|
+
secret: secret,
|
|
324
|
+
env: env,
|
|
325
|
+
});
|
|
326
|
+
PayNow.mount('#paynow-container', {
|
|
327
|
+
locale: 'zh_tw',
|
|
328
|
+
appearance: {
|
|
329
|
+
variables: {
|
|
330
|
+
fontFamily: 'monospace',
|
|
331
|
+
colorPrimary: '#0078ab',
|
|
332
|
+
colorDefault: '#0a0a0a',
|
|
333
|
+
colorBorder: '#cccccc',
|
|
334
|
+
colorPlaceholder: '#eeeeee',
|
|
335
|
+
borderRadius: '.3rem',
|
|
336
|
+
colorDanger: '#ff3d3d',
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
}, `paynow`, {
|
|
343
|
+
animation: document.body.clientWidth > 800 ? Animation.fade : Animation.popup,
|
|
344
|
+
dismiss: () => {
|
|
345
|
+
document.body.style.setProperty('overflow-y', 'auto');
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
231
350
|
default: {
|
|
232
351
|
const id = gvc.glitter.getUUID();
|
|
233
352
|
$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
|
|
@@ -244,25 +363,9 @@ export class UMOrder {
|
|
|
244
363
|
return new Promise(() => {
|
|
245
364
|
ApiShop.repay(id, url.href).then(res => {
|
|
246
365
|
dialog.dataLoading({ visible: false });
|
|
366
|
+
orderData.payment_method;
|
|
247
367
|
this.executePayment(gvc, orderData.payment_method, res);
|
|
248
368
|
dialog.dataLoading({ visible: false });
|
|
249
|
-
switch (orderData.payment_method) {
|
|
250
|
-
case 'line_pay':
|
|
251
|
-
if (gvc.glitter.share.is_application) {
|
|
252
|
-
gvc.glitter.runJsInterFace('intent_url', {
|
|
253
|
-
url: res.response.info.paymentUrl.app,
|
|
254
|
-
}, () => { });
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
location.href = res.response.info.paymentUrl.web;
|
|
258
|
-
}
|
|
259
|
-
break;
|
|
260
|
-
default: {
|
|
261
|
-
const id = gvc.glitter.getUUID();
|
|
262
|
-
$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
|
|
263
|
-
document.querySelector(`#${id} #submit`).click();
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
369
|
return;
|
|
267
370
|
});
|
|
268
371
|
});
|
|
@@ -287,6 +390,11 @@ export class UMOrder {
|
|
|
287
390
|
}
|
|
288
391
|
static main(gvc, widget, subData) {
|
|
289
392
|
this.addStyle(gvc);
|
|
393
|
+
gvc.addMtScript([
|
|
394
|
+
{
|
|
395
|
+
src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
|
|
396
|
+
},
|
|
397
|
+
], () => { }, () => { });
|
|
290
398
|
UmClass.addStyle(gvc);
|
|
291
399
|
const glitter = gvc.glitter;
|
|
292
400
|
const dialog = new ShareDialog(gvc.glitter);
|
|
@@ -702,7 +810,7 @@ export class UMOrder {
|
|
|
702
810
|
};
|
|
703
811
|
}),
|
|
704
812
|
content_type: 'product',
|
|
705
|
-
eventID: orderData.orderID
|
|
813
|
+
eventID: orderData.orderID,
|
|
706
814
|
});
|
|
707
815
|
Ad.gtagEvent('purchase', {
|
|
708
816
|
transaction_id: vm.data.cart_token,
|
|
@@ -792,23 +900,44 @@ export class UMOrder {
|
|
|
792
900
|
}
|
|
793
901
|
})(),
|
|
794
902
|
},
|
|
903
|
+
{
|
|
904
|
+
title: Language.text('payment_method'),
|
|
905
|
+
value: Language.text(orderData.customer_info.payment_select),
|
|
906
|
+
},
|
|
795
907
|
{
|
|
796
908
|
title: Language.text('payment_status'),
|
|
797
909
|
value: (() => {
|
|
798
|
-
var _a, _b;
|
|
910
|
+
var _a, _b, _c, _d;
|
|
799
911
|
if (orderData.customer_info.payment_select === 'cash_on_delivery') {
|
|
800
912
|
return Language.text('cash_on_delivery');
|
|
801
913
|
}
|
|
914
|
+
const repayBtn = () => {
|
|
915
|
+
return html ` <span class="payment-actions ">
|
|
916
|
+
<button
|
|
917
|
+
class="customer-btn-text ms-3"
|
|
918
|
+
id="repay-button"
|
|
919
|
+
onclick="${gvc.event(() => {
|
|
920
|
+
UMOrder.repay(gvc, vm.data).then(r => { });
|
|
921
|
+
})}"
|
|
922
|
+
>
|
|
923
|
+
重新付款
|
|
924
|
+
</button>
|
|
925
|
+
</span>`;
|
|
926
|
+
};
|
|
802
927
|
switch (vm.data.status) {
|
|
803
928
|
case 0:
|
|
804
929
|
if (repayArray.includes((_b = (_a = vm.data) === null || _a === void 0 ? void 0 : _a.payment_method) !== null && _b !== void 0 ? _b : '')) {
|
|
805
930
|
const repayBtn = () => {
|
|
806
|
-
return html `
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
931
|
+
return html ` <span class="payment-actions d-none">
|
|
932
|
+
<button
|
|
933
|
+
class="customer-btn-text ms-3"
|
|
934
|
+
id="repay-button"
|
|
935
|
+
onclick="${gvc.event(() => {
|
|
936
|
+
UMOrder.repay(gvc, vm.data).then(r => { });
|
|
937
|
+
})}"
|
|
938
|
+
>
|
|
939
|
+
重新付款
|
|
940
|
+
</button>
|
|
812
941
|
</span>`;
|
|
813
942
|
};
|
|
814
943
|
return Language.text('awaiting_verification') + repayBtn();
|
|
@@ -819,6 +948,9 @@ export class UMOrder {
|
|
|
819
948
|
case 1:
|
|
820
949
|
return Language.text('paid');
|
|
821
950
|
case -1:
|
|
951
|
+
if (repayArray.includes((_d = (_c = vm.data) === null || _c === void 0 ? void 0 : _c.payment_method) !== null && _d !== void 0 ? _d : '')) {
|
|
952
|
+
return Language.text('payment_failed') + repayBtn();
|
|
953
|
+
}
|
|
822
954
|
return Language.text('payment_failed');
|
|
823
955
|
case -2:
|
|
824
956
|
return Language.text('refunded');
|
|
@@ -966,10 +1098,8 @@ export class UMOrder {
|
|
|
966
1098
|
orderData.user_info.area,
|
|
967
1099
|
orderData.user_info.address,
|
|
968
1100
|
]
|
|
969
|
-
.filter(
|
|
970
|
-
|
|
971
|
-
})
|
|
972
|
-
.join(','),
|
|
1101
|
+
.filter(Boolean)
|
|
1102
|
+
.join(''),
|
|
973
1103
|
});
|
|
974
1104
|
}
|
|
975
1105
|
arr.push({
|
|
@@ -9,6 +9,7 @@ import { FormWidget } from '../../official_view_component/official/form.js';
|
|
|
9
9
|
import { Language } from '../../glitter-base/global/language.js';
|
|
10
10
|
import { CheckInput } from '../../modules/checkInput.js';
|
|
11
11
|
import { ShipmentConfig } from '../../glitter-base/global/shipment-config.js';
|
|
12
|
+
import { Animation } from '../../glitterBundle/module/Animation.js';
|
|
12
13
|
|
|
13
14
|
const html = String.raw;
|
|
14
15
|
const css = String.raw;
|
|
@@ -439,27 +440,41 @@ export class UMOrder {
|
|
|
439
440
|
}
|
|
440
441
|
`);
|
|
441
442
|
}
|
|
442
|
-
|
|
443
|
-
|
|
443
|
+
|
|
444
|
+
static executePayment(gvc: GVC, payment_method: string, res: any) {
|
|
445
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
446
|
+
|
|
447
|
+
function showPayError() {
|
|
448
|
+
dialog.infoMessage({
|
|
449
|
+
text: '系統處理您的付款時遇到一些問題,導致交易未能完成。請聯繫我們的客服團隊以取得進一步的協助',
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
if (res.result == false) {
|
|
454
|
+
showPayError();
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
switch (payment_method) {
|
|
444
458
|
case 'line_pay':
|
|
445
459
|
if (gvc.glitter.share.is_application) {
|
|
446
460
|
gvc.glitter.runJsInterFace(
|
|
447
461
|
'intent_url',
|
|
448
462
|
{
|
|
449
|
-
url: res.response.info.paymentUrl.app,
|
|
463
|
+
url: res.response.responseData.info.paymentUrl.app,
|
|
450
464
|
},
|
|
451
465
|
() => {}
|
|
452
466
|
);
|
|
453
467
|
} else {
|
|
454
|
-
console.log("test -");
|
|
455
468
|
location.href = res.response.info.paymentUrl.web;
|
|
456
469
|
}
|
|
457
|
-
break
|
|
458
|
-
case 'paypal':{
|
|
459
|
-
location.href = res.response.approveLink;
|
|
460
470
|
break;
|
|
471
|
+
case 'paypal': {
|
|
472
|
+
if (res.response.approveLink) {
|
|
473
|
+
location.href = res.response.approveLink;
|
|
474
|
+
}
|
|
475
|
+
showPayError();break;
|
|
461
476
|
}
|
|
462
|
-
case 'jkopay':{
|
|
477
|
+
case 'jkopay': {
|
|
463
478
|
if (gvc.glitter.share.is_application) {
|
|
464
479
|
gvc.glitter.runJsInterFace(
|
|
465
480
|
'intent_url',
|
|
@@ -471,15 +486,127 @@ export class UMOrder {
|
|
|
471
486
|
} else {
|
|
472
487
|
location.href = res.response.result_object.payment_url;
|
|
473
488
|
}
|
|
474
|
-
break
|
|
489
|
+
break;
|
|
475
490
|
}
|
|
476
|
-
|
|
491
|
+
case 'paynow': {
|
|
492
|
+
if (!res.response?.responseData?.data?.result?.secret) {
|
|
493
|
+
return 'paynow API失敗';
|
|
494
|
+
}
|
|
495
|
+
gvc.glitter.innerDialog(
|
|
496
|
+
(gvc: GVC) => {
|
|
497
|
+
document.body.style.setProperty('overflow-y', 'hidden', 'important');
|
|
498
|
+
gvc.addStyle(css`
|
|
499
|
+
.button-bgr {
|
|
500
|
+
width: 100%;
|
|
501
|
+
border: 0;
|
|
502
|
+
border-radius: 0.375rem;
|
|
503
|
+
height: 40px;
|
|
504
|
+
background: #393939;
|
|
505
|
+
padding: 0 24px;
|
|
506
|
+
margin: 18px 0;
|
|
507
|
+
}
|
|
508
|
+
.button-text {
|
|
509
|
+
color: #fff;
|
|
510
|
+
font-size: 16px;
|
|
511
|
+
}
|
|
512
|
+
`);
|
|
513
|
+
return gvc.bindView({
|
|
514
|
+
bind: `paynow`,
|
|
515
|
+
view: () => {
|
|
516
|
+
return html` <div class="w-100 h-100 d-flex align-items-center justify-content-center">
|
|
517
|
+
${document.body.clientWidth < 800
|
|
518
|
+
? `
|
|
519
|
+
<div class="bg-white position-relative vw-100" style="height: ${window.innerHeight}px;overflow-y: auto;
|
|
520
|
+
padding-top:${50 + gvc.glitter.share.top_inset}px;
|
|
521
|
+
">
|
|
522
|
+
`
|
|
523
|
+
: `<div class="p-3 bg-white position-relative" style="max-height: calc(100vh - 90px);overflow-y:auto;">`}
|
|
524
|
+
<div
|
|
525
|
+
style="position: absolute; right: 15px;top:${15 + gvc.glitter.share.top_inset}px;z-index:1;"
|
|
526
|
+
onclick="${gvc.event(() => {
|
|
527
|
+
gvc.closeDialog();
|
|
528
|
+
})}"
|
|
529
|
+
>
|
|
530
|
+
<i class="fa-regular fa-circle-xmark fs-5 text-dark cursor_pointer"></i>
|
|
531
|
+
</div>
|
|
532
|
+
<div id="paynow-container" class="" style="">
|
|
533
|
+
<div style="width:200px;height:200px;">loading...</div>
|
|
534
|
+
</div>
|
|
535
|
+
<div class="px-3 px-sm-0 w-100">
|
|
536
|
+
<button
|
|
537
|
+
class="button-bgr"
|
|
538
|
+
id="checkoutButton"
|
|
539
|
+
onclick="${gvc.event(() => {
|
|
540
|
+
// const inputGroup = document.querySelector('#paynow-container');
|
|
541
|
+
// console.log("inputGroup -- " , inputGroup)
|
|
542
|
+
const PayNow = (window as any).PayNow;
|
|
543
|
+
const dialog = new ShareDialog(gvc.glitter);
|
|
544
|
+
dialog.dataLoading({ visible: true });
|
|
545
|
+
PayNow.checkout().then((response: any) => {
|
|
546
|
+
dialog.dataLoading({ visible: false });
|
|
547
|
+
if (response.error) {
|
|
548
|
+
dialog.errorMessage({
|
|
549
|
+
text: response.error.message,
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
})}"
|
|
554
|
+
>
|
|
555
|
+
<span class="button-text">確認結帳</span>
|
|
556
|
+
</button>
|
|
557
|
+
</div>
|
|
558
|
+
</div>`;
|
|
559
|
+
},
|
|
560
|
+
divCreate: {
|
|
561
|
+
class: ` h-100 d-flex align-items-center justify-content-center`,
|
|
562
|
+
style: `max-width:100vw;${document.body.clientWidth < 800 ? 'width:100%;' : 'width:400px;'};`,
|
|
563
|
+
},
|
|
564
|
+
onCreate: () => {
|
|
565
|
+
const publicKey = res.response?.responseData.publicKey;
|
|
566
|
+
const secret = res.response?.responseData.data.result.secret;
|
|
567
|
+
const env = res.response.responseData.BETA == 'true' ? 'sandbox' : 'production';
|
|
568
|
+
// res.response.result.secret
|
|
569
|
+
const PayNow = (window as any).PayNow;
|
|
570
|
+
PayNow.createPayment({
|
|
571
|
+
publicKey: publicKey,
|
|
572
|
+
secret: secret,
|
|
573
|
+
env: env,
|
|
574
|
+
});
|
|
575
|
+
PayNow.mount('#paynow-container', {
|
|
576
|
+
locale: 'zh_tw',
|
|
577
|
+
appearance: {
|
|
578
|
+
variables: {
|
|
579
|
+
fontFamily: 'monospace',
|
|
580
|
+
colorPrimary: '#0078ab',
|
|
581
|
+
colorDefault: '#0a0a0a',
|
|
582
|
+
colorBorder: '#cccccc',
|
|
583
|
+
colorPlaceholder: '#eeeeee',
|
|
584
|
+
borderRadius: '.3rem',
|
|
585
|
+
colorDanger: '#ff3d3d',
|
|
586
|
+
},
|
|
587
|
+
},
|
|
588
|
+
});
|
|
589
|
+
},
|
|
590
|
+
});
|
|
591
|
+
},
|
|
592
|
+
`paynow`,
|
|
593
|
+
{
|
|
594
|
+
animation: document.body.clientWidth > 800 ? Animation.fade : Animation.popup,
|
|
595
|
+
dismiss: () => {
|
|
596
|
+
document.body.style.setProperty('overflow-y', 'auto');
|
|
597
|
+
},
|
|
598
|
+
}
|
|
599
|
+
);
|
|
600
|
+
break;
|
|
601
|
+
}
|
|
602
|
+
default: {
|
|
477
603
|
const id = gvc.glitter.getUUID();
|
|
478
604
|
$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
|
|
479
605
|
(document.querySelector(`#${id} #submit`) as any).click();
|
|
480
606
|
}
|
|
481
607
|
}
|
|
482
608
|
}
|
|
609
|
+
|
|
483
610
|
static repay(gvc: GVC, orderData: any) {
|
|
484
611
|
const id = orderData.cart_token;
|
|
485
612
|
const dialog = new ShareDialog(gvc.glitter);
|
|
@@ -488,33 +615,11 @@ export class UMOrder {
|
|
|
488
615
|
const url = new URL(redirect as any, location.href);
|
|
489
616
|
return new Promise(() => {
|
|
490
617
|
ApiShop.repay(id, url.href).then(res => {
|
|
491
|
-
|
|
492
618
|
dialog.dataLoading({ visible: false });
|
|
493
|
-
|
|
494
|
-
|
|
619
|
+
orderData.payment_method;
|
|
620
|
+
this.executePayment(gvc, orderData.payment_method, res);
|
|
495
621
|
|
|
496
622
|
dialog.dataLoading({ visible: false });
|
|
497
|
-
switch (orderData.payment_method) {
|
|
498
|
-
case 'line_pay':
|
|
499
|
-
if (gvc.glitter.share.is_application) {
|
|
500
|
-
gvc.glitter.runJsInterFace(
|
|
501
|
-
'intent_url',
|
|
502
|
-
{
|
|
503
|
-
url: res.response.info.paymentUrl.app,
|
|
504
|
-
},
|
|
505
|
-
() => {}
|
|
506
|
-
);
|
|
507
|
-
// location.href = res.response.info.paymentUrl.app;
|
|
508
|
-
} else {
|
|
509
|
-
location.href = res.response.info.paymentUrl.web;
|
|
510
|
-
}
|
|
511
|
-
break;
|
|
512
|
-
default: {
|
|
513
|
-
const id = gvc.glitter.getUUID();
|
|
514
|
-
$('body').append(`<div id="${id}" style="display: none;">${res.response.form}</div>`);
|
|
515
|
-
(document.querySelector(`#${id} #submit`) as any).click();
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
623
|
return;
|
|
519
624
|
});
|
|
520
625
|
});
|
|
@@ -752,6 +857,15 @@ export class UMOrder {
|
|
|
752
857
|
|
|
753
858
|
static main(gvc: GVC, widget: any, subData: any) {
|
|
754
859
|
this.addStyle(gvc);
|
|
860
|
+
gvc.addMtScript(
|
|
861
|
+
[
|
|
862
|
+
{
|
|
863
|
+
src: `https://js.paynow.com.tw/sdk/v2/index.js?v=20250430`,
|
|
864
|
+
},
|
|
865
|
+
],
|
|
866
|
+
() => {},
|
|
867
|
+
() => {}
|
|
868
|
+
);
|
|
755
869
|
UmClass.addStyle(gvc);
|
|
756
870
|
const glitter = gvc.glitter;
|
|
757
871
|
const dialog = new ShareDialog(gvc.glitter);
|
|
@@ -1202,7 +1316,7 @@ export class UMOrder {
|
|
|
1202
1316
|
};
|
|
1203
1317
|
}),
|
|
1204
1318
|
content_type: 'product',
|
|
1205
|
-
eventID:orderData.orderID
|
|
1319
|
+
eventID: orderData.orderID,
|
|
1206
1320
|
});
|
|
1207
1321
|
Ad.gtagEvent('purchase', {
|
|
1208
1322
|
transaction_id: vm.data.cart_token,
|
|
@@ -1298,23 +1412,43 @@ export class UMOrder {
|
|
|
1298
1412
|
}
|
|
1299
1413
|
})(),
|
|
1300
1414
|
},
|
|
1415
|
+
{
|
|
1416
|
+
title: Language.text('payment_method'),
|
|
1417
|
+
value: Language.text(orderData.customer_info.payment_select),
|
|
1418
|
+
},
|
|
1301
1419
|
{
|
|
1302
1420
|
title: Language.text('payment_status'),
|
|
1303
1421
|
value: (() => {
|
|
1304
1422
|
if (orderData.customer_info.payment_select === 'cash_on_delivery') {
|
|
1305
1423
|
return Language.text('cash_on_delivery');
|
|
1306
1424
|
}
|
|
1425
|
+
const repayBtn = () => {
|
|
1426
|
+
return html` <span class="payment-actions ">
|
|
1427
|
+
<button
|
|
1428
|
+
class="customer-btn-text ms-3"
|
|
1429
|
+
id="repay-button"
|
|
1430
|
+
onclick="${gvc.event(() => {
|
|
1431
|
+
UMOrder.repay(gvc, vm.data).then(r => {});
|
|
1432
|
+
})}"
|
|
1433
|
+
>
|
|
1434
|
+
重新付款
|
|
1435
|
+
</button>
|
|
1436
|
+
</span>`;
|
|
1437
|
+
};
|
|
1307
1438
|
switch (vm.data.status) {
|
|
1308
1439
|
case 0:
|
|
1309
1440
|
if (repayArray.includes(vm.data?.payment_method ?? '')) {
|
|
1310
1441
|
const repayBtn = () => {
|
|
1311
|
-
return html`
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1442
|
+
return html` <span class="payment-actions d-none">
|
|
1443
|
+
<button
|
|
1444
|
+
class="customer-btn-text ms-3"
|
|
1445
|
+
id="repay-button"
|
|
1446
|
+
onclick="${gvc.event(() => {
|
|
1447
|
+
UMOrder.repay(gvc, vm.data).then(r => {});
|
|
1448
|
+
})}"
|
|
1449
|
+
>
|
|
1450
|
+
重新付款
|
|
1451
|
+
</button>
|
|
1318
1452
|
</span>`;
|
|
1319
1453
|
};
|
|
1320
1454
|
return Language.text('awaiting_verification') + repayBtn();
|
|
@@ -1325,6 +1459,9 @@ export class UMOrder {
|
|
|
1325
1459
|
case 1:
|
|
1326
1460
|
return Language.text('paid');
|
|
1327
1461
|
case -1:
|
|
1462
|
+
if (repayArray.includes(vm.data?.payment_method ?? '')) {
|
|
1463
|
+
return Language.text('payment_failed') + repayBtn();
|
|
1464
|
+
}
|
|
1328
1465
|
return Language.text('payment_failed');
|
|
1329
1466
|
case -2:
|
|
1330
1467
|
return Language.text('refunded');
|
|
@@ -1486,10 +1623,8 @@ export class UMOrder {
|
|
|
1486
1623
|
(orderData.user_info as any).area,
|
|
1487
1624
|
orderData.user_info.address,
|
|
1488
1625
|
]
|
|
1489
|
-
.filter(
|
|
1490
|
-
|
|
1491
|
-
})
|
|
1492
|
-
.join(','),
|
|
1626
|
+
.filter(Boolean)
|
|
1627
|
+
.join(''),
|
|
1493
1628
|
});
|
|
1494
1629
|
}
|
|
1495
1630
|
arr.push({
|
package/package.json
CHANGED
package/src/Language.js
CHANGED
|
@@ -471,6 +471,7 @@ class Language {
|
|
|
471
471
|
{ key: 'order_status', tw: '訂單狀態', cn: '订单状态', en: 'OrderEvent Status' },
|
|
472
472
|
{ key: 'no_number_order', tw: '無編號訂單', cn: '无编号订单', en: 'No Number OrderEvent' },
|
|
473
473
|
{ key: 'unpaid', tw: '尚未付款', cn: '尚未付款', en: 'Unpaid' },
|
|
474
|
+
{ key: 'payment_method', tw: '付款方式', cn: '付款方式', en: 'Payment Method' },
|
|
474
475
|
{ key: 'shipping', tw: '配送中', cn: '配送中', en: 'Shipping' },
|
|
475
476
|
{ key: 'delivered', tw: '已送達', cn: '已送达', en: 'Delivered' },
|
|
476
477
|
{ key: 'preparing', tw: '準備中', cn: '准备中', en: 'Preparing' },
|