Issue:
[BUG] DB constraints for events table

### Bug Description

`idempotent_event_id` column is a combination of `payment_id` and the `event_type`. Length of this field in DB can be a maximum of 64 characters. However, since `payment_id` can also be 64 characters, the resulting `idempotent_event_id` can easily exceed 64 characters leading to inconsistent behavior in the flows.

Currently, this is breaking outgoing webhooks flow.

### Expected Behavior

Outgoing webhooks flow should succeed.

### Actual Behavior

Outgoing webhooks flow breaks due to DB constraints.


```
{
    "message": "[INCOMING_WEBHOOKS_CORE - EVENT] Incoming webhook flow failed",
    "extra": {
        "error": "{\"error\":{\"type\":\"router_error\",\"code\":\"WE_03\",\"message\":\"There was some issue processing the webhook\"}}\\n├╴at crates/router/src/core/webhooks/outgoing.rs:196:18\\n├╴Failed to insert event in events table\\n├╴Incoming webhook flow for payments failed\\n│\\n╰─▶ DatabaseError: An unknown error occurred\\n    ├╴at /router/crates/diesel_models/src/query/generics.rs:89:36\\n    ├╴Error while inserting EventNew { event_id: \"evt_01979b2125017d93bb4d846d42979839\", event_type: PaymentAuthorized, event_class: Payments, is_webhook_notified: false, primary_object_id: \"AFR_202506237e491a4f-1bd8-4d97-a9a6-a2f86832bc79\", primary_object_type: PaymentDetails, created_at: 2025-06-23 4:52:10.113410262, merchant_id: Some(MerchantId(\"merchant_1741787326\")), business_profile_id: Some(ProfileId(\"pro_r3uCseg4NT35RBFpmUPA\")), primary_object_created_at: Some(2025-06-23 4:51:14.154239), idempotent_event_id: Some(\"AFR_202506237e491a4f-1bd8-4d97-a9a6-a2f86832bc79_payment_authorized\"), initial_attempt_id: Some(\"evt_01979b2125017d93bb4d846d42979839\"), request: Some(Encryption { inner: *** Encrypted data of length 7223 bytes *** }), response: None, delivery_attempt: Some(InitialAttempt), metadata: Some(Payment { payment_id: PaymentId(\"AFR_202506237e491a4f-1bd8-4d97-a9a6-a2f86832bc79\") }), is_overall_delivery_successful: Some(false) }\\n    │\\n    ╰─▶ value too long for type character varying(64)\\n        ╰╴at /router/crates/diesel_models/src/query/generics.rs:89:22\\n    ╰╴at crates/router/src/db/events.rs:129:30"
    }
}
```

### Steps To Reproduce

--

### Context For The Bug

--

### Environment

--

### Have you spent some time checking if this bug has been raised before?

- [x] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [x] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

None

Resolution:
<think>
PR Context:
- Title: fix(webhooks): add idempotent_event_id generation using URL-safe Base64 (no padding) and SHA256 digest
- Merged: 2025-09-22T08:30:21Z
- Files changed: 7 files
- Commits: 7 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix
- [ ] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
This change updates the idempotent_event_id generation to first hash the base string with SHA256 and then encode it using URL-safe Base64 without padding. By doing this, the generated IDs are guaranteed to be short and deterministic, ensuring 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** fix(webhooks): add idempotent_event_id generation using URL-safe Base64 (no padding) and SHA256 dige
Files to modify:


**crates/common_utils/src/consts.rs**
  Modify existing code

**crates/router/src/core/errors.rs**
  Modify existing code

**crates/router/src/core/webhooks/outgoing.rs**
  Modify existing code

**crates/router/src/core/webhooks/outgoing_v2.rs**
  Modify existing code

**crates/router/src/core/webhooks/utils.rs**
  Modify existing code

**crates/router/src/core/webhooks/webhook_events.rs**
  Modify existing code

**crates/router/src/workflows/outgoing_webhook_retry.rs**
  Modify existing code