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