upiqrcode
Version:
Generate UPI QR codes as SVG — compiled to WebAssembly
142 lines (107 loc) • 3.94 kB
Markdown
Generate UPI QR codes as SVG — compiled to WebAssembly.
[](https://www.npmjs.com/package/upiqrcode)
[](./LICENSE_APACHE)
```bash
npm install upiqrcode
```
Generates a UPI payment QR code as an SVG string along with the UPI intent URL.
```tsx
import { useState, useEffect } from "react";
import init, { upiqrcode, type UpiqrcodeResult } from "upiqrcode";
function UPIQRCode() {
const [qrSvg, setQrSvg] = useState("");
const [intent, setIntent] = useState("");
const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
useEffect(() => {
const generateQR = async () => {
setLoading(true);
try {
await init();
const result = (await upiqrcode({
payeeVPA: "pratyay2003@upi",
payeeName: "pratyay mustafi",
amount: "100.00",
transactionNote: "Payment for services",
})) as UpiqrcodeResult;
setQrSvg(result.qr);
setIntent(result.intent);
} catch (err) {
console.error("Error generating QR code:", err);
setError(err instanceof Error ? err.message : String(err));
} finally {
setLoading(false);
}
};
generateQR();
}, []);
if (loading) return <div>Loading...</div>;
if (error) return <div>Error: {error}</div>;
return (
<div>
<h2>UPI Payment QR Code</h2>
<div dangerouslySetInnerHTML={{ __html: qrSvg }} />
<p>UPI Intent: {intent}</p>
</div>
);
}
export default UPIQRCode;
```
| Field | Type | Required | Description |
|----------------------|----------|----------|------------------------------------|
| `payeeVPA` | `string` | ✅ | UPI Virtual Payment Address (VPA) |
| `payeeName` | `string` | ✅ | Name of the payee |
| `amount` | `string` | — | Transaction amount |
| `minimumAmount` | `string` | — | Minimum acceptable amount |
| `currency` | `string` | — | Currency code (default: `INR`) |
| `transactionId` | `string` | — | Unique transaction ID |
| `transactionRef` | `string` | — | Transaction reference |
| `transactionNote` | `string` | — | Note or description |
| `payeeMerchantCode` | `string` | — | Merchant category code |
| `transactionRefUrl` | `string` | — | Reference URL |
### `UpiqrcodeResult`
| Field | Type | Description |
|----------|----------|--------------------------|
| `qr` | `string` | SVG markup of the QR code |
| `intent` | `string` | Generated UPI intent URL |
## React Example
```tsx
import { useState, useEffect } from "react";
import init, { upiqrcode, type UpiqrcodeResult } from "upiqrcode";
function UPIQRCode() {
const [qrSvg, setQrSvg] = useState("");
const [intent, setIntent] = useState("");
useEffect(() => {
(async () => {
await init();
const result = (await upiqrcode({
payeeVPA: "example@upi",
payeeName: "John Doe",
amount: "100.00",
transactionNote: "Payment for services",
})) as UpiqrcodeResult;
setQrSvg(result.qr);
setIntent(result.intent);
})();
}, []);
return (
<div>
<div dangerouslySetInnerHTML={{ __html: qrSvg }} />
<p>Intent: {intent}</p>
</div>
);
}
```
Requires [Rust](https://rustup.rs/) and [wasm-pack](https://rustwasm.github.io/wasm-pack/).
```bash
wasm-pack build --target bundler
```
[](./LICENSE_APACHE)