Create dynamic QR for payment
This flow uses a one-time payment QR (i.e., a dynamic QR) that is shown on a screen.
The QR directs the customer to the Vipps or MobilePay
app, where they authorize the payment.
This flow works great when you don't have the phone number, because the risk of the customer entering the wrong one is reduced.
Fewer clicks = faster payments.
π© Here, the user makes selections on the vending machine, gets a dynamic QR on a screen there, then pays in the app.
When to useβ
This is the preferred flow when it's possible to show a dynamic QR code on the vending machine.
Use this flow when you have a screen connected.
Prerequisitesβ
Screenβ
You need a screen to display the one-time QR.
Detailsβ
A one-time payment QR code is presented on the vending machine. The QR code is a dynamic representation of the payment URL, and the customer needs to scan the QR code and pay within 10 minutes.
Step 1: Generate a dynamic QR code and payment requestβ
When the customer selects a product, generate the payment request with a dynamic QR code.
Specify "userFlow": "QR"
to initiate the flow.
Per regulations, specify "customerInteraction": "CUSTOMER_PRESENT"
.
Detailed example
To generate the dynamic QR code and associated payment request, specify "userFlow": "QR"
.
You may also specify the qrFormat
and size
for the QR.
Specify "customerInteraction": "CUSTOMER_PRESENT"
.
You can also include order details at this time.
Since the customer will scan from their phone, you don't need their phone number. This payment command can do an app-switch and open their Vipps or MobilePay app with the payment request.
Here is an example HTTP POST:
With body:
{
"amount": {
"value": 42924,
"currency": "NOK"
},
"paymentMethod": {
"type": "WALLET"
},
"customerInteraction": "CUSTOMER_PRESENT",
"receipt":{
"orderLines": [
{
"name": "Ear buds",
"id": "21231211",
"totalAmount": 42924,
"totalAmountExcludingTax": 34339,
"totalTaxAmount": 8585,
"taxRate": 2500,
},
],
"bottomLine": {
"currency": "NOK",
"posId": "vending_machine_12345",
"receiptNumber": "0527013501"
},
},
"reference": 2486791679658155992,
"userFlow": "QR",
"returnUrl": "http://example.com/redirect?reference=2486791679658155992",
"paymentDescription": "Ear buds",
"qrFormat": {
"format": "IMAGE/SVG+XML",
"size": 1024
}
}
Step 2: Display the QR on the screenβ
Display the one-time QR on a screen facing the customer.
Step 3: The customer authorizes the paymentβ
The customer scans the QR code and are directed to the Vipps or MobilePay app. The payment screen is presented and they click Pay.
To determine that the user has authorized the payment, you can get notifications via the Webhooks API and/or poll for the status.
Once the payment is approved, update the status in your system.
Step 4: Capture the paymentβ
Capture the payment and confirm that it was successful.
Sequence diagramβ
Integration sequence for the vending machine flow with dynamic QR directing to the app for payment.
Dynamic QR directing to the app
Next stepsβ
For details about this feature, see: