What's pending across every project
1 open · sorted by priority then due-date
Filtered by tag reference clear
note
low
Reference: Razorpay VPA + customer data extraction from qr_code.credited
Where to find each customer field in the qr_code.credited webhook payload. Confirmed from Razorpay official docs (docs/webhooks/qr-codes).
**Payload path for VPA:** `payload.payment.entity.vpa`
**Trimmed sample:**
```json
{
"event": "qr_code.credited",
"contains": ["payment", "qr_code"],
"payload": {
"payment": {
"entity": {
"id": "pay_HO2fEpc9JeOQU5",
"amount": 200,
"method": "upi",
"vpa": "gauri.kumar@okhdfcbank",
"email": "gauri.kumari@example.com",
"contact": "+919000090000",
"customer_id": "cust_HKsR5se84c5LTO",
"notes": {},
"acquirer_data": { "rrn": "116812981837" }
}
},
"qr_code": {
"entity": {
"id": "qr_HO2e0813YlchUn",
"notes": { "charger_id": "VAJRA0001", "connector_id": "2" }
}
}
}
}
```
**Two subtle gotchas:**
1. **Two separate `notes` blocks** — `payload.payment.entity.notes` is per-payment (usually empty for QR), and `payload.qr_code.entity.notes` is the QR's notes (where we set charger_id + connector_id at QR creation). Read the second one for gun identification.
2. **VPA presence:** always present for QR-triggered payments (method is always upi). Fallback: null.
**Go struct extraction:** see TDD §4.3 `qrCreditedPayload`.
**Fallback retrieval (webhook lost):**
- `GET /v1/payments/pay_XXX` — fetch single payment; includes vpa
- `GET /v1/payments/qr_codes/qr_XXX/payments` — list all payments for a QR (great for admin ops "show all payments to this gun")
Sources:
- https://razorpay.com/docs/webhooks/qr-codes/
- https://razorpay.com/docs/webhooks/payloads/payments/</body>
docs/TDD-walkin-qr-v0.md↗ https://razorpay.com/docs/webhooks/qr-codes/↗ https://razorpay.com/docs/webhooks/payloads/payments/
Vajra Volt Mobile App
· vajra-mobile-app
· by saravanan@scrumclaw.ai
6d ago
08-02 12:10
08-02 12:10