ws402
Version:
WebSocket implementation of X402 protocol for pay-as-you-go digital resources with automatic refunds
51 lines (50 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockPaymentProvider = void 0;
/**
* Mock payment provider for testing and development
* Replace with real payment provider in production
*/
class MockPaymentProvider {
constructor() {
this.payments = new Map();
}
generatePaymentDetails(amount) {
const invoiceId = `mock_invoice_${Date.now()}`;
return {
provider: 'mock',
invoiceId,
amount,
currency: 'MOCK',
paymentAddress: '0xMOCK_ADDRESS',
instructions: 'This is a mock payment. In production, replace with real payment provider.',
};
}
async verifyPayment(proof) {
// Simulate async verification
await new Promise(resolve => setTimeout(resolve, 100));
// Mock verification - always succeeds with proof amount
if (proof && proof.amount) {
this.payments.set(proof.txId || 'mock_tx', proof.amount);
return {
valid: true,
amount: proof.amount,
};
}
return {
valid: false,
amount: 0,
reason: 'Invalid payment proof',
};
}
async issueRefund(proof, amount) {
// Simulate async refund
await new Promise(resolve => setTimeout(resolve, 100));
console.log(`[MockPaymentProvider] Refund issued: ${amount} to ${proof.userId || 'unknown'}`);
}
// Helper for testing
getPaymentHistory() {
return Array.from(this.payments.entries());
}
}
exports.MockPaymentProvider = MockPaymentProvider;