> ## Documentation Index
> Fetch the complete documentation index at: https://sdk.qfapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Physical Store / Restaurant

> Recommended QFPay integrations for physical stores, restaurants, cafés, and other in-person payment environments.

This guide helps merchants choose the appropriate QFPay APIs when accepting payments in physical stores, restaurants, cafés, supermarkets, or any other in-person payment environment.

Many real-world deployments require a combination of multiple QFPay APIs rather than a single integration.

## Suitable For

This integration scenario is recommended for merchants operating:

* Restaurants
* Cafés
* Retail stores
* Supermarkets
* Convenience stores
* Service providers
* Any business with face-to-face payments

## Typical Setup

A typical merchant environment may include:

* A cashier system or ECR
* A QFPay POS terminal
* Customer-facing QR codes for ordering or payment
* A merchant backend for order management and reconciliation

## Recommended Integration

| Payment Experience                                             | Recommended Integration                                  | Description                                                                                                                                                |
| -------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cashier collects payment using a POS terminal                  | [POS API](/integration/in-store/pos-api/ecr)             | The cashier system sends the payment amount to the QFPay POS terminal. Customers can pay using cards, digital wallets, or other supported payment methods. |
| Customer scans a table QR code and pays on their mobile device | H5 Payment / WAP Payment                                 | Customers place an order and complete payment through a mobile web payment page.                                                                           |
| Customer scans a QR code displayed by the merchant             | [Merchant Present Mode (MPM)](/integration/in-store/MPM) | Generate a dynamic payment QR code for customer wallet payments.                                                                                           |
| Merchant scans the customer's wallet barcode                   | [Consumer Present Mode (CPM)](/integration/in-store/CPM) | Scan customer wallet barcodes for quick payment collection.                                                                                                |

## Example Solution

### Restaurant Table QR Ordering

A common restaurant scenario where customers scan a QR code at their table to browse the menu, place orders, and complete payment from their mobile device.

1. Customer scans the table QR code.
2. The merchant's H5 ordering page opens.
3. Customer places an order.
4. Merchant backend creates a payment using the H5 / WAP Payment API.
5. Customer completes payment through the selected wallet or payment method.
6. Merchant backend receives the payment result through [**Asynchronous Notifications**](/integration/common-api/async-notifications).
7. If necessary, the backend verifies the payment result using [**Transaction Enquiry**](/integration/common-api/transaction-enquiry).
8. The order status is updated and food preparation begins.

## Best Practices

<Warning>
  Always implement[Transaction Enquiry](/integration/common-api/transaction-enquiry) as a fallback mechanism when confirming payment results.

  Although [**Asynchronous Notifications**](/integration/common-api/async-notifications) should be the primary method for receiving payment results, network issues or customer interruptions may prevent notifications from being received immediately.

  QFPay recommends:

  * Use [**Asynchronous Notifications**](/integration/common-api/async-notifications) as the primary payment callback.
  * Use [**Transaction Enquiry**](/integration/common-api/transaction-enquiry) whenever the payment result is uncertain.
  * Do not rely solely on browser redirects or customer actions to determine payment success.

  This approach helps prevent orders from remaining in an unknown payment state.
</Warning>

<Tip>
  Keep payment processing, order fulfilment, and reconciliation as separate backend processes to improve system reliability and simplify exception handling.
</Tip>

## Related Documentation

<CardGroup cols={2}>
  <Card title="POS API" href="/integration/in-store/pos-api">
    Integrate cashier systems with QFPay POS terminals.
  </Card>

  <Card title="ECR Integration" href="/integration/in-store/pos-api/ecr-https">
    Connect ECR systems to QFPay POS terminals.
  </Card>

  <Card title="H5 Payment" href="/integration/online-shop/integration-by-payment-type/wechat/wechat-pay-h5">
    Mobile browser payment for QR ordering and self-service payment.
  </Card>

  <Card title="Merchant Present Mode (MPM)" href="/integration/in-store/MPM">
    Generate dynamic QR codes for customer wallet payments.
  </Card>

  <Card title="Consumer Present Mode (CPM)" href="/integration/in-store/CPM">
    Scan customer wallet barcodes for payment collection.
  </Card>

  <Card title="Transaction Enquiry" href="/integration/common-api/transaction-enquiry">
    Query payment status to confirm transaction results.
  </Card>

  <Card title="Asynchronous Notifications" href="/integration/common-api/async-notifications">
    Receive real-time payment notifications from QFPay.
  </Card>
</CardGroup>

## Next Steps

Once you have identified the appropriate integration methods for your business, continue with the corresponding API documentation to begin implementation.
