Skip to content

Comments

Add SystemMessageType and Consume Service for Shopify refunds/create Webhook#230

Open
Prerakghatode wants to merge 2 commits intomainfrom
221-consume-refund-systemMessages-and-trigger
Open

Add SystemMessageType and Consume Service for Shopify refunds/create Webhook#230
Prerakghatode wants to merge 2 commits intomainfrom
221-consume-refund-systemMessages-and-trigger

Conversation

@Prerakghatode
Copy link
Contributor

@Prerakghatode Prerakghatode commented Dec 29, 2025

Closes: #221
Shopify refund webhooks are sent to SQS. NiFi polls the SQS and calls the Moqui REST end-point to consume the webhook payload.
To process these events, a dedicated SystemMessageType and consume service are required to parse the webhook payload, extract the relevant identifiers, and initiate the refund processing workflow.

@gemini-code-assist
Copy link

Summary of Changes

Hello @Prerakghatode, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes the foundational components for processing Shopify refund creation webhooks within the system. It introduces a specific system message type and a corresponding consumer service designed to ingest, parse, and act upon these refund events, thereby integrating Shopify's refund notifications into the internal workflow.

Highlights

  • New SystemMessageType for Shopify Refunds: A new SystemMessageType, 'ShopifyRefundCreateWebhook', has been added to handle incoming Shopify refund creation webhooks.
  • Dedicated Consumer Service: A new service, 'consume#ShopifyRefundWebhook', was implemented to process the 'ShopifyRefundCreateWebhook' system messages. This service parses the webhook payload and initiates the refund attribution flow.
  • Shopify Webhook Topic Mapping: The Shopify webhook topic 'refunds/create' is now mapped to the newly defined 'ShopifyRefundCreateWebhook' SystemMessageType, ensuring proper routing of these events.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new SystemMessageType and a consumer service to handle Shopify's refunds/create webhooks. The implementation is mostly correct, but I've identified a critical issue where the consumer service is misconfigured and would not be invoked. Additionally, there are a couple of medium-severity issues in the new service related to a redundant database query and an unresolved todo comment that should be addressed for better code quality and maintainability.

<return error="true" message="Refund webhook payload missing order_id. SystemMessageId=${systemMessageId}"/>
</if>
<!-- Trigger refund orchestration -->
<!-- todo: If required transaction="force-new" -->

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This todo comment should be resolved before merging. Leaving todo comments in the code can lead to technical debt. In this case, transaction="force-new" is likely not needed. Without it, if the create#ShopifyRefunds service call fails, the entire consumer service transaction will roll back, and the system message will be retried, which is typically the desired behavior for message consumers. Please remove this comment.

<set field="orderId" from="refundPayload.order_id"/>

<!-- Validate orderId -->
<if condition="!orderId">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is unnecessary validation.

</while>
</actions>
</service>
<service verb="consume" noun="ShopifyRefundWebhook" authenticate="anonymous-all" transaction-timeout="600">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think we should shift this to shopify-oms-bridge component since we are not directly getting data from Shopify here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create SystemMessageType for refund/create webhook and consume service

2 participants