Hi,
I'm wiring up webhooks for a Commerce Payments integration with Authorize.Net. The notify endpoint Salesforce gives me is:
/services/data/vNN.0/commerce/payments/notify?provider=<paymentGatewayProviderId>
The ?provider= is what routes the notification to my custom PaymentGatewayProvider. Problem: Authorize.Net's webhook config rejects any URL with a query string, so I can't register this URL as-is in their merchant interface. The value isn't a secret - it's just routing.
Questions:
- Can the notify endpoint resolve the provider without the query param (path-based, header, or otherwise)?
- If not, what's the recommended pattern for gateways like Authorize.Net whose webhook config won't accept query strings?
Thanks!
#B2B Commerce
Hey @Lili Stoyanova
No, Salesforce can’t resolve the provider without that provider query param. It’s required to route the webhook to the correct PaymentGatewayProvider, and there’s no supported alternative like path or header.
Since Authorize.Net doesn’t accept query strings, you won’t be able to use the Salesforce notify URL directly.
Best practice here is to put a small middleware in between. Authorize.Net will call your clean endpoint (without query params), and then your middleware forwards the request to Salesforce by adding the ?provider=... internally.
You can do this with MuleSoft, AWS Lambda, Azure Function, or even a simple custom API.
So basically, Salesforce side can’t change this behavior, the fix has to be on the integration layer.
Hope this works!