Events
Power BI DataViz World Championships
Feb 14, 4 PM - Mar 31, 4 PM
With 4 chances to enter, you could win a conference package and make it to the LIVE Grand Finale in Las Vegas
Learn moreThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
This article provides an overview of omnichannel payments in Microsoft Dynamics 365 Commerce. It includes a comprehensive list of supported scenarios, information about functionality, setup, and troubleshooting, and descriptions of some typical issues.
Term | Description |
---|---|
Token | A string of data that a payment processor provides as a reference. Tokens can represent payment card numbers, payment authorizations, and previous payment captures. Tokens are important because they help keep sensitive data out of the point of sale (POS) system. They're sometimes also referred to as references. |
Card token | A token that a payment processor provides for storage in the POS system. A card token can be used only by the merchant who receives it. Card tokens are sometimes also referred to as card references. |
Authorization (auth) token | A unique ID that a payment process provides as part of the response that it sends to a POS system after the POS system makes an authorization request. An authorization token can be used later if the processor is called to perform actions such as reversing or voiding the authorization. However, it's most often used to capture funds when an order is fulfilled or a transaction is finalized. Authorization tokens are sometimes also referred to as authorization references. |
Capture token | A reference that a payment processor provides to a POS system when a payment is finalized or captured. The capture token can then be used to reference the payment capture in subsequent operations, such as refund requests. |
Card not present | A term that refers to payment transactions where a physical card isn't presented. For example, these transactions can occur in e-commerce or call center scenarios. For these transactions, the payment-related information is manually entered on an e-commerce website, in a call center flow, or on the POS or payment terminal. |
Card present | A term that refers to payment transactions where a physical card is presented and used on a payment terminal that is connected to the Microsoft Dynamics 365 POS system. |
In general, the term omnichannel payments describes the ability to create an order in one channel and fulfill it in another channel. The key to omnichannel payment support is preserving payment details together with the rest of the order details, and then using those payment details when the order is recalled or processed in another channel. A classic example is the "Buy online, pick up in store" scenario. In this scenario, the payment details are added when the order is created online. They're then recalled at the POS to charge the customer's payment card at the time of pickup.
All the scenarios that are described in this article can be implemented by using the standard Payments software development kit (SDK) that is provided with Commerce. The Dynamics 365 Payment Connector for Adyen provides an out-of-box implementation of every scenario that is described here.
Every scenario that is described in this article requires a payment connector that supports omnichannel payments. The out-of-box Adyen connector can also be used, because it supports the scenarios that are made available through the Payments SDK. For more information about how to implement payment connectors, and about the Retail SDK in general, visit the Retail for IT pros and developers home page.
The omnichannel payment capabilities that are described in this article were released as part of Microsoft Dynamics 365 for Retail version 8.1.3.
The Payments SDK relies on two sets of application programming interfaces (APIs) for payments. The first set of APIs is named iPaymentProcessor. It's used to implement "card not present" payment connectors that can be used in call centers and with the Microsoft Dynamics e-Commerce platform. For more information about the iPaymentProcessor interface, see the Implement a payment connector and a payment device white paper, which covers payments.
The second set of APIs is named iNamedRequestHandler. It supports the implementation of "card present" payment integrations that use a payment terminal. For more information about the iNamedRequestHandler interface, see Create a payment integration for a payment terminal.
The following components and setup steps are required:
Payment connectors and payment processors use tokens, or references, to reference interactions that are related to card payments. For example, when a payment authorization is requested, a reference to that authorization is provided. Therefore, the authorization can be referenced later, when funds are captured at the time of fulfillment. This authorization is unique to the merchant, payment connector, and processor.
If an order that was created online is being picked up in the store, the same payment details for that order must be recalled and used. When the original details are provided as part of the request to capture a payment against the original authorization, the payment processor will be able to handle the request and capture the payment.
To correctly reference the online order, a "card not present" payment connector that supports the same processor must also be available. In this way, the POS system can have one processor for "card present" payments, but it can also have access to other payment connectors so that it can fulfill orders that are created in other channels by using different payment processors.
The following omnichannel payment scenarios are supported:
Buy online, pick up in store
Buy in call center, pick up in store
Buy in store A, pick up in store B
Buy in store A, ship to customer
Note
Payments made in the call center that map to the "Normal" payment function must be marked as Prepay = Yes to be reflected in the amount due when recalling the order in the POS. Non-prepay payments of type "Normal" are not recognized when the order is recalled in POS.
Variations of these scenarios are also supported. For example, an online order might include both lines that will be shipped to the customer and lines that will be picked up in a store. All order fulfillment options are supported via omnichannel payments.
The following sections describe the steps for each scenario and show how to run the scenario by using demo data.
Before you start, make sure that the following prerequisites are in place:
Follow these steps to run the scenario.
In the reference storefront, create an order for in-store pickup. Be sure to select the Houston store.
Go through the checkout steps, and pay by using a test credit card number. You can find test credit card numbers on the Adyen test card numbers page.
In Commerce, use the Synchronize orders batch job and the P-001 distribution schedule to create the orders in the back office.
In the POS, on the welcome page, select the Orders to pickup operation to see the orders for in-store pickup.
Select one or more lines from the order that was created in the reference storefront, and then select Pick up.
The order is retrieved from the back office.
When the order line details are retrieved from the back office, and a card payment that can be used for omnichannel is detected, you're informed that a payment method is available.
Select Use available payment method to complete the transaction by using the card details that were entered in the reference storefront.
The order lines are loaded on the transaction page, and the balance due is 0 (zero).
Select the Payments tab to view the tender line that was pulled from the online order.
Select any payment method to complete the transaction.
In Commerce, on the Customer service page, enter Karen Berg in the search bar, and then select Search.
Select Karen Berg in the search results.
After Karen is loaded onto the Customer service page, select New sales order.
On the new sales order page, select Header to view the order header.
On the Order header page, set the site to Central and the warehouse to Houston.
On the Deliver tab, set the Mode of delivery field to 60 for customer pickup.
Select Lines, and then add one or more lines to the order.
Select Complete to enter the order completion flow.
Scroll down to the payments section, select Add, and then select a line where the payment method type is set to Cards.
Select the plus sign (+) to add a card payment.
Enter the details for a test credit card number that you found on the Adyen test card numbers page, and then select OK.
Note
If the card brand for the card number that you entered differs from the brand that was selected when the payment was initiated, the payment will still go through. However, it will be posted to the accounts that are mapped to the card brand that you selected in step 10.
Select OK again to close the Order completion payments dialog box.
On the Sales order summary page, select Submit.
In the POS, on the welcome page, select the Orders to pickup operation to see the orders for in-store pickup.
Select one or more lines from the order that was created in the reference storefront, and then select Pick up.
The order is retrieved from the back office.
When the order line details are retrieved from the back office, and a card payment that can be used for omnichannel is detected, you're informed that a payment method is available.
Select Use available payment method to complete the transaction by using the card details that were entered in the reference storefront.
The order lines are loaded on the transaction page, and the balance due is 0 (zero).
Select the Payments tab to view the tender line that was pulled from the online order.
Select any payment method to complete the transaction.
Start the POS for the Houston store.
On the Transaction page, add Karen Berg to the transaction by using the number pad to enter 2001.
Add one or more lines to the transaction.
Select Orders to see the order options.
Select Pick up all, and then, when you're prompted, select Customer order.
In the search bar, enter Seattle, and then select the Seattle store for pickup.
Select OK to accept the current date as the date of pickup.
Select Pay card to initiate the payment.
Tender the card payment for the amount that is due for the deposit.
Complete the deposit payment on the payment terminal.
After the deposit is paid, select the option to use the same card for fulfillment, and wait for the order to be completed. If 100% of the deposit is paid (from step 10 above), the funds are captured immediately against the card and an authorization token won't be available at invoicing because the funds have already been captured and tracked as paid.
Start the POS for the Seattle store.
In the POS, on the welcome page, select the Orders to pickup operation to see the orders for in-store pickup.
Select one or more lines from the order that was created in the reference storefront, and then select Pick up.
The order is retrieved from the back office.
When the order line details are retrieved from the back office, and a card payment that can be used for omnichannel is detected, you're informed that a payment method is available.
Select Use available payment method to complete the transaction by using the card details that were entered in the reference storefront.
The order lines are loaded on the transaction page, and the balance due is 0 (zero).
Select the Payments tab to view the tender line that was pulled from the online order.
Select any payment method to complete the transaction.
When the order is picked, packed, and invoiced in the back office, the payment details that are provided at the POS will be used to capture the funds for the goods that are being shipped to the customer.
In addition to the basic scenarios that were just described, several enhancements have been made to the Payments SDK to support omnichannel payments.
Before the omnichannel payments feature was implemented, when customer orders that included deposits were created at the POS, customers were required to swipe (or dip) their card two times: one time to pay the deposit and one time to tokenize the card for subsequent order fulfillment. When the omnichannel tokenization feature is turned on, customers must swipe their card only one time to both pay the deposit and authorize the amount that is due for goods that will be fulfilled later. At the time of fulfillment, the authorized funds are captured. Before the omnichannel tokenization feature was implemented, only a recurring card token was created for subsequent order fulfillment. Therefore, the funds for the pending fulfillment weren't authorized, and because those funds weren't being held for that specific purchase, it was less likely that they could be captured later.
Note
Single swipe isn't supported in Retail version 8.1.3. Customer orders in version 8.1.3 use the same flow that was used before the omnichannel tokenization feature was implemented.
Some cards can't be used for omnichannel payments, because they don't support issuing recurring card tokens. When an order is created at the POS, if the deposit is paid by using a card that doesn't support recurring card tokens, the previous card tokenization flow is used. Therefore, a customer who wants to provide a payment that will be used for subsequent order fulfillment must present a second card. If the second card doesn't support recurring card tokens, the tokenization action will be declined, and the cashier will be prompted to ask the customer to provide a different card.
A customer who comes to the store for order pickup has the option to use a different card. When the cashier receives the Use available payment method prompt at the time of order pickup, the cashier can ask whether the customer wants to use the same card. If the customer has lost the card that was used to create the order and wants to pay for the order by using a different card, the cashier can select Use a different payment method. If the customer comes back later to pick up more items for the same order, if the original card authorization is still valid, the cashier can again ask whether the customer wants to use that card.
If the card that was used to create an order is no longer valid, when products are selected for pickup, the payment capture request will fail. The POS payment connector will then try to create a new authorization and capture by using the same card details. If the new authorization or capture fails, the cashier will be informed that the payment couldn't be processed. The cashier must then get a new payment from the customer.
When an order that has multiple tenders and multiple lines is picked up, the cashier first receives the Use available payment method prompt. If there are multiple cards, when the cashier selects Use available payment method, existing card tender lines will be captured until the balance is met for the goods that are currently being picked up. The cashier won't have the option to select the card that should be used for the goods that are being picked up.
Events
Power BI DataViz World Championships
Feb 14, 4 PM - Mar 31, 4 PM
With 4 chances to enter, you could win a conference package and make it to the LIVE Grand Finale in Las Vegas
Learn more