Create Basic Payment Request
Copy
import { getInstance } from '@handcash/sdk';
const sdk = getInstance({
appId: 'your-app-id',
appSecret: 'your-app-secret'
});
const paymentRequest = await sdk.createPaymentRequest({
amount: 25.00,
currency: 'USD',
description: 'Payment for premium subscription',
redirectUrl: 'https://yoursite.com/payment-success',
cancelUrl: 'https://yoursite.com/payment-cancelled'
});
console.log('Payment URL:', paymentRequest.paymentUrl);
console.log('QR Code Data:', paymentRequest.qrCode);
console.log('Request ID:', paymentRequest.id);
Payment Request with Items
Copy
const paymentRequest = await sdk.createPaymentRequest({
amount: 50.00,
currency: 'USD',
description: 'Purchase digital items',
items: [
{
name: 'Premium Sword',
description: 'Legendary weapon',
quantity: 1,
price: 30.00
},
{
name: 'Health Potion',
description: 'Restores 100 HP',
quantity: 2,
price: 10.00
}
],
redirectUrl: 'https://yoursite.com/purchase-success'
});
Custom Payment Request
Copy
const paymentRequest = await sdk.createPaymentRequest({
amount: 100.00,
currency: 'USD',
description: 'Custom payment request',
customData: {
orderId: 'ORDER-12345',
customerId: 'CUST-67890',
metadata: {
source: 'mobile-app',
campaign: 'summer-sale'
}
},
redirectUrl: 'https://yoursite.com/order-complete',
cancelUrl: 'https://yoursite.com/order-cancelled',
expiresAt: new Date(Date.now() + 30 * 60 * 1000) // 30 minutes
});
Display QR Code
Copy
// Generate QR code for display
const qrCodeData = paymentRequest.qrCode;
// In your frontend
<img src={`data:image/png;base64,${qrCodeData}`} alt="Payment QR Code" />
// Or use a QR code library
import QRCode from 'qrcode';
const qrCodeUrl = await QRCode.toDataURL(paymentRequest.paymentUrl);
Payment Request Response
Copy
{
"id": "pr_123456789",
"paymentUrl": "https://pay.handcash.io/pr_123456789",
"qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"amount": 25.00,
"currency": "USD",
"description": "Payment for premium subscription",
"status": "pending",
"createdAt": "2024-01-15T10:30:00Z",
"expiresAt": "2024-01-15T11:00:00Z"
}
Error Handling
Copy
try {
const paymentRequest = await sdk.createPaymentRequest({
amount: 25.00,
currency: 'USD',
description: 'Payment request'
});
} catch (error) {
if (error.code === 'INVALID_AMOUNT') {
console.log('Amount must be greater than 0');
} else if (error.code === 'INVALID_CURRENCY') {
console.log('Currency not supported');
} else if (error.code === 'INVALID_REDIRECT_URL') {
console.log('Redirect URL must be HTTPS');
} else {
console.log('Payment request creation failed:', error.message);
}
}