@plyaz/types 1.14.8 → 1.14.10

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.
@@ -559,6 +559,20 @@ var ERROR_CATEGORY = {
559
559
  Template: "template",
560
560
  /** Configuration-related error (e.g., invalid or missing configuration). */
561
561
  Configuration: "configuration",
562
+ /** Payment processing-related error (e.g., capture or settlement failure). */
563
+ Processing: "processing",
564
+ /** Fraud detection or prevention failure. */
565
+ Fraud: "fraud",
566
+ /** Compliance-related error (e.g., AML/KYC validation failure). */
567
+ Compliance: "compliance",
568
+ /** Limits or quota-related error (e.g., exceeded transaction limit). */
569
+ Limits: "limits",
570
+ /** System-level error (unexpected internal issue). */
571
+ System: "system",
572
+ /** Refund-related error (e.g., duplicate or failed refund). */
573
+ Refund: "refund",
574
+ /** Security-related error (e.g., encryption or signature failure). */
575
+ Security: "security",
562
576
  /** Unknown or unclassified error. */
563
577
  Unknown: "unknown"
564
578
  };
@@ -617,6 +631,13 @@ var INTERNAL_STATUS_CODES = {
617
631
  [ERROR_CATEGORY.Webhook]: "webhook",
618
632
  [ERROR_CATEGORY.Template]: "template",
619
633
  [ERROR_CATEGORY.Configuration]: "configuration",
634
+ [ERROR_CATEGORY.Processing]: "processing",
635
+ [ERROR_CATEGORY.Fraud]: "fraud",
636
+ [ERROR_CATEGORY.Compliance]: "compliance",
637
+ [ERROR_CATEGORY.Limits]: "limits",
638
+ [ERROR_CATEGORY.System]: "system",
639
+ [ERROR_CATEGORY.Refund]: "refund",
640
+ [ERROR_CATEGORY.Security]: "security",
620
641
  [ERROR_CATEGORY.Unknown]: "unknown"
621
642
  });
622
643
  var COMMON_OPERATIONS = {
@@ -740,6 +761,10 @@ var HTTP_STATUS = {
740
761
  * 409 Conflict - The request conflicts with the current state of the server
741
762
  */
742
763
  CONFLICT: 409,
764
+ /**
765
+ * 422 Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors
766
+ */
767
+ UNPROCESSABLE_ENTITY: 422,
743
768
  /**
744
769
  * 429 Too Many Requests - The user has sent too many requests in a given amount of time
745
770
  */
@@ -986,7 +1011,86 @@ var ERROR_CODES = {
986
1011
  DB_INVALID_SHELL_ARG: "DB_INVALID_SHELL_ARG",
987
1012
  DB_INVALID_BETWEEN_OPERATOR: "DB_INVALID_BETWEEN_OPERATOR",
988
1013
  DB_INVALID_IN_OPERATOR: "DB_INVALID_IN_OPERATOR",
989
- DB_INVALID_COUNT: "DB_INVALID_COUNT"
1014
+ DB_INVALID_COUNT: "DB_INVALID_COUNT",
1015
+ // ===== Payments Package Errors =====
1016
+ // Refund
1017
+ PAYMENT_REFUND_FAILED: "payment.refund.failed",
1018
+ PAYMENT_REFUND_NOT_FOUND: "payment.refund.not.found",
1019
+ PAYMENT_REFUND_ALREADY_PROCESSED: "payment.refund.already.processed",
1020
+ PAYMENT_REFUND_AMOUNT_INVALID: "payment.refund.amount.invalid",
1021
+ PAYMENT_REFUND_VALIDATION_FAILED: "payment.refund.validation.failed",
1022
+ PAYMENT_REFUND_TIMEOUT: "payment.refund.timeout",
1023
+ // Provider
1024
+ PAYMENT_PROVIDER_ERROR: "payment.provider.error",
1025
+ PAYMENT_PROVIDER_UNAVAILABLE: "payment.provider.unavailable",
1026
+ PAYMENT_PROVIDER_CONFIGURATION_INVALID: "payment.provider.configuration.invalid",
1027
+ PAYMENT_PROVIDER_RESPONSE_INVALID: "payment.provider.response.invalid",
1028
+ PAYMENT_PROVIDER_TIMEOUT: "payment.provider.timeout",
1029
+ PAYMENT_PROVIDER_AUTH_FAILED: "payment.provider.auth.failed",
1030
+ // Compliance
1031
+ PAYMENT_COMPLIANCE_VIOLATION: "payment.compliance.violation",
1032
+ PAYMENT_COMPLIANCE_CHECK_FAILED: "payment.compliance.check.failed",
1033
+ PAYMENT_COMPLIANCE_LIMIT_EXCEEDED: "payment.compliance.limit.exceeded",
1034
+ PAYMENT_COMPLIANCE_POLICY_MISSING: "payment.compliance.policy.missing",
1035
+ // Processing
1036
+ PAYMENT_PROCESSING_FAILED: "payment.processing.failed",
1037
+ PAYMENT_PROCESSING_TIMEOUT: "payment.processing.timeout",
1038
+ PAYMENT_PROCESSING_GATEWAY_ERROR: "payment.processing.gateway.error",
1039
+ PAYMENT_PROCESSING_DUPLICATE: "payment.processing.duplicate",
1040
+ PAYMENT_PROCESSING_UNEXPECTED_STATE: "payment.processing.unexpected.state",
1041
+ // Security
1042
+ PAYMENT_SECURITY_VIOLATION: "payment.security.violation",
1043
+ PAYMENT_SECURITY_SIGNATURE_INVALID: "payment.security.signature.invalid",
1044
+ PAYMENT_SECURITY_ENCRYPTION_FAILED: "payment.security.encryption.failed",
1045
+ PAYMENT_SECURITY_FRAUD_DETECTED: "payment.security.fraud.detected",
1046
+ PAYMENT_SECURITY_TOKEN_INVALID: "payment.security.token.invalid",
1047
+ // Validation
1048
+ PAYMENT_VALIDATION_FAILED: "payment.validation.failed",
1049
+ PAYMENT_VALIDATION_AMOUNT_INVALID: "payment.validation.amount.invalid",
1050
+ PAYMENT_VALIDATION_CURRENCY_UNSUPPORTED: "payment.validation.currency.unsupported",
1051
+ PAYMENT_VALIDATION_METADATA_INVALID: "payment.validation.metadata.invalid",
1052
+ PAYMENT_VALIDATION_MISSING_REQUIRED_FIELD: "payment.validation.field.required",
1053
+ // Webhook
1054
+ PAYMENT_WEBHOOK_SIGNATURE_INVALID: "payment.webhook.signature.invalid",
1055
+ PAYMENT_WEBHOOK_PROCESSING_FAILED: "payment.webhook.processing.failed",
1056
+ PAYMENT_WEBHOOK_VALIDATION_FAILED: "payment.webhook.validation.failed",
1057
+ PAYMENT_WEBHOOK_EVENT_TYPE_UNSUPPORTED: "payment.webhook.event.type.unsupported",
1058
+ PAYMENT_WEBHOOK_HANDLER_NOT_FOUND: "payment.webhook.handler.not.found",
1059
+ // ===== Payment Adapter & Core Errors =====
1060
+ PAYMENT_ADAPTER_INIT_FAILED: "payment.adapter.init.failed",
1061
+ PAYMENT_ADAPTER_SHUTDOWN_ERROR: "payment.adapter.shutdown.error",
1062
+ PAYMENT_ADAPTER_HMAC_COMPUTATION_FAILED: "payment.adapter.hmac.computation.failed",
1063
+ PAYMENT_ADAPTER_MISSING_PROVIDER: "payment.adapter.missing.provider",
1064
+ PAYMENT_ADAPTER_MISSING_ENVIRONMENT: "payment.adapter.missing.environment",
1065
+ PAYMENT_ADAPTER_MISSING_CREDENTIALS: "payment.adapter.missing.credentials",
1066
+ PAYMENT_ADAPTER_MISSING_WEBHOOK_URL: "payment.adapter.missing.webhook.url",
1067
+ PAYMENT_ADAPTER_MISSING_UNREGISTER_ENDPOINT: "payment.adapter.missing.unregister.endpoint",
1068
+ PAYMENT_ADAPTER_UNSUPPORTED_OPERATION: "payment.adapter.unsupported.operation",
1069
+ PAYMENT_ADAPTER_RESPONSE_MAPPING_FAILED: "payment.adapter.response.mapping.failed",
1070
+ // Idempotency & State Management
1071
+ PAYMENT_IDEMPOTENCY_VIOLATION: "payment.idempotency.violation",
1072
+ PAYMENT_IDEMPOTENCY_KEY_MISSING: "payment.idempotency.key.missing",
1073
+ PAYMENT_IDEMPOTENCY_STORE_ERROR: "payment.idempotency.store.error",
1074
+ // Routing & Strategy
1075
+ PAYMENT_ROUTING_FAILED: "payment.routing.failed",
1076
+ PAYMENT_ROUTING_CONFIGURATION_INVALID: "payment.routing.configuration.invalid",
1077
+ PAYMENT_ROUTING_PROVIDER_UNAVAILABLE: "payment.routing.provider.unavailable",
1078
+ PAYMENT_ROUTING_RETRY_EXCEEDED: "payment.routing.retry.exceeded",
1079
+ // General Payment Framework Errors
1080
+ PAYMENT_SYSTEM_NOT_INITIALIZED: "payment.system.not.initialized",
1081
+ PAYMENT_CONTEXT_OPERATION_FAILED: "payment.context.operation.failed",
1082
+ PAYMENT_INTERNAL_ERROR: "payment.internal.error",
1083
+ PAYMENT_UNKNOWN_ERROR: "payment.unknown.error",
1084
+ /**
1085
+ * Thrown when an event could not be emitted due to internal state or creation errors.
1086
+ * Typically non-retryable, indicates a logic or validation fault.
1087
+ */
1088
+ PAYMENT_EVENT_EMIT_FAILED: "PAYMENT_EVENT_EMIT_FAILED",
1089
+ PAYMENT_EVENT_INVALID_TYPE: "PAYMENT_EVENT_INVALID_TYPE",
1090
+ PAYMENT_EVENT_CREATION_FAILED: "PAYMENT_EVENT_CREATION_FAILED",
1091
+ PAYMENT_EVENT_HANDLER_TIMEOUT: "PAYMENT_EVENT_HANDLER_TIMEOUT",
1092
+ PAYMENT_EVENT_HANDLER_INVALID_RESULT: "PAYMENT_EVENT_HANDLER_INVALID_RESULT",
1093
+ PAYMENT_EVENT_LIFECYCLE_FAILURE: "PAYMENT_EVENT_LIFECYCLE_FAILURE"
990
1094
  };
991
1095
  var API_ERROR_CODES = {
992
1096
  CLIENT_INITIALIZATION_FAILED: ERROR_CODES.CLIENT_INITIALIZATION_FAILED,
@@ -2442,6 +2546,433 @@ var ERROR_DEFINITIONS = {
2442
2546
  category: ERROR_CATEGORY.Server,
2443
2547
  userMessage: "db.file.s3_upload_failed",
2444
2548
  severity: ERROR_SEVERITY.High,
2549
+ retryable: false
2550
+ },
2551
+ // ===== Payments Package Error Definitions =====
2552
+ // ===== Refund Errors =====
2553
+ [ERROR_CODES.PAYMENT_REFUND_FAILED]: {
2554
+ code: ERROR_CODES.PAYMENT_REFUND_FAILED,
2555
+ status: HTTP_STATUS.BAD_REQUEST,
2556
+ category: ERROR_CATEGORY.Refund,
2557
+ userMessage: "errors.payment.refund.failed",
2558
+ severity: ERROR_SEVERITY.High,
2559
+ retryable: false
2560
+ },
2561
+ [ERROR_CODES.PAYMENT_REFUND_NOT_FOUND]: {
2562
+ code: ERROR_CODES.PAYMENT_REFUND_NOT_FOUND,
2563
+ status: HTTP_STATUS.NOT_FOUND,
2564
+ category: ERROR_CATEGORY.Refund,
2565
+ userMessage: "errors.payment.refund.not_found",
2566
+ severity: ERROR_SEVERITY.Medium,
2567
+ retryable: false
2568
+ },
2569
+ [ERROR_CODES.PAYMENT_REFUND_ALREADY_PROCESSED]: {
2570
+ code: ERROR_CODES.PAYMENT_REFUND_ALREADY_PROCESSED,
2571
+ status: HTTP_STATUS.CONFLICT,
2572
+ category: ERROR_CATEGORY.Refund,
2573
+ userMessage: "errors.payment.refund.already_processed",
2574
+ severity: ERROR_SEVERITY.Low,
2575
+ retryable: false
2576
+ },
2577
+ [ERROR_CODES.PAYMENT_REFUND_AMOUNT_INVALID]: {
2578
+ code: ERROR_CODES.PAYMENT_REFUND_AMOUNT_INVALID,
2579
+ status: HTTP_STATUS.BAD_REQUEST,
2580
+ category: ERROR_CATEGORY.Validation,
2581
+ userMessage: "errors.payment.refund.amount_invalid",
2582
+ severity: ERROR_SEVERITY.Medium,
2583
+ retryable: false
2584
+ },
2585
+ [ERROR_CODES.PAYMENT_REFUND_VALIDATION_FAILED]: {
2586
+ code: ERROR_CODES.PAYMENT_REFUND_VALIDATION_FAILED,
2587
+ status: HTTP_STATUS.UNPROCESSABLE_ENTITY,
2588
+ category: ERROR_CATEGORY.Validation,
2589
+ userMessage: "errors.payment.refund.validation_failed",
2590
+ severity: ERROR_SEVERITY.Medium,
2591
+ retryable: false
2592
+ },
2593
+ [ERROR_CODES.PAYMENT_REFUND_TIMEOUT]: {
2594
+ code: ERROR_CODES.PAYMENT_REFUND_TIMEOUT,
2595
+ status: HTTP_STATUS.REQUEST_TIMEOUT,
2596
+ category: ERROR_CATEGORY.Timeout,
2597
+ userMessage: "errors.payment.refund.timeout",
2598
+ severity: ERROR_SEVERITY.High,
2599
+ retryable: true
2600
+ },
2601
+ // ===== Provider Errors =====
2602
+ [ERROR_CODES.PAYMENT_PROVIDER_ERROR]: {
2603
+ code: ERROR_CODES.PAYMENT_PROVIDER_ERROR,
2604
+ status: HTTP_STATUS.BAD_GATEWAY,
2605
+ category: ERROR_CATEGORY.Provider,
2606
+ userMessage: "errors.payment.provider.generic",
2607
+ severity: ERROR_SEVERITY.High,
2608
+ retryable: true
2609
+ },
2610
+ [ERROR_CODES.PAYMENT_PROVIDER_UNAVAILABLE]: {
2611
+ code: ERROR_CODES.PAYMENT_PROVIDER_UNAVAILABLE,
2612
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2613
+ category: ERROR_CATEGORY.Provider,
2614
+ userMessage: "errors.payment.provider.unavailable",
2615
+ severity: ERROR_SEVERITY.Critical,
2616
+ retryable: true
2617
+ },
2618
+ [ERROR_CODES.PAYMENT_PROVIDER_CONFIGURATION_INVALID]: {
2619
+ code: ERROR_CODES.PAYMENT_PROVIDER_CONFIGURATION_INVALID,
2620
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2621
+ category: ERROR_CATEGORY.Configuration,
2622
+ userMessage: "errors.payment.provider.invalid_config",
2623
+ severity: ERROR_SEVERITY.Critical,
2624
+ retryable: false
2625
+ },
2626
+ [ERROR_CODES.PAYMENT_PROVIDER_RESPONSE_INVALID]: {
2627
+ code: ERROR_CODES.PAYMENT_PROVIDER_RESPONSE_INVALID,
2628
+ status: HTTP_STATUS.BAD_GATEWAY,
2629
+ category: ERROR_CATEGORY.Provider,
2630
+ userMessage: "errors.payment.provider.invalid_response",
2631
+ severity: ERROR_SEVERITY.High,
2632
+ retryable: false
2633
+ },
2634
+ [ERROR_CODES.PAYMENT_PROVIDER_TIMEOUT]: {
2635
+ code: ERROR_CODES.PAYMENT_PROVIDER_TIMEOUT,
2636
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2637
+ category: ERROR_CATEGORY.Timeout,
2638
+ userMessage: "errors.payment.provider.timeout",
2639
+ severity: ERROR_SEVERITY.High,
2640
+ retryable: true
2641
+ },
2642
+ [ERROR_CODES.PAYMENT_PROVIDER_AUTH_FAILED]: {
2643
+ code: ERROR_CODES.PAYMENT_PROVIDER_AUTH_FAILED,
2644
+ status: HTTP_STATUS.UNAUTHORIZED,
2645
+ category: ERROR_CATEGORY.Authentication,
2646
+ userMessage: "errors.payment.provider.auth_failed",
2647
+ severity: ERROR_SEVERITY.Medium,
2648
+ retryable: false
2649
+ },
2650
+ // ===== Compliance Errors =====
2651
+ [ERROR_CODES.PAYMENT_COMPLIANCE_VIOLATION]: {
2652
+ code: ERROR_CODES.PAYMENT_COMPLIANCE_VIOLATION,
2653
+ status: HTTP_STATUS.FORBIDDEN,
2654
+ category: ERROR_CATEGORY.Compliance,
2655
+ userMessage: "errors.payment.compliance.violation",
2656
+ severity: ERROR_SEVERITY.High,
2657
+ retryable: false
2658
+ },
2659
+ [ERROR_CODES.PAYMENT_COMPLIANCE_CHECK_FAILED]: {
2660
+ code: ERROR_CODES.PAYMENT_COMPLIANCE_CHECK_FAILED,
2661
+ status: HTTP_STATUS.UNPROCESSABLE_ENTITY,
2662
+ category: ERROR_CATEGORY.Compliance,
2663
+ userMessage: "errors.payment.compliance.check_failed",
2664
+ severity: ERROR_SEVERITY.Medium,
2665
+ retryable: false
2666
+ },
2667
+ [ERROR_CODES.PAYMENT_COMPLIANCE_LIMIT_EXCEEDED]: {
2668
+ code: ERROR_CODES.PAYMENT_COMPLIANCE_LIMIT_EXCEEDED,
2669
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2670
+ category: ERROR_CATEGORY.Limits,
2671
+ userMessage: "errors.payment.compliance.limit_exceeded",
2672
+ severity: ERROR_SEVERITY.Medium,
2673
+ retryable: false
2674
+ },
2675
+ [ERROR_CODES.PAYMENT_COMPLIANCE_POLICY_MISSING]: {
2676
+ code: ERROR_CODES.PAYMENT_COMPLIANCE_POLICY_MISSING,
2677
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2678
+ category: ERROR_CATEGORY.Configuration,
2679
+ userMessage: "errors.payment.compliance.policy_missing",
2680
+ severity: ERROR_SEVERITY.Critical,
2681
+ retryable: false
2682
+ },
2683
+ // ===== Processing Errors =====
2684
+ [ERROR_CODES.PAYMENT_PROCESSING_FAILED]: {
2685
+ code: ERROR_CODES.PAYMENT_PROCESSING_FAILED,
2686
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2687
+ category: ERROR_CATEGORY.Processing,
2688
+ userMessage: "errors.payment.processing.failed",
2689
+ severity: ERROR_SEVERITY.Critical,
2690
+ retryable: true
2691
+ },
2692
+ [ERROR_CODES.PAYMENT_PROCESSING_TIMEOUT]: {
2693
+ code: ERROR_CODES.PAYMENT_PROCESSING_TIMEOUT,
2694
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2695
+ category: ERROR_CATEGORY.Timeout,
2696
+ userMessage: "errors.payment.processing.timeout",
2697
+ severity: ERROR_SEVERITY.High,
2698
+ retryable: true
2699
+ },
2700
+ [ERROR_CODES.PAYMENT_PROCESSING_GATEWAY_ERROR]: {
2701
+ code: ERROR_CODES.PAYMENT_PROCESSING_GATEWAY_ERROR,
2702
+ status: HTTP_STATUS.BAD_GATEWAY,
2703
+ category: ERROR_CATEGORY.Provider,
2704
+ userMessage: "errors.payment.processing.gateway_error",
2705
+ severity: ERROR_SEVERITY.High,
2706
+ retryable: true
2707
+ },
2708
+ [ERROR_CODES.PAYMENT_PROCESSING_DUPLICATE]: {
2709
+ code: ERROR_CODES.PAYMENT_PROCESSING_DUPLICATE,
2710
+ status: HTTP_STATUS.CONFLICT,
2711
+ category: ERROR_CATEGORY.Processing,
2712
+ userMessage: "errors.payment.processing.duplicate",
2713
+ severity: ERROR_SEVERITY.Low,
2714
+ retryable: false
2715
+ },
2716
+ [ERROR_CODES.PAYMENT_PROCESSING_UNEXPECTED_STATE]: {
2717
+ code: ERROR_CODES.PAYMENT_PROCESSING_UNEXPECTED_STATE,
2718
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2719
+ category: ERROR_CATEGORY.System,
2720
+ userMessage: "errors.payment.processing.unexpected_state",
2721
+ severity: ERROR_SEVERITY.Critical,
2722
+ retryable: false
2723
+ },
2724
+ // ===== Security Errors =====
2725
+ [ERROR_CODES.PAYMENT_SECURITY_VIOLATION]: {
2726
+ code: ERROR_CODES.PAYMENT_SECURITY_VIOLATION,
2727
+ status: HTTP_STATUS.FORBIDDEN,
2728
+ category: ERROR_CATEGORY.Security,
2729
+ userMessage: "errors.payment.security.violation",
2730
+ severity: ERROR_SEVERITY.Critical,
2731
+ retryable: false
2732
+ },
2733
+ [ERROR_CODES.PAYMENT_SECURITY_SIGNATURE_INVALID]: {
2734
+ code: ERROR_CODES.PAYMENT_SECURITY_SIGNATURE_INVALID,
2735
+ status: HTTP_STATUS.UNAUTHORIZED,
2736
+ category: ERROR_CATEGORY.Security,
2737
+ userMessage: "errors.payment.security.invalid_signature",
2738
+ severity: ERROR_SEVERITY.High,
2739
+ retryable: false
2740
+ },
2741
+ [ERROR_CODES.PAYMENT_SECURITY_ENCRYPTION_FAILED]: {
2742
+ code: ERROR_CODES.PAYMENT_SECURITY_ENCRYPTION_FAILED,
2743
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2744
+ category: ERROR_CATEGORY.Security,
2745
+ userMessage: "errors.payment.security.encryption_failed",
2746
+ severity: ERROR_SEVERITY.Critical,
2747
+ retryable: false
2748
+ },
2749
+ [ERROR_CODES.PAYMENT_SECURITY_FRAUD_DETECTED]: {
2750
+ code: ERROR_CODES.PAYMENT_SECURITY_FRAUD_DETECTED,
2751
+ status: HTTP_STATUS.FORBIDDEN,
2752
+ category: ERROR_CATEGORY.Fraud,
2753
+ userMessage: "errors.payment.security.fraud_detected",
2754
+ severity: ERROR_SEVERITY.Critical,
2755
+ retryable: false
2756
+ },
2757
+ [ERROR_CODES.PAYMENT_SECURITY_TOKEN_INVALID]: {
2758
+ code: ERROR_CODES.PAYMENT_SECURITY_TOKEN_INVALID,
2759
+ status: HTTP_STATUS.UNAUTHORIZED,
2760
+ category: ERROR_CATEGORY.Authentication,
2761
+ userMessage: "errors.payment.security.token_invalid",
2762
+ severity: ERROR_SEVERITY.Medium,
2763
+ retryable: false
2764
+ },
2765
+ // ===== Validation Errors =====
2766
+ [ERROR_CODES.PAYMENT_VALIDATION_FAILED]: {
2767
+ code: ERROR_CODES.PAYMENT_VALIDATION_FAILED,
2768
+ status: HTTP_STATUS.UNPROCESSABLE_ENTITY,
2769
+ category: ERROR_CATEGORY.Validation,
2770
+ userMessage: "errors.payment.validation.failed",
2771
+ severity: ERROR_SEVERITY.Medium,
2772
+ retryable: false
2773
+ },
2774
+ [ERROR_CODES.PAYMENT_VALIDATION_AMOUNT_INVALID]: {
2775
+ code: ERROR_CODES.PAYMENT_VALIDATION_AMOUNT_INVALID,
2776
+ status: HTTP_STATUS.BAD_REQUEST,
2777
+ category: ERROR_CATEGORY.Validation,
2778
+ userMessage: "errors.payment.validation.amount_invalid",
2779
+ severity: ERROR_SEVERITY.Medium,
2780
+ retryable: false
2781
+ },
2782
+ [ERROR_CODES.PAYMENT_VALIDATION_CURRENCY_UNSUPPORTED]: {
2783
+ code: ERROR_CODES.PAYMENT_VALIDATION_CURRENCY_UNSUPPORTED,
2784
+ status: HTTP_STATUS.BAD_REQUEST,
2785
+ category: ERROR_CATEGORY.Validation,
2786
+ userMessage: "errors.payment.validation.currency_unsupported",
2787
+ severity: ERROR_SEVERITY.Medium,
2788
+ retryable: false
2789
+ },
2790
+ [ERROR_CODES.PAYMENT_VALIDATION_METADATA_INVALID]: {
2791
+ code: ERROR_CODES.PAYMENT_VALIDATION_METADATA_INVALID,
2792
+ status: HTTP_STATUS.BAD_REQUEST,
2793
+ category: ERROR_CATEGORY.Validation,
2794
+ userMessage: "errors.payment.validation.metadata_invalid",
2795
+ severity: ERROR_SEVERITY.Low,
2796
+ retryable: false
2797
+ },
2798
+ [ERROR_CODES.PAYMENT_VALIDATION_MISSING_REQUIRED_FIELD]: {
2799
+ code: ERROR_CODES.PAYMENT_VALIDATION_MISSING_REQUIRED_FIELD,
2800
+ status: HTTP_STATUS.BAD_REQUEST,
2801
+ category: ERROR_CATEGORY.Validation,
2802
+ userMessage: "errors.payment.validation.required_field_missing",
2803
+ severity: ERROR_SEVERITY.Medium,
2804
+ retryable: false
2805
+ },
2806
+ // ===== Webhook Errors =====
2807
+ [ERROR_CODES.PAYMENT_WEBHOOK_SIGNATURE_INVALID]: {
2808
+ code: ERROR_CODES.PAYMENT_WEBHOOK_SIGNATURE_INVALID,
2809
+ status: HTTP_STATUS.UNAUTHORIZED,
2810
+ category: ERROR_CATEGORY.Webhook,
2811
+ userMessage: "errors.payment.webhook.signature_invalid",
2812
+ severity: ERROR_SEVERITY.High,
2813
+ retryable: false
2814
+ },
2815
+ [ERROR_CODES.PAYMENT_WEBHOOK_PROCESSING_FAILED]: {
2816
+ code: ERROR_CODES.PAYMENT_WEBHOOK_PROCESSING_FAILED,
2817
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2818
+ category: ERROR_CATEGORY.Webhook,
2819
+ userMessage: "errors.payment.webhook.processing_failed",
2820
+ severity: ERROR_SEVERITY.High,
2821
+ retryable: true
2822
+ },
2823
+ [ERROR_CODES.PAYMENT_WEBHOOK_VALIDATION_FAILED]: {
2824
+ code: ERROR_CODES.PAYMENT_WEBHOOK_VALIDATION_FAILED,
2825
+ status: HTTP_STATUS.BAD_REQUEST,
2826
+ category: ERROR_CATEGORY.Validation,
2827
+ userMessage: "errors.payment.webhook.validation_failed",
2828
+ severity: ERROR_SEVERITY.Medium,
2829
+ retryable: false
2830
+ },
2831
+ [ERROR_CODES.PAYMENT_WEBHOOK_EVENT_TYPE_UNSUPPORTED]: {
2832
+ code: ERROR_CODES.PAYMENT_WEBHOOK_EVENT_TYPE_UNSUPPORTED,
2833
+ status: HTTP_STATUS.BAD_REQUEST,
2834
+ category: ERROR_CATEGORY.Webhook,
2835
+ userMessage: "errors.payment.webhook.unsupported_event_type",
2836
+ severity: ERROR_SEVERITY.Medium,
2837
+ retryable: false
2838
+ },
2839
+ [ERROR_CODES.PAYMENT_WEBHOOK_HANDLER_NOT_FOUND]: {
2840
+ code: ERROR_CODES.PAYMENT_WEBHOOK_HANDLER_NOT_FOUND,
2841
+ status: HTTP_STATUS.NOT_FOUND,
2842
+ category: ERROR_CATEGORY.Webhook,
2843
+ userMessage: "errors.payment.webhook.handler_not_found",
2844
+ severity: ERROR_SEVERITY.Medium,
2845
+ retryable: false
2846
+ },
2847
+ // ===== Payment Adapter & Core Errors =====
2848
+ [ERROR_CODES.PAYMENT_ADAPTER_INIT_FAILED]: {
2849
+ code: ERROR_CODES.PAYMENT_ADAPTER_INIT_FAILED,
2850
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2851
+ category: ERROR_CATEGORY.Provider,
2852
+ userMessage: "errors.payment.adapter.init_failed",
2853
+ severity: ERROR_SEVERITY.High,
2854
+ retryable: false
2855
+ },
2856
+ [ERROR_CODES.PAYMENT_ADAPTER_SHUTDOWN_ERROR]: {
2857
+ code: ERROR_CODES.PAYMENT_ADAPTER_SHUTDOWN_ERROR,
2858
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2859
+ category: ERROR_CATEGORY.Provider,
2860
+ userMessage: "errors.payment.adapter.shutdown_error",
2861
+ severity: ERROR_SEVERITY.Medium,
2862
+ retryable: false
2863
+ },
2864
+ [ERROR_CODES.PAYMENT_ADAPTER_HMAC_COMPUTATION_FAILED]: {
2865
+ code: ERROR_CODES.PAYMENT_ADAPTER_HMAC_COMPUTATION_FAILED,
2866
+ status: HTTP_STATUS.BAD_REQUEST,
2867
+ category: ERROR_CATEGORY.Security,
2868
+ userMessage: "errors.payment.adapter.hmac_computation_failed",
2869
+ severity: ERROR_SEVERITY.High,
2870
+ retryable: false
2871
+ },
2872
+ [ERROR_CODES.PAYMENT_ADAPTER_MISSING_PROVIDER]: {
2873
+ code: ERROR_CODES.PAYMENT_ADAPTER_MISSING_PROVIDER,
2874
+ status: HTTP_STATUS.BAD_REQUEST,
2875
+ category: ERROR_CATEGORY.Configuration,
2876
+ userMessage: "errors.payment.adapter.missing_provider",
2877
+ severity: ERROR_SEVERITY.Medium,
2878
+ retryable: false
2879
+ },
2880
+ [ERROR_CODES.PAYMENT_ADAPTER_MISSING_ENVIRONMENT]: {
2881
+ code: ERROR_CODES.PAYMENT_ADAPTER_MISSING_ENVIRONMENT,
2882
+ status: HTTP_STATUS.BAD_REQUEST,
2883
+ category: ERROR_CATEGORY.Configuration,
2884
+ userMessage: "errors.payment.adapter.missing_environment",
2885
+ severity: ERROR_SEVERITY.Medium,
2886
+ retryable: false
2887
+ },
2888
+ [ERROR_CODES.PAYMENT_ADAPTER_MISSING_CREDENTIALS]: {
2889
+ code: ERROR_CODES.PAYMENT_ADAPTER_MISSING_CREDENTIALS,
2890
+ status: HTTP_STATUS.UNAUTHORIZED,
2891
+ category: ERROR_CATEGORY.Authentication,
2892
+ userMessage: "errors.payment.adapter.missing_credentials",
2893
+ severity: ERROR_SEVERITY.Medium,
2894
+ retryable: false
2895
+ },
2896
+ [ERROR_CODES.PAYMENT_ADAPTER_MISSING_WEBHOOK_URL]: {
2897
+ code: ERROR_CODES.PAYMENT_ADAPTER_MISSING_WEBHOOK_URL,
2898
+ status: HTTP_STATUS.BAD_REQUEST,
2899
+ category: ERROR_CATEGORY.Configuration,
2900
+ userMessage: "errors.payment.adapter.missing_webhook_url",
2901
+ severity: ERROR_SEVERITY.Medium,
2902
+ retryable: false
2903
+ },
2904
+ [ERROR_CODES.PAYMENT_ADAPTER_MISSING_UNREGISTER_ENDPOINT]: {
2905
+ code: ERROR_CODES.PAYMENT_ADAPTER_MISSING_UNREGISTER_ENDPOINT,
2906
+ status: HTTP_STATUS.BAD_REQUEST,
2907
+ category: ERROR_CATEGORY.Configuration,
2908
+ userMessage: "errors.payment.adapter.missing_unregister_endpoint",
2909
+ severity: ERROR_SEVERITY.Medium,
2910
+ retryable: false
2911
+ },
2912
+ [ERROR_CODES.PAYMENT_ADAPTER_UNSUPPORTED_OPERATION]: {
2913
+ code: ERROR_CODES.PAYMENT_ADAPTER_UNSUPPORTED_OPERATION,
2914
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2915
+ category: ERROR_CATEGORY.Provider,
2916
+ userMessage: "errors.payment.adapter.unsupported_operation",
2917
+ severity: ERROR_SEVERITY.Medium,
2918
+ retryable: false
2919
+ },
2920
+ [ERROR_CODES.PAYMENT_ADAPTER_RESPONSE_MAPPING_FAILED]: {
2921
+ code: ERROR_CODES.PAYMENT_ADAPTER_RESPONSE_MAPPING_FAILED,
2922
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2923
+ category: ERROR_CATEGORY.Provider,
2924
+ userMessage: "errors.payment.adapter.response_mapping_failed",
2925
+ severity: ERROR_SEVERITY.High,
2926
+ retryable: false
2927
+ },
2928
+ // ===== Idempotency & State Management =====
2929
+ [ERROR_CODES.PAYMENT_IDEMPOTENCY_VIOLATION]: {
2930
+ code: ERROR_CODES.PAYMENT_IDEMPOTENCY_VIOLATION,
2931
+ status: HTTP_STATUS.CONFLICT,
2932
+ category: ERROR_CATEGORY.Processing,
2933
+ userMessage: "errors.payment.idempotency.violation",
2934
+ severity: ERROR_SEVERITY.Medium,
2935
+ retryable: false
2936
+ },
2937
+ [ERROR_CODES.PAYMENT_IDEMPOTENCY_KEY_MISSING]: {
2938
+ code: ERROR_CODES.PAYMENT_IDEMPOTENCY_KEY_MISSING,
2939
+ status: HTTP_STATUS.BAD_REQUEST,
2940
+ category: ERROR_CATEGORY.Validation,
2941
+ userMessage: "errors.payment.idempotency.key_missing",
2942
+ severity: ERROR_SEVERITY.Low,
2943
+ retryable: false
2944
+ },
2945
+ [ERROR_CODES.PAYMENT_IDEMPOTENCY_STORE_ERROR]: {
2946
+ code: ERROR_CODES.PAYMENT_IDEMPOTENCY_STORE_ERROR,
2947
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2948
+ category: ERROR_CATEGORY.Cache,
2949
+ userMessage: "errors.payment.idempotency.store_error",
2950
+ severity: ERROR_SEVERITY.Medium,
2951
+ retryable: true
2952
+ },
2953
+ // ===== Routing & Strategy =====
2954
+ [ERROR_CODES.PAYMENT_ROUTING_FAILED]: {
2955
+ code: ERROR_CODES.PAYMENT_ROUTING_FAILED,
2956
+ status: HTTP_STATUS.BAD_REQUEST,
2957
+ category: ERROR_CATEGORY.Strategy,
2958
+ userMessage: "errors.payment.routing.failed",
2959
+ severity: ERROR_SEVERITY.High,
2960
+ retryable: false
2961
+ },
2962
+ [ERROR_CODES.PAYMENT_ROUTING_CONFIGURATION_INVALID]: {
2963
+ code: ERROR_CODES.PAYMENT_ROUTING_CONFIGURATION_INVALID,
2964
+ status: HTTP_STATUS.BAD_REQUEST,
2965
+ category: ERROR_CATEGORY.Configuration,
2966
+ userMessage: "errors.payment.routing.configuration_invalid",
2967
+ severity: ERROR_SEVERITY.Medium,
2968
+ retryable: false
2969
+ },
2970
+ [ERROR_CODES.PAYMENT_ROUTING_PROVIDER_UNAVAILABLE]: {
2971
+ code: ERROR_CODES.PAYMENT_ROUTING_PROVIDER_UNAVAILABLE,
2972
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2973
+ category: ERROR_CATEGORY.Provider,
2974
+ userMessage: "errors.payment.routing.provider_unavailable",
2975
+ severity: ERROR_SEVERITY.High,
2445
2976
  retryable: true
2446
2977
  },
2447
2978
  // Misc
@@ -2492,6 +3023,96 @@ var ERROR_DEFINITIONS = {
2492
3023
  userMessage: "db.misc.invalid_count",
2493
3024
  severity: ERROR_SEVERITY.Medium,
2494
3025
  retryable: false
3026
+ },
3027
+ [ERROR_CODES.PAYMENT_ROUTING_RETRY_EXCEEDED]: {
3028
+ code: ERROR_CODES.PAYMENT_ROUTING_RETRY_EXCEEDED,
3029
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3030
+ category: ERROR_CATEGORY.Retry,
3031
+ userMessage: "errors.payment.routing.retry_exceeded",
3032
+ severity: ERROR_SEVERITY.Medium,
3033
+ retryable: false
3034
+ },
3035
+ // ===== General Payment Framework Errors =====
3036
+ [ERROR_CODES.PAYMENT_SYSTEM_NOT_INITIALIZED]: {
3037
+ code: ERROR_CODES.PAYMENT_SYSTEM_NOT_INITIALIZED,
3038
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3039
+ category: ERROR_CATEGORY.System,
3040
+ userMessage: "errors.payment.system.not_initialized",
3041
+ severity: ERROR_SEVERITY.High,
3042
+ retryable: false
3043
+ },
3044
+ [ERROR_CODES.PAYMENT_CONTEXT_OPERATION_FAILED]: {
3045
+ code: ERROR_CODES.PAYMENT_CONTEXT_OPERATION_FAILED,
3046
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3047
+ category: ERROR_CATEGORY.System,
3048
+ userMessage: "errors.payment.context.operation_failed",
3049
+ severity: ERROR_SEVERITY.High,
3050
+ retryable: false
3051
+ },
3052
+ [ERROR_CODES.PAYMENT_INTERNAL_ERROR]: {
3053
+ code: ERROR_CODES.PAYMENT_INTERNAL_ERROR,
3054
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3055
+ category: ERROR_CATEGORY.System,
3056
+ userMessage: "errors.payment.internal_error",
3057
+ severity: ERROR_SEVERITY.Critical,
3058
+ retryable: false
3059
+ },
3060
+ [ERROR_CODES.PAYMENT_UNKNOWN_ERROR]: {
3061
+ code: ERROR_CODES.PAYMENT_UNKNOWN_ERROR,
3062
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3063
+ category: ERROR_CATEGORY.Unknown,
3064
+ userMessage: "errors.payment.unknown_error",
3065
+ severity: ERROR_SEVERITY.Critical,
3066
+ retryable: false
3067
+ },
3068
+ // ===== Event Lifecycle Errors =====
3069
+ [ERROR_CODES.PAYMENT_EVENT_EMIT_FAILED]: {
3070
+ code: ERROR_CODES.PAYMENT_EVENT_EMIT_FAILED,
3071
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3072
+ category: ERROR_CATEGORY.Processing,
3073
+ userMessage: "errors.payment.event.emit_failed",
3074
+ severity: ERROR_SEVERITY.Medium,
3075
+ retryable: false
3076
+ },
3077
+ [ERROR_CODES.PAYMENT_EVENT_INVALID_TYPE]: {
3078
+ code: ERROR_CODES.PAYMENT_EVENT_INVALID_TYPE,
3079
+ status: HTTP_STATUS.BAD_REQUEST,
3080
+ category: ERROR_CATEGORY.Validation,
3081
+ userMessage: "errors.payment.event.invalid_type",
3082
+ severity: ERROR_SEVERITY.Medium,
3083
+ retryable: false
3084
+ },
3085
+ [ERROR_CODES.PAYMENT_EVENT_CREATION_FAILED]: {
3086
+ code: ERROR_CODES.PAYMENT_EVENT_CREATION_FAILED,
3087
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3088
+ category: ERROR_CATEGORY.System,
3089
+ userMessage: "errors.payment.event.creation_failed",
3090
+ severity: ERROR_SEVERITY.High,
3091
+ retryable: false
3092
+ },
3093
+ [ERROR_CODES.PAYMENT_EVENT_HANDLER_TIMEOUT]: {
3094
+ code: ERROR_CODES.PAYMENT_EVENT_HANDLER_TIMEOUT,
3095
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3096
+ category: ERROR_CATEGORY.Timeout,
3097
+ userMessage: "errors.payment.event.handler_timeout",
3098
+ severity: ERROR_SEVERITY.Medium,
3099
+ retryable: true
3100
+ },
3101
+ [ERROR_CODES.PAYMENT_EVENT_HANDLER_INVALID_RESULT]: {
3102
+ code: ERROR_CODES.PAYMENT_EVENT_HANDLER_INVALID_RESULT,
3103
+ status: HTTP_STATUS.UNPROCESSABLE_ENTITY,
3104
+ category: ERROR_CATEGORY.Processing,
3105
+ userMessage: "errors.payment.event.handler_invalid_result",
3106
+ severity: ERROR_SEVERITY.Medium,
3107
+ retryable: false
3108
+ },
3109
+ [ERROR_CODES.PAYMENT_EVENT_LIFECYCLE_FAILURE]: {
3110
+ code: ERROR_CODES.PAYMENT_EVENT_LIFECYCLE_FAILURE,
3111
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3112
+ category: ERROR_CATEGORY.Processing,
3113
+ userMessage: "errors.payment.event.lifecycle_failure",
3114
+ severity: ERROR_SEVERITY.High,
3115
+ retryable: false
2495
3116
  }
2496
3117
  };
2497
3118