Click & Collect

Another Omnichannel use case that is frequently offered is Click & Collect. Customers can order and pay products online and later pick them up in the local store.
The PAYONE Commerce Platform / Commerce Portal can be used as the central system for the employee in the store to retrieve all relevant information about the Checkout.

Process flow

High-level summary:

  • Customer orders and pay products online and receives an order confirmation (e.g. with the Checkout-ID as barcode or QR-Code).
  • Customer presents the order confirmation in the local store
  • Employee retrieves the checkout using the checkout reference or personal information in the Commerce Portal.
  • The payment status can be retrieved and - if not already done - the employee can capture the money from the reservation.
  • Customer leaves the shop with the goods.
To trigger payments from the portal, the necessary role needs to be configured for the shop employee. 

---end

Create Commerce Case with Checkout in Webshop

POST Commerce Case

---end

Request
POST/v1/{merchantId}/commerce-cases
{
    "merchantReference": "Sample-Commerce-Case",   
    "customer": {
        "companyInformation": {
            "name": "Customer Company Name"
        },
        "billingAddress": {
            "city": "Musterstadt",
            "countryCode": "DE",
            "houseNumber": "1",
            "state": "SH",
            "street": "Musterstraße",
            "zip": "12345"
        },
        "merchantCustomerId": "Test-Customer",
        "contactDetails": {
            "emailAddress": "max@mustermann.de",
            "phoneNumber": "+1234567890"
        },
        "fiscalNumber": "fiscalNumber",
        "businessRelation": "B2C",
        "locale": "de",
        "personalInformation": {
            "gender": "MALE",
            "name": {
                "firstName": "Max",
                "surname": "Mustermann"
            },
            "dateOfBirth": "19950411"
        }
    },
    "checkout": {
        "amountOfMoney": {
            "amount": 49900,
            "currencyCode": "EUR"
        },
        "references": {
            "merchantReference": "ClickCollect_12345"
        },
        "shipping": {
            "address": {
                "city": "Musterstadt",
                "countryCode": "DE",
                "houseNumber": "1",
                "state": "SH",
                "street": "Musterstraße",
                "zip": "12345",
                "name": {
                    "firstName": "Max",
                    "surname": "Mustermann"
                }
            }
        },
        "shoppingCart": {
            "items": [
                {
                    "invoiceData": {
                        "description": "Laptop"
                    },
                    "orderLineDetails": {
                        "productCode": "LNVO-245",
                        "productPrice": 49900,
                        "productType": "GOODS",
                        "quantity": 1,
                        "taxAmount": 19
                    }
                }
            ]
        }
    }
}

---end

Response
{
  "commerceCaseId": "4831274f-fdb7-42cc-a2c6-4215a0183f13",
  "merchantReference": "Sample-Commerce-Case",
  "customer": {
    "companyInformation": {
      "name": "Customer Company Name"
    },
    "merchantCustomerId": "Test-Customer",
    "billingAddress": {
      "city": "Musterstadt",
      "countryCode": "DE",
      "houseNumber": "1",
      "state": "SH",
      "street": "Musterstraße",
      "zip": "12345"
    },
    "contactDetails": {
      "emailAddress": "max@mustermann.de",
      "phoneNumber": "+1234567890"
    },
    "fiscalNumber": "fiscalNumber",
    "businessRelation": "B2C",
    "locale": "de",
    "personalInformation": {
      "dateOfBirth": "19950411",
      "gender": "MALE",
      "name": {
        "firstName": "Max",
        "surname": "Mustermann"
      }
    }
  },
  "checkout": {
    "checkoutId": "a382873e-2496-423c-a9f5-1f549c431016",
    "shoppingCart": {
      "items": [
        {
          "invoiceData": {
            "description": "Laptop"
          },
          "orderLineDetails": {
            "id": "00287105-5495-4843-bf85-7620a5f7ca8e",
            "productCode": "LNVO-245",
            "productPrice": 49900,
            "productType": "GOODS",
            "quantity": 1,
            "taxAmount": 19
          }
        }
      ]
    },
    "amountOfMoney": {
      "amount": 49900,
      "currencyCode": "EUR"
    },
    "references": {
      "merchantReference": "ClickCollect_12345"
    },
    "shipping": {
      "address": {
        "city": "Musterstadt",
        "countryCode": "DE",
        "houseNumber": "1",
        "state": "SH",
        "street": "Musterstraße",
        "zip": "12345",
        "name": {
          "firstName": "Max",
          "surname": "Mustermann"
        }
      }
    },
    "checkoutStatus": "OPEN",
    "statusOutput": {
      "paymentStatus": "WAITING_FOR_PAYMENT",
      "isModifiable": true,
      "openAmount": 0,
      "collectedAmount": 0,
      "cancelledAmount": 0,
      "refundedAmount": 0,
      "chargebackAmount": 0
    },
    "creationDateTime": "2024-02-11T16:49:33.984616012Z",
    "allowedPaymentActions": [
      "ORDER_MANAGEMENT",
      "PAYMENT_EXECUTION"
    ]
  },
  "creationDateTime": "2024-02-11T16:49:33.984616012Z"
}

---end

Create Order for checkout

POST Order

---end

Request
POST/v1/commerce-cases/{commerceCaseId}/checkouts/{checkoutId}/order
{
    "orderType": "FULL",
    "orderReferences": {
        "merchantReference": "ClickCollect12345"
    },
    "paymentMethodSpecificInput": {
        "redirectPaymentMethodSpecificInput": {
            "requiresApproval": true,
            "tokenize": true,
            "paymentProductId": 990,
            "redirectionData": {
                "returnUrl": "yourReturnURL"
            }
        },
        "paymentChannel": "ECOMMERCE"
    }
}

The Order can also be initialized when creating Commerce Case and Checkout by setting autoExecuteOrder = true.

---end

Retrieve Checkout in Commerce Portal

The Checkout can be retrieved in the Commerce Portal using the Checkout reference or personal information of the customer as filter:

Checkout with matching reference will be shown:

Click on the checkout to display details:

Check Payment Status

Deliver Items to capture payment and to update item status

If the Order was done as a reservation (for redirect payments: requiresApproval = true) in the webshop, the payment can captured and the Checkout items marked as delivered using the Checkout actions:

Perform deliver

Deliver status notification

For the Click & Collect use case it makes sense to perform the Order as a reservation since it can be cancelled by the customer before collecting the item(s) in your local store. The Deliver / Capture can be done using the Commerce Portal as well as directly from your systems using the respective endpoints from the Commerce Platform.

---end