Stripe and Adyen Smart Payments Enhancements (DEV-11042)
The following enhancements for Aria Smart Payments are included in this release:
A new REST API handles the following Webhook notifications triggered by the Stripe payment notification service:
- charge.refunded.updated (for a successfully processed failed refund)
- charge.succeeded
- charge.captured
- charge.failed
- payment_intent.canceled
Note: When an unsupported event is triggered by Stripe, Aria acknowledges receipt but will not process the event.
Aria also now supports the Stripe Account Updater for the following notification events (for credit cards requiring an update or reaching expiration):
Event |
Description |
payment_method.updated |
Notifies you of updates to a card through an API call |
payment_method.automatically_updated |
Notifies you of automatic card updates from the network |
payment_method.detached |
Notifies you that the payment method should be disabled in Aria |
Note: Aria needs to configure the endpoint URL in the Stripe dashboard for merchants; an example follows:
https://payment-notification-service-idaho-dev-dev0.devfarm.ariasystems.net/api/v1/webhook/account-updater/stripe/client/<client_no>/group/< group_no>
Field |
Description |
client_no |
Client number is a mandatory input in the endpoint URL. |
group_no |
Collection group number is an optional input; If a collection group number is configured on the endpoint URL in the Stripe Dashboard, then Aria will use the secret key of the respective collection group when verifying Stripe webhook notifications. If a collection group number is not configured on the endpoint URL, the secret key in the payment gateway settings will be used. |
The Mandate Collection Method field has also been introduced in support ACH, SEPA and BACS Direct Debit payments. This can be configured at the Payment Gateway or Collection Group (Configuration > Payments > Payment Gateways/Collection Groups > Processing Options) levels (Collection Group takes precedence). This field specifies how you will authorize the mandate for direct debit collection. Select from the following:
If the mandate is collected online, the following must be collected and passed in the collection API:
Field |
Description |
IP Address |
The IP Address from which the Mandate was accepted by the customer. |
User Agent |
The user agent of the browser from which the Mandate was accepted by the customer. |
If offline, you must collect and maintain the authorization in your records.
Webhook Secret Payment Notification
Also, as part of Stripe’s Smart Payments notification support, a field has been added at the Payment Gateway and Collection Group levels in order to populate a separate webhook key (Configuration > Payments > Payment Gateways/Collection Groups > Merchant Account Details > Payment Events Webhook Key). This field accepts the same alphanumeric values as Account Updater Webhook Key field.
SEPA Direct Debit Payments
Stripe now supports SEPA Direct Debit payments, allowing your customers to make recurring payments by providing their SEPA bank account (IBAN) or token to make recurring payments with pay_method = 37 (for the create_acct_complete_m and update_payment_method_m APIs).
For outside tokens, you should set up both the payment method and customer for future usage off-session and combine them (payment_method_id:customer_id) in the field. If either the ID is missing or the token is not in the valid format, the following error is generated: “Invalid token. The valid token format is payment_method_id:customer_id.”
Additionally SEPA direct debit in Stripe requires a “mandate collection method” to be passed in the initial payment request with IBAN.
The mandate collection method supports two different inputs:
If online is chosen, the client needs to pass IP Address and User Agent in the <proc_field_override> array.
- IP Address: The IP address from which the Mandate was accepted by the customer.
- User Agent: The user agent of the browser from which the Mandate was accepted by the customer.
These fields can be sent in the array for API overrides, as shown:
proc_field_name |
proc_field_value |
mandate_collection_method |
By default it will be set to offline. API input values = 1(online), 0(offline) |
end_user_ip_address |
IP address |
end_user_browser_agent |
Browser user agent |
Chargeback Support: Aria will handle the chargeback using a Stripe event received from Stripe when a SEPA Payment is disputed.
Refund Support: Aria supports both partial and full refund functionality for SEPA Direct Debit payments.
Stripe Support - Recurring Process Model (RPM)
Aria introduces Recurring Process Model (RPM) support for Stripe for the following card types (for pay_method 13 – Tokenized Credit Card):
- American Express
- Diners Club International
- Discover
- Japan Credit Bureau (JCB)
- Mastercard
- Union Pay
- VISA
Field mapping for the <rpm_ind> input parameter appears below (for the authorize_electronic_payment_m API):
<rpm_ind> |
initial/subsequent |
create_payment_intent* field |
create_payment_intent* field |
**CIT/MIT |
|
|
<setup_future_usage> |
<off_session> |
|
0,1,2,3 |
Initial transaction (successful collection count = 0) |
off_session |
N/A |
Both CIT and MIT |
2,3 |
Subsequent transactions (successful collection count > 0) |
N/A |
true |
MIT |
*-create_payment_intent is an API specific to Stripe.
**-Cardholder-Initiated Transactions/Merchant-Initiated Transactions
Stripe integration now also includes BACS Direct Debit support (for pay method = 37 – Tokenized Direct Debit). BACS is responsible for the clearing and settlement of U.K. automated payment methods.
For this, Aria accepts the webhooks below to get payment status as BACS is an asynchronous payment method:
- payment_intent.succeeded
- payment_intent.payment_failed
Mandate:Customer mandate is required. This can be done via offline/online mode. If the mandate is done online, you need to pass the end_user_ip_address and end_user_browser_agent details.
Note: BACS is supported in the U.K. with the GBP currency type only.
Additionally, Aria’s Stripe integration now includes ACH Direct Debit support (for pay method = 48 – Tokenized ACH).
For this, Aria accepts the webhooks below to get payment status:
- payment_intent.succeeded
- payment_intent.payment_failed
Mandate:Customer mandate is required. This can be done via offline/online mode. If the mandate is done online, you need to pass the end_user_ip_address and end_user_browser_agent details.
After an initial payment and Aria receives the micro_deposit_url upon successful microdeposit verification, the payment will be successful.
Refund Support: Aria is supporting both partial and full refund functionality for ACH Direct Debit payments and the “charge.refunded.updated” event is received from Stripe.
Chargeback Support: Aria will handle the chargeback using the Stripe event “charge.dispute.closed” which Aria receives from Stripe when an ACH Payment is disputed.
Note: ACH is supported in the U.S. with the USD currency type only.
Learn more about Stripe's Smart Payments integration from here.
Adyen Support - Recurring Process Model (RPM)
Aria also now supports the Recurring Process Model (RPM) feature for the VISA, Mastercard and Discover card types as part of Smart Payments integration.
<rpm_ind> |
*CIT/MIT |
Payment Schedule |
Adyen payment request fields |
|
|
|
recurringProcessing Model |
shopperinteraction |
networkTxReference |
0 |
CIT |
Recurring (Unscheduled) |
CardOnFile |
If bill_info_proc_success_coll_cnt = 0 |
Not Required |
1 |
CIT |
One-time (Unscheduled) |
Subscription |
do |
Not Required |
2 |
MIT |
Recurring (Scheduled) |
Subscription |
do |
Need to pass for pay method = 1 alone when shopperInteraction is ContAuth |
3 |
MIT |
One-time (Scheduled) |
UnscheduledCardOnFile |
do |
Need to pass for pay method = 1 alone when shopperInteraction is ContAuth |
- If the pay method is 13 (Tokenized Credit Card), then the shopperReference should be set to ‘ContAuth.’
- If the CVC (CVV) is not present in the request, then the shopperReference should be set to ‘ContAuth.’
- If Aria makes the payment using the agreement_id, then the Adyen RPM setting should be “Subscription.”
*-Cardholder-Initiated Transactions/Merchant-Initiated Transactions
This applies to the authorize_electronic_payment_m API.
Learn more about Adyen's Smart Payments integration from here.