@blocklet/payment-react 1.24.4 → 1.25.0

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.
Files changed (98) hide show
  1. package/es/components/auto-topup/modal.d.ts +2 -0
  2. package/es/components/auto-topup/modal.js +48 -6
  3. package/es/components/auto-topup/product-card.d.ts +16 -1
  4. package/es/components/auto-topup/product-card.js +97 -15
  5. package/es/components/dynamic-pricing-unavailable.d.ts +9 -0
  6. package/es/components/dynamic-pricing-unavailable.js +58 -0
  7. package/es/components/loading-amount.d.ts +17 -0
  8. package/es/components/loading-amount.js +46 -0
  9. package/es/components/price-change-confirm.d.ts +18 -0
  10. package/es/components/price-change-confirm.js +107 -0
  11. package/es/components/quote-details-panel.d.ts +21 -0
  12. package/es/components/quote-details-panel.js +170 -0
  13. package/es/components/quote-lock-banner.d.ts +7 -0
  14. package/es/components/quote-lock-banner.js +79 -0
  15. package/es/components/slippage-config.d.ts +20 -0
  16. package/es/components/slippage-config.js +261 -0
  17. package/es/history/invoice/list.js +125 -15
  18. package/es/hooks/dynamic-pricing.d.ts +102 -0
  19. package/es/hooks/dynamic-pricing.js +393 -0
  20. package/es/index.d.ts +6 -1
  21. package/es/index.js +9 -1
  22. package/es/libs/util.d.ts +42 -5
  23. package/es/libs/util.js +345 -57
  24. package/es/locales/en.js +114 -3
  25. package/es/locales/zh.js +114 -3
  26. package/es/payment/form/index.d.ts +4 -1
  27. package/es/payment/form/index.js +454 -22
  28. package/es/payment/index.d.ts +1 -1
  29. package/es/payment/index.js +279 -16
  30. package/es/payment/product-item.d.ts +26 -1
  31. package/es/payment/product-item.js +330 -51
  32. package/es/payment/summary-section/promotion-section.d.ts +32 -0
  33. package/es/payment/summary-section/promotion-section.js +143 -0
  34. package/es/payment/summary-section/total-section.d.ts +39 -0
  35. package/es/payment/summary-section/total-section.js +83 -0
  36. package/es/payment/summary.d.ts +17 -2
  37. package/es/payment/summary.js +300 -253
  38. package/es/types/index.d.ts +11 -0
  39. package/lib/components/auto-topup/modal.d.ts +2 -0
  40. package/lib/components/auto-topup/modal.js +54 -6
  41. package/lib/components/auto-topup/product-card.d.ts +16 -1
  42. package/lib/components/auto-topup/product-card.js +75 -7
  43. package/lib/components/dynamic-pricing-unavailable.d.ts +9 -0
  44. package/lib/components/dynamic-pricing-unavailable.js +81 -0
  45. package/lib/components/loading-amount.d.ts +17 -0
  46. package/lib/components/loading-amount.js +53 -0
  47. package/lib/components/price-change-confirm.d.ts +18 -0
  48. package/lib/components/price-change-confirm.js +157 -0
  49. package/lib/components/quote-details-panel.d.ts +21 -0
  50. package/lib/components/quote-details-panel.js +226 -0
  51. package/lib/components/quote-lock-banner.d.ts +7 -0
  52. package/lib/components/quote-lock-banner.js +93 -0
  53. package/lib/components/slippage-config.d.ts +20 -0
  54. package/lib/components/slippage-config.js +316 -0
  55. package/lib/history/invoice/list.js +167 -27
  56. package/lib/hooks/dynamic-pricing.d.ts +102 -0
  57. package/lib/hooks/dynamic-pricing.js +390 -0
  58. package/lib/index.d.ts +6 -1
  59. package/lib/index.js +32 -0
  60. package/lib/libs/util.d.ts +42 -5
  61. package/lib/libs/util.js +367 -49
  62. package/lib/locales/en.js +114 -3
  63. package/lib/locales/zh.js +114 -3
  64. package/lib/payment/form/index.d.ts +4 -1
  65. package/lib/payment/form/index.js +476 -20
  66. package/lib/payment/index.d.ts +1 -1
  67. package/lib/payment/index.js +308 -14
  68. package/lib/payment/product-item.d.ts +26 -1
  69. package/lib/payment/product-item.js +270 -35
  70. package/lib/payment/summary-section/promotion-section.d.ts +32 -0
  71. package/lib/payment/summary-section/promotion-section.js +133 -0
  72. package/lib/payment/summary-section/total-section.d.ts +39 -0
  73. package/lib/payment/summary-section/total-section.js +117 -0
  74. package/lib/payment/summary.d.ts +17 -2
  75. package/lib/payment/summary.js +205 -127
  76. package/lib/types/index.d.ts +11 -0
  77. package/package.json +3 -3
  78. package/src/components/auto-topup/modal.tsx +59 -6
  79. package/src/components/auto-topup/product-card.tsx +118 -11
  80. package/src/components/dynamic-pricing-unavailable.tsx +69 -0
  81. package/src/components/loading-amount.tsx +66 -0
  82. package/src/components/price-change-confirm.tsx +136 -0
  83. package/src/components/quote-details-panel.tsx +218 -0
  84. package/src/components/quote-lock-banner.tsx +99 -0
  85. package/src/components/slippage-config.tsx +336 -0
  86. package/src/history/invoice/list.tsx +143 -9
  87. package/src/hooks/dynamic-pricing.ts +617 -0
  88. package/src/index.ts +9 -0
  89. package/src/libs/util.ts +473 -58
  90. package/src/locales/en.tsx +117 -0
  91. package/src/locales/zh.tsx +111 -0
  92. package/src/payment/form/index.tsx +561 -19
  93. package/src/payment/index.tsx +349 -10
  94. package/src/payment/product-item.tsx +451 -37
  95. package/src/payment/summary-section/promotion-section.tsx +172 -0
  96. package/src/payment/summary-section/total-section.tsx +141 -0
  97. package/src/payment/summary.tsx +334 -192
  98. package/src/types/index.ts +15 -0
@@ -144,6 +144,7 @@ export default flat({
144
144
  submit: 'Submit',
145
145
  expired: 'Expired',
146
146
  consumed: 'Consumed',
147
+ nextCharge: 'Next charge',
147
148
  },
148
149
  payment: {
149
150
  checkout: {
@@ -168,6 +169,77 @@ export default flat({
168
169
  view: 'View',
169
170
  },
170
171
  paymentRequired: 'Payment Required',
172
+ quote: {
173
+ title: 'Price Locked',
174
+ locked: 'Exchange rate locked',
175
+ expired: 'Quote updating...',
176
+ expiredMessage: 'Quote updating...',
177
+ expiring: 'Quote updating...',
178
+ remaining: 'Quote updates in {time}',
179
+ currentRate: 'Current Exchange Rate',
180
+ expiresIn: 'Updates in',
181
+ exchangeRate: 'Exchange Rate',
182
+ provider: 'Provider',
183
+ source: 'Source',
184
+ dynamicItems: 'Dynamic Pricing Items',
185
+ dynamicPricingInfo: 'Dynamic pricing: 1 {symbol} = {rate} {currency}',
186
+ referenceUnavailable: 'Reference price will update shortly.',
187
+ rateLine: '1 {symbol} ≈ {rate}',
188
+ validity: 'Quote valid: {time}',
189
+ lockedWithTime: 'Price locked: {time}',
190
+ lockExpired: 'Price lock expired. Please re-confirm.',
191
+ detailProvider: 'Provider',
192
+ detailUpdatedAt: 'Last updated',
193
+ detailValidity: 'Quote validity',
194
+ detailLock: 'Price lock',
195
+ detailPriceImpact: 'Price impact',
196
+ detailSlippage: 'Slippage limit',
197
+ detailRefresh: 'Refresh quote',
198
+ slippage: {
199
+ title: 'Slippage Limit',
200
+ tooltip:
201
+ 'Set the minimum exchange rate you are willing to accept. If the rate falls below this value at payment time, the transaction will be rejected.',
202
+ percentMode: 'Percentage',
203
+ rateMode: 'Exact Rate',
204
+ invalid: 'Please enter a valid value',
205
+ invalidPositive: 'Please enter a value greater than 0',
206
+ rateRequired: 'Exchange rate information required',
207
+ invalidRate: 'Invalid exchange rate value',
208
+ minAcceptableRate: 'Minimum Acceptable Rate',
209
+ maxPayableIncrease: 'Maximum Payment Increase',
210
+ percentInputLabel: 'Slippage Percentage',
211
+ rateInputLabel: 'Minimum Acceptable Rate ({currency})',
212
+ minRateHint: 'Minimum acceptable rate: {rate} {currency}',
213
+ maxPayableHint: 'Maximum payment increase: +{percent}%',
214
+ },
215
+ slippageLimit: {
216
+ title: 'Slippage Limit Configuration',
217
+ description:
218
+ 'Set the minimum exchange rate you are willing to accept. If the rate falls below this value, the transaction will pause and ask for your confirmation.',
219
+ configTogglePercent: 'Percentage',
220
+ configToggleRate: 'Exact Rate',
221
+ recommended: 'Recommended',
222
+ derivedCurrentRate: 'Current reference rate',
223
+ derivedMinRate: 'Minimum acceptable rate',
224
+ },
225
+ rateUpdateLine: '1 {symbol} ≈ {rate} · updates in {time}',
226
+ updateHint: 'Prices will auto-refresh after update.',
227
+ lockExpiredTitle: 'Price lock expired',
228
+ lockExpiredDescription: 'The lock window has ended. Please re-confirm the latest price.',
229
+ lockExpiredConfirm: 'Re-lock price',
230
+ slippageExceededTitle: 'Rate below slippage limit',
231
+ slippageExceededDescription:
232
+ 'The current rate is below your minimum acceptable rate. Please refresh the quote and try again.',
233
+ updated: {
234
+ pleaseRetry: 'Price updated, please resubmit',
235
+ },
236
+ priceUpdatedTitle: 'Price updated',
237
+ priceUpdatedDescriptionRate: 'Due to TBA exchange rate changes, the amount has been recalculated.',
238
+ priceUpdatedDescriptionRecalc: 'The amount has been recalculated.',
239
+ priceUpdatedNewTotalLabel: 'Updated total',
240
+ priceUpdatedOldTotal: 'Previous total: {total}',
241
+ priceUpdatedConfirm: 'Confirm and continue',
242
+ },
171
243
  staking: {
172
244
  title: 'Staking Required',
173
245
  tooltip:
@@ -236,6 +308,14 @@ export default flat({
236
308
  },
237
309
  arcSphereToast: 'Successfully installed, three seconds to return to the page continue...',
238
310
  },
311
+ priceChange: {
312
+ unavailable: 'Unable to fetch exchange rate. Please try again later.',
313
+ unstable: 'Price is volatile. Please try again later.',
314
+ title: 'Price Changed',
315
+ description: 'Price changed significantly. Please refresh the quote and try again.',
316
+ action: 'Refresh Quote',
317
+ cancel: 'Cancel',
318
+ },
239
319
  confirm: {
240
320
  withStake:
241
321
  'By confirming, you allow {payee} to charge your account for future payments and, if necessary, slash your stake. You can cancel your subscription or withdraw your stake at any time.',
@@ -271,6 +351,7 @@ export default flat({
271
351
  add: 'Add to order',
272
352
  remove: 'Remove from order',
273
353
  },
354
+ dynamicPricing: 'Dynamic Price',
274
355
  credit: {
275
356
  normal: {
276
357
  oneTime: 'Purchase {amount}.',
@@ -420,6 +501,13 @@ export default flat({
420
501
  maxAttemptsPlaceholder: '0 means unlimited',
421
502
  maxAttemptsDescription: 'The maximum number of top-up attempts you can make each day, 0 means unlimited',
422
503
  },
504
+ dynamicPricing: {
505
+ title: 'Dynamic Pricing',
506
+ currentRate: 'Current Exchange Rate',
507
+ slippageTolerance: 'Slippage Tolerance',
508
+ minAcceptableRate: 'Min Acceptable Rate',
509
+ configureSlippage: 'Configure Slippage',
510
+ },
423
511
  },
424
512
  customer: {
425
513
  payments: 'Payment History',
@@ -498,6 +586,9 @@ export default flat({
498
586
  completed:
499
587
  'Your payment method has been successfully updated, all future payments will use the new payment method unless you change it again.',
500
588
  title: 'Payment Method Change',
589
+ reauthorizationRequired: 'Slippage settings updated. Re-authorization required to ensure sufficient allowance.',
590
+ reauthorizationTitle: 'Re-authorize Payment',
591
+ reauthorizationCompleted: 'Payment authorization has been successfully updated.',
501
592
  },
502
593
  invoice: {
503
594
  summary: 'Summary',
@@ -523,6 +614,9 @@ export default flat({
523
614
  invoiceNumber: 'Invoice Number',
524
615
  emptyList: 'No Invoices',
525
616
  noPaymentRequired: 'No Payment Required',
617
+ slippageExceeded: 'Slippage Exceeded',
618
+ slippageExceededDetail:
619
+ 'Exchange rate slippage exceeded threshold, auto-payment failed. Current rate {currentRate}, minimum acceptable {minRate}',
526
620
  payBatch: 'Pay Due Invoices',
527
621
  stripePayDescription: 'Complete payment using your saved payment method or add a new one.',
528
622
  amount: 'Amount',
@@ -530,8 +624,23 @@ export default flat({
530
624
  paymentConfirmDescription:
531
625
  'After completing this payment, the payment method you use will be automatically set as the default for this subscription. Additionally, we will retry payment for any other unpaid invoices associated with this subscription.',
532
626
  continue: 'Continue',
627
+ priceChanged:
628
+ 'The exchange rate has changed by {percent}%. The payment amount will be updated. Do you want to continue?',
629
+ paymentCancelled: 'Payment cancelled',
533
630
  credit: 'Credit',
534
631
  creditRefresh: 'Refresh every {interval} {unit}',
632
+ quote: {
633
+ exchangeRate: 'Exchange Rate',
634
+ baseAmount: 'Base Amount',
635
+ providers: 'Providers',
636
+ rateTimestamp: 'Rate Timestamp',
637
+ consensusMethod: 'Consensus',
638
+ rateStatus: 'Rate Status',
639
+ rateStatusNormal: 'Normal',
640
+ rateStatusDegraded: 'Degraded',
641
+ slippage: 'Slippage',
642
+ atPaymentRate: '(at payment rate {rate})',
643
+ },
535
644
  },
536
645
  overduePayment: {
537
646
  setupPaymentDescription: 'Use your saved card or add a new one to complete payment via Stripe.',
@@ -611,6 +720,14 @@ export default flat({
611
720
  processing: 'Processing',
612
721
  },
613
722
  },
723
+ dynamicPricing: {
724
+ unavailable: {
725
+ title: 'Unable to Calculate Real-Time Price',
726
+ message:
727
+ 'Exchange rate service is currently unavailable. Products with dynamic pricing cannot be purchased at this moment.',
728
+ retry: 'Retry',
729
+ },
730
+ },
614
731
  },
615
732
  refund: {
616
733
  type: {
@@ -144,6 +144,7 @@ export default flat({
144
144
  submit: '提交',
145
145
  expired: '已过期',
146
146
  consumed: '已消费',
147
+ nextCharge: '下次扣款',
147
148
  },
148
149
  payment: {
149
150
  checkout: {
@@ -168,6 +169,74 @@ export default flat({
168
169
  view: '查看',
169
170
  },
170
171
  paymentRequired: '支付金额',
172
+ quote: {
173
+ title: '价格已锁定',
174
+ locked: '汇率已锁定',
175
+ expired: '报价更新中…',
176
+ expiredMessage: '报价更新中…',
177
+ expiring: '报价更新中…',
178
+ remaining: '报价将在 {time} 后更新',
179
+ currentRate: '当前汇率',
180
+ expiresIn: '更新时间',
181
+ exchangeRate: '汇率',
182
+ provider: '数据提供方',
183
+ source: '数据来源',
184
+ dynamicItems: '动态定价商品',
185
+ dynamicPricingInfo: '动态计价:1 {symbol} = {rate} {currency}',
186
+ referenceUnavailable: '稍后更新',
187
+ rateLine: '1 {symbol} ≈ {rate}',
188
+ validity: '报价有效期:{time}',
189
+ lockedWithTime: '价格已锁定:{time}',
190
+ lockExpired: '价格锁定已过期,请重新确认',
191
+ detailProvider: '数据源',
192
+ detailUpdatedAt: '最近更新',
193
+ detailValidity: '报价有效期',
194
+ detailLock: '锁价剩余',
195
+ detailPriceImpact: '价格影响',
196
+ detailSlippage: '滑点下限',
197
+ detailRefresh: '刷新报价',
198
+ slippage: {
199
+ title: '滑点下限',
200
+ tooltip: '设置您愿意接受的最低汇率。支付时汇率低于此值,交易将被拒绝。',
201
+ percentMode: '百分比',
202
+ rateMode: '精确汇率',
203
+ invalid: '请输入有效的数值',
204
+ invalidPositive: '请输入大于 0 的数值',
205
+ rateRequired: '需要汇率信息',
206
+ invalidRate: '无效的汇率值',
207
+ minAcceptableRate: '最低可接受汇率',
208
+ maxPayableIncrease: '最大支付增幅',
209
+ percentInputLabel: '滑点百分比',
210
+ rateInputLabel: '最低可接受汇率 ({currency})',
211
+ minRateHint: '最低可接受汇率: {rate} {currency}',
212
+ maxPayableHint: '最大支付增幅: +{percent}%',
213
+ },
214
+ slippageLimit: {
215
+ title: '滑点下限配置',
216
+ description: '设置您愿意接受的最低汇率。支付时汇率低于此值,交易将被暂停并提示您确认。',
217
+ configTogglePercent: '百分比',
218
+ configToggleRate: '精确汇率',
219
+ recommended: '推荐',
220
+ derivedCurrentRate: '当前参考汇率',
221
+ derivedMinRate: '最低可接受汇率',
222
+ },
223
+ rateUpdateLine: '1 {symbol} ≈ {rate} · {time} 后自动更新',
224
+ updateHint: '更新后将自动刷新价格',
225
+ lockExpiredTitle: '价格已过期',
226
+ lockExpiredDescription: '锁定时间已结束,请重新确认价格后继续支付。',
227
+ lockExpiredConfirm: '重新锁定价格',
228
+ slippageExceededTitle: '汇率低于滑点下限',
229
+ slippageExceededDescription: '当前汇率低于您设置的最低可接受汇率。请刷新报价后重试。',
230
+ updated: {
231
+ pleaseRetry: '价格已更新,请重新提交',
232
+ },
233
+ priceUpdatedTitle: '价格已更新',
234
+ priceUpdatedDescriptionRate: '由于 TBA 汇率变化,系统已重新计算本次金额。',
235
+ priceUpdatedDescriptionRecalc: '系统已重新计算本次金额。',
236
+ priceUpdatedNewTotalLabel: '更新后总计',
237
+ priceUpdatedOldTotal: '原总计:{total}',
238
+ priceUpdatedConfirm: '确认并继续支付',
239
+ },
171
240
  staking: {
172
241
  title: '质押金额',
173
242
  tooltip: '质押相当于保证金,用于确保未来的账单能够正常扣款,如果你从 DID Wallet 撤销质押,订阅也会被取消。',
@@ -234,6 +303,14 @@ export default flat({
234
303
  },
235
304
  arcSphereToast: '支付并安装成功,三秒后返回页面继续...',
236
305
  },
306
+ priceChange: {
307
+ unavailable: '无法获取汇率,请稍后重试。',
308
+ unstable: '当前汇率波动较大,请稍后重试。',
309
+ title: '汇率变化',
310
+ description: '汇率变化较大,请刷新报价后重试。',
311
+ action: '刷新报价',
312
+ cancel: '取消',
313
+ },
237
314
  confirm: {
238
315
  withStake:
239
316
  '确认订阅,即表示您授权 {payee} 从您的账户扣取未来款项,并在必要时罚没质押。您可随时取消订阅或撤销质押。',
@@ -276,6 +353,7 @@ export default flat({
276
353
  add: '添加到订单',
277
354
  remove: '从订单移除',
278
355
  },
356
+ dynamicPricing: '动态定价',
279
357
  promotion: {
280
358
  add_code: '添加促销码',
281
359
  enter_code: '输入促销码',
@@ -414,6 +492,13 @@ export default flat({
414
492
  maxAttemptsPlaceholder: '0表示无限制',
415
493
  maxAttemptsDescription: '每日可充值的最大次数,0 表示无限制',
416
494
  },
495
+ dynamicPricing: {
496
+ title: '动态定价',
497
+ currentRate: '当前汇率',
498
+ slippageTolerance: '滑点容差',
499
+ minAcceptableRate: '最低可接受汇率',
500
+ configureSlippage: '配置滑点',
501
+ },
417
502
  },
418
503
  customer: {
419
504
  payments: '支付历史',
@@ -486,6 +571,9 @@ export default flat({
486
571
  confirm: '确认变更方式意味着你允许 {payee} 使用新的支付方式支付你的未来账单。你可以随时再次变更支付方式。',
487
572
  completed: '你的支付方式 已经更新成功。你可以在你的账户中查看此支付方式的详细信息。',
488
573
  title: '支付方式变更',
574
+ reauthorizationRequired: '滑点设置已更新。需要重新授权以确保授权金额充足。',
575
+ reauthorizationTitle: '重新授权支付',
576
+ reauthorizationCompleted: '支付授权已成功更新。',
489
577
  },
490
578
  invoice: {
491
579
  summary: '摘要',
@@ -511,13 +599,29 @@ export default flat({
511
599
  invoiceNumber: '账单编号',
512
600
  emptyList: '没有账单',
513
601
  noPaymentRequired: '无需支付',
602
+ slippageExceeded: '滑点超限',
603
+ slippageExceededDetail: '汇率滑点超过下限,无法自动扣款。当前汇率 {currentRate},最低可接受 {minRate}',
514
604
  payBatch: '支付欠款',
515
605
  paymentConfirmTitle: '支付确认',
516
606
  paymentConfirmDescription:
517
607
  '完成本次支付后,您使用的支付方式将自动设置为该订阅的默认支付方式。此外,我们还将对该订阅的其他欠费账单进行重试收费。',
518
608
  continue: '继续',
609
+ priceChanged: '汇率已变动 {percent}%。支付金额将会更新,是否继续?',
610
+ paymentCancelled: '支付已取消',
519
611
  credit: '额度',
520
612
  creditRefresh: '每{interval}{unit}刷新',
613
+ quote: {
614
+ exchangeRate: '汇率',
615
+ baseAmount: 'USD 本位金额',
616
+ providers: '数据源',
617
+ rateTimestamp: '汇率时间',
618
+ consensusMethod: '汇率算法',
619
+ rateStatus: '汇率状态',
620
+ rateStatusNormal: '正常',
621
+ rateStatusDegraded: '降级',
622
+ slippage: '滑点',
623
+ atPaymentRate: '(按支付时汇率 {rate})',
624
+ },
521
625
  },
522
626
  payment: {
523
627
  empty: '没有支付记录',
@@ -592,6 +696,13 @@ export default flat({
592
696
  processing: '支付中',
593
697
  },
594
698
  },
699
+ dynamicPricing: {
700
+ unavailable: {
701
+ title: '暂时无法计算实时价格',
702
+ message: '当前汇率服务不可用,基于动态定价的商品暂时无法购买。',
703
+ retry: '重试',
704
+ },
705
+ },
595
706
  },
596
707
  refund: {
597
708
  type: {