-
Notifications
You must be signed in to change notification settings - Fork 102
feat(backend): publish webhooks to POS service if applicable #3596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🚀 Performance Test ResultsTest Configuration:
Test Metrics:
📜 Logs |
|
I decided to include this information in the |
03eb155 to
ff2abd3
Compare
277ef15 to
bb26224
Compare
packages/backend/migrations/20250814213541_add_intiated_by_to_incoming_payment.js
Outdated
Show resolved
Hide resolved
7249c11 to
058a0ed
Compare
* Created the backbone for the card service * Format fix * feat: add card service to docker compose --------- Co-authored-by: Nathan Lie <[email protected]>
…ceHost) mapping (#3524) * Integrate Redis client in Card Service for (requestId, posServiceHost) mapping * remove unused dep * prettier fix * Separate logging params from the message itself * ttl * prettier fix * Rewrite redis service tests to use testcontainers instead of mocks --------- Co-authored-by: Antoniu Neacsu <[email protected]>
* Route for registering a POS device * Fixed issue addressed in comments, tried to fix the port issue of jest * Changed test container port to 0, format fix
d45406c to
ce10fb4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Final few comments
packages/backend/src/graphql/resolvers/incoming_payment.test.ts
Outdated
Show resolved
Hide resolved
| @@ -0,0 +1,8 @@ | |||
| export enum IncomingPaymentInitiationReason { | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to create a types file here because webhook/service.ts importing from incoming/model.ts was causing a bunch of dependency errors in tests because the Incoming Payment model hadn't been initialized for the test and would break all the exports in the module, even if it wasn't importing the incoming payment model itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll capture a code-cleanup issue to move more types from the Incoming payment model into this types file so the code is cleaner, and to keep this PR from not being unnecessarily large.
* feat: created the backbone for the card service (#3508) * Created the backbone for the card service * Format fix * feat: add card service to docker compose --------- Co-authored-by: Nathan Lie <[email protected]> * feat: initialize POS service (#3509) * feat(wip): pos service * Completed POS service init * Added docker files and missing scripts * Removed editor code after handling conflicts * Updated docker-compose for cloud 9 localenv and removed unnecessary telemetry command from dockerfile * Updated docker compose files for c9 and hlb * Updated ports and env var names from config * fix: install ts-node-dev, add main script to index.ts --------- Co-authored-by: Nathan Lie <[email protected]> * feat(card-service): card payments table (#3514) * migration & model for card payments * feat(pos): create merchants table (#3519) * merchants table migrations and model * typo * Docker compose fix (for slower PCs) on localenv (#3522) * fix(cards-service): add dependencies to package.json (#3530) * fix(cards-service): add dependencies to package.json * chore(cards-service): lockfile * feat: Added CardService client in rafiki backend (#3510) * feat(pos): pos card services table (#3526) * merchants table migrations and model * feat(card-service): introduce testcontainers for database and redis (#3533) * feat(card-service): add testcontainers setup * chore(cards-service): lockfile * feat(cards-service): fix test containers setup * fix(cards-service): fix type issue * feat(pos): merchants services (#3528) * merchant service * jest setup * tests * feat: Integrate Redis client in Card Service for (requestId, posServiceHost) mapping (#3524) * Integrate Redis client in Card Service for (requestId, posServiceHost) mapping * remove unused dep * prettier fix * Separate logging params from the message itself * ttl * prettier fix * Rewrite redis service tests to use testcontainers instead of mocks --------- Co-authored-by: Antoniu Neacsu <[email protected]> * feat(pos): create merchant route (#3538) * post merchants route --------- Co-authored-by: Nathan Lie <[email protected]> * feat(card-service): introduce AuditLogService (#3525) * feat(card-service): introduce AuditLogService * feat(card-service): add testcontainers setup * chore(cards-service): lockfile * fix service update method and add tests. card_payemnts migration index added * chore(cards-service): remove unnecessary app container start in tests * chore(cards-service): add uuid as a placeholder for open payments tennantId for clarity * chore(cards-service): format imports * fix(localenv): add required env vars to docker-compose (#3550) * feat(point-of-sale): POS Device service (#3548) * pos device service * Added algorithm as param on registering device, updated tests so that we check the device obj * feat(pos): RAF-1121-revoke merchant route (#3553) * feat(ci/cd): add ci jobs for testing point of sale and card-service (#3554) [CLOSES RAF-1109](https://linear.app/interledger/issue/RAF-1109/devops-cicd-github-actions-to-test-card-and-pos-service) * fix: (rafiki backend) Augment Wallet Address response with cardService field (#3552) * feat: add cardServiceUrl configuration and update related routes * feat: rename CARD_SERVICE_HOST to CARD_SERVICE_URL for consistency * fix format --------- Co-authored-by: HRadry <[email protected]> * fix(localenv): rename CARD_SERVICE_HOST to CARD_SERVICE_URL * feat(point-of-sale): added route for registering a POS device (#3555) * Route for registering a POS device * Fixed issue addressed in comments, tried to fix the port issue of jest * Changed test container port to 0, format fix * fix: typo in route * feat: bruno calls for creating merchant and registering POS device (#3558) * feat: [RAF-1083][POS Service]: Add GQL Client for Rafiki BE calls for incoming payment operations (#3546) * feat(pos): device revoke (#3560) * feat(pos): nested routing for devices, device revoke route & error handling * feat(pos-service): pos devices router and service specific error handling * feat(pos): test app now uses dynamic ports to avoid jest worker conflicts * fix(pos): fix tests * chore(pos-service): PR suggestions * fix(pos): extend error handling approach to register route in pos devices * chore(pos): remove unused knex in routes * chore(pos): rename DeviceRoutes * chore(pos): pnpm-lock * chore(pos): format * feat: added card service client to initiate a payment from pos service (#3535) * Added card service client to initiate a payment * feat(backend): Raul/raf 1095 augment outgoing payments for card (#3539) * feat(backend): add card information to outgoing payment graph ql * fix(backend): save expiry as string MM/YY * feature(backend): add mm/yy validation * fix(backend): run prittier * fix(backend): comments and set type to table name and relation * fix(backend): remove unused deps * feat(backend): add tests for outgoing payments with card details * fix(backend): fix pr comments --------- Co-authored-by: Raul Ranete <[email protected]> * feat(point-of-sale): service for obtaining walletAddress by its url from Rafiki Backend (#3578) * Added axios call to rafiki backend for getting wallet address by its url * Handled the case when cardServiceUrl may not be set on wallet address * feat(card-service): add endpoints to initiate payment and receive payment result (#3547) * feat(card-service): add endpoints to initiate payment and recieve payment result * fix: improve open api spec validation * fix: rename paymetn timeout var and comment terminal cert prop * fix: add PaymentRouteError * fix: rename env var and remove deleted prop * fix(backend): made CARD_SERVICE_URL optional (#3600) * Made CARD_SERVICE_URL optional * Created cardService container only if cardServiceUrl is set in config * Added noop card service when cardServiceUrl is not provided * Regenerated graphql * Added warning when CARD_SERVICE_URL is not set * feat(point-of-sale): POST payment route (#3597) * Payment route structure * Added routes test file * Removed some comments * Added test for unknown error * Updated graphql generated files * feat(backend): publish webhooks to POS service if applicable (#3596) * feat: created the backbone for the card service (#3508) * Created the backbone for the card service * Format fix * feat: add card service to docker compose --------- Co-authored-by: Nathan Lie <[email protected]> * feat: Integrate Redis client in Card Service for (requestId, posServiceHost) mapping (#3524) * Integrate Redis client in Card Service for (requestId, posServiceHost) mapping * remove unused dep * prettier fix * Separate logging params from the message itself * ttl * prettier fix * Rewrite redis service tests to use testcontainers instead of mocks --------- Co-authored-by: Antoniu Neacsu <[email protected]> * feat(point-of-sale): added route for registering a POS device (#3555) * Route for registering a POS device * Fixed issue addressed in comments, tried to fix the port issue of jest * Changed test container port to 0, format fix * feat(backend): publish webhooks to POS service if applicable * feat: add column to incoming payment * fix: tests * feat: add warn log * fix: better logger requirements for finalizing webhook recipients * fix: make open payments default reason for incoming payment initialization * fix: improve optional env var function * fix: warn log, better optional env, backfill migration, tests * fix: rebase bugs * chore: regenerate lockfile * chore: regenerate gql * fix: tests * fix: remove metadata; better tests * fix: build errors * fix: tests, add type file --------- Co-authored-by: oana-lolea <[email protected]> Co-authored-by: zeppelin44 <[email protected]> Co-authored-by: Antoniu Neacsu <[email protected]> * feat(point-of-sale): handle incoming payment completed webhooks from backend (#3613) * feat: created the backbone for the card service (#3508) * Created the backbone for the card service * Format fix * feat: add card service to docker compose --------- Co-authored-by: Nathan Lie <[email protected]> * feat: initialize POS service (#3509) * feat(wip): pos service * Completed POS service init * Added docker files and missing scripts * Removed editor code after handling conflicts * Updated docker-compose for cloud 9 localenv and removed unnecessary telemetry command from dockerfile * Updated docker compose files for c9 and hlb * Updated ports and env var names from config * fix: install ts-node-dev, add main script to index.ts --------- Co-authored-by: Nathan Lie <[email protected]> * feat: Integrate Redis client in Card Service for (requestId, posServiceHost) mapping (#3524) * Integrate Redis client in Card Service for (requestId, posServiceHost) mapping * remove unused dep * prettier fix * Separate logging params from the message itself * ttl * prettier fix * Rewrite redis service tests to use testcontainers instead of mocks --------- Co-authored-by: Antoniu Neacsu <[email protected]> * feat(point-of-sale): added route for registering a POS device (#3555) * Route for registering a POS device * Fixed issue addressed in comments, tried to fix the port issue of jest * Changed test container port to 0, format fix * feat(wip): merge pos-card-services * feat(point-of-sale): handle incoming payment completed webhooks from backend * fix: typo, expose incoming payment url in gql * fix: typo & unintended changes * chore: regenerate gql * feat: clean up request map if wehbook times out --------- Co-authored-by: oana-lolea <[email protected]> Co-authored-by: zeppelin44 <[email protected]> Co-authored-by: Antoniu Neacsu <[email protected]> * fix: test * feat(card-service): call outgoing payment creation during payment route (#3614) * feat(card-service): call outgoing payment creation during payment route * chore: regenerate graphql * chore: regenerate gql * chore(backend): remove tenant id from card service path in WA response (#3627) * chore(point-of-sale): add expiry for incoming payments created by pos service (#3623) * chore(point-of-sale): add expiry for incoming payments created by pos service * chore(point-of-sale): use jest timers for incoming payment expiry in tests * feat(card-service): remove `debitAmount` from outgoing payment creation admin API request (#3632) * chore(pos, card-service): update generated graphql types * feat(card-service): remove debitAmount from outgoing payment creation mutation * feat(backend): add custom webhook URL for POS (#3628) * feat(backend): add custom webhook URL for POS * fix(backend): remove fallback webhook URL for POS * fix(point-of-sale): added bruno script + added missing env variables to local docker compose file (#3629) * Added bruno script + added missing env variables to local docker containers * Added missing env variables for card-service * Sent tenant id to backend for now, updated bruno req, fixed createIncPayment mutation * Removed unnecessary header * Fixed a test after mutation update * Updated generated graphql files * Fixed connection between payment service calls * Fixed env variables and mutation type for creating inc payment * fix: match payment bodies for pos and card service (#3653) * Matched bodies between pos and card services /payment * Forgot to stage this * Fixed test * Updated graphql types * feat(card-service, pos-service): updating payment routes with new payload (#3655) * chore: update docker compose file to make webhook signatures work * feat(pos): update /payment request payload * feat(card-service): updating payment handler with new payload * chore(bruno): update initiate Payment request * chore: lint OpenAPI * feat(backend): additional webhook events for outgoing payments (#3651) * feat(backend): add additional webhook events for outgoing payments * feat(backend): update webhook recipients logic * chore(backend): extract funded and cancelled events into a new type * chore(backend): move IncomingPaymentInitiationReason to separate file * chore(backend): simplify webhook recipients logic * feat(backend): Update handling of `OutgoingPaymentCardDetails` (#3658) * feat(backend): update CardDetailsInput GraphQL type * feat(backend): update OutgoingPaymentCardDetails model * feat(backend): start publishing cardDetails in outgoing_payment.created webhook * chore(backend): remove old expiry check * test(backend): update outgoing payment resolver test * chore(backend): remove unused cardDetails from GraphQL API * test(backend): update outgoing payment resolver test * chore(backend): update migration to not add already included requestId * chore(backend): update outgoing payment test * feat(card-service): update outgoing payment creation with new payload * test(backend): update outgoing payment test * fix(backend): fix webhook resolver filter for OP funded and cancelled events (#3662) * chore: add sha.js override to fix security vulnerability * feat(card-service): handle payment cancelled & funded events (#3667) * feat(card-service): handle payment cancelled & funded events * feat(card-service): fix tests * fix: updates to make e2e payment flow work (#3668) * chore(localenv): add CARD_WEBHOOK_SERVICE_URL to cloud nine wallet backend * feat(backend): fetch cardDetails during outgoing payment funded and cancelled * chore(pos): correctly handle response from card service * test(pos): update card service client test * chore(card-service): add paymentRoutes to AppServices * chore(backend): fix withGraphFetched query * test(pos): remove unused test * fix(card-service): update payment result type * chore(card-service): format --------- Co-authored-by: Max Kurapov <[email protected]> * chore: add card-service and pos-service image build steps in CI (#3657) * Added card-service and point-of-sale images when pushing to registry * Added dockerfile.prod for card-service * Added spectral to validate card-service open api specs * Fix on building the packages * Fixed dockerfile * Added token-introspection * trying to fix crypto issue * Another try to fix card-service pipeline * Still trying * Testing if crypto is actually the issue here * Trying to debug * Added @types/node so it can see the crypto package * Updated yaml for card-service, removed unnecessary changes * Fix format * Updated axios version of pos * Added tags to card-service.yaml * Removed token-introspection from pos and card services * Added command to run pos and card services in docker file * chore(point-of-sale): update pos service response structure (#3675) * chore(point-of-sale): update pos service response structure * fix: map cleanup in finally block * feat: add integration test for pos-card flow (#3678) * added integration test for pos flow * updated pnpm lock * Added webhook urls and signature secrets to c9 and hlf env * Set up hosts for card service and pos for IT * Added test env to performance test job * Updated IT structure and test name, removed unnecessary formatting * Forgot to remove 'card_expired' from result * Updated result model after merging pos-cards branch * Used prod docker files for pos and card services, added open api files to card-service build, fixed axios dependency issue * feat: added sender wallet address to incoming payment (#3705) * Added sender wallet address to incoming payment * chore(card,pos-service): update alpine image * chore(card-service, pos-service): cleanup unused code (#3718) * chore(point-of-sale): remove merchant service, knex, db connections * chore(card-service): remove knex, objection, db connection * chore(localenv): remove db connections for pos and card service * chore(pos): remove migration folder from dockerfile * chore(bruno): remove unused POS service APIs * chore(testenv): remove db connection for card and pos services * chore(pos, card-service): use core imports from apollo client * chore(point-of-sale, card-service): update webhook handling (#3725) * chore(card-service): rename `/payment-event` route to `/webhook` * chore(point-of-sale): make webhook signature signing optional * chore(testenv): update CARD_WEBHOOK_SERVICE_URL * test(point-of-sale): allow optional webhook signature * feat(point-of-sale): pos service API for getting incoming payments (#3708) * feat(point-of-sale): API for getting pos service's incoming payments * fix: tests * feat: filter out unnecessary fields in response * chore: bruno collection urls * feat: include senderWalletAddress in query * fix: bruno urls * fix: serialize query params properly for gql requests * fix: expose tenant id in payment gql requests * feat: use open payments-esque response format * feat: include metadata * feat: remove unnecessary fields * fix: regenerate gql * fix: imports * fix: proper object assign use and pr comments * feat(backend): add filtering incoming payments by initiatedBy (#3714) * add filtering incoming payments by initiatedBy * Added filter to walletAddress.incomingPayments resolver * added filtering by initiatedBy to also work with notIn * Added filter to getPage functions * feat(point-of-sale): filter incoming payments by those initiated by card payemnt (#3734) * chore(card-service): remove unused components (#3736) * chore(card-service): remove pos-store * chore(backend): remove redis from instantiation * chore: remove unused pos & card service components (#3737) * chore(testenv): remove port * chore(localenv): removed card & pos volumes, ports, seed * chore(card-service): remove init script * chore(backend): remove unused card service * chore(backend): remove card expiry from outgoing payment errors * feat(point-of-sale): add `senderWalletAddress` to incoming payment creation (#3738) * feat(point-of-sale): add USE_HTTP flag * feat(point-of-sale): pass in senderWalletAddress into incoming payment creation * chore(testenv): add USE_HTTP to point-of-sale service * chore(point-of-sale): update card service client log service name * test(point-of-sale): update payment route & service tests --------- Co-authored-by: oana-lolea <[email protected]> Co-authored-by: Nathan Lie <[email protected]> Co-authored-by: Arpi Lengyel <[email protected]> Co-authored-by: Arpi Lengyel <[email protected]> Co-authored-by: xplicit <[email protected]> Co-authored-by: zeppelin44 <[email protected]> Co-authored-by: Antoniu Neacsu <[email protected]> Co-authored-by: MiguelLescasJorgeSebastian <[email protected]> Co-authored-by: HRadry <[email protected]> Co-authored-by: Raul <[email protected]> Co-authored-by: Raul Ranete <[email protected]> Co-authored-by: dragosp1011 <[email protected]> Co-authored-by: Bogdan S <[email protected]>
Changes proposed in this pull request
metadatato the webhook model.Context
Fixes RAF-1141.
Checklist
fixes #numberuser-docslabel (if necessary)