saksh-escrow
v1.0.9
Published
A Node.js package for secure escrow transactions between users.
Downloads
24
Maintainers
Readme
Saksh Escrow
Saksh Escrow is a Node.js package that provides an escrow service for secure transactions between users. It allows users to initiate, release, cancel, and dispute transactions, ensuring a safe and reliable payment process.
Features
- Initiate an escrow transaction
- Release funds from escrow
- Cancel an escrow transaction
- Raise and manage disputes
- Submit evidence for disputes
- Escalate disputes to mediation
- Resolve disputes and mediations
Installation
To install the package, run:
npm install saksh-escrow
Usage
Prerequisites
- Node.js
- MongoDB (Make sure to have a MongoDB instance running)
Example
Here's a basic example of how to use the Saksh Escrow package:
const mongoose = require('mongoose');
const EscrowService = require('saksh-escrow');
const SakshWallet = require('saksh-easy-wallet');
async function main() {
mongoose.connect('mongodb://localhost:27017/sakshescrow', {
useNewUrlParser: true,
useUnifiedTopology: true,
serverSelectionTimeoutMS: 30000 // Increase timeout to 30 seconds
}).then(() => console.log('MongoDB connected'))
.catch(err => console.error('MongoDB connection error:', err));
const sender = 'sender123';
const receiver = 'receiver123';
const escrowAdmin = 'susheelhbti';
const mediator = "mediator123";
const loggedInUser = sender;
const role = "user";
// here sender is a logged in user in the system
const escrowService = new EscrowService(loggedInUser, role); // the role is require when admin or mediator otherwise optional
try {
let currency = "USD";
const wallet = new SakshWallet();
await wallet.sakshCredit(loggedInUser, 100000, currency, referenceId, `test transfer`);
// Example: Initiate an escrow
const escrow = await escrowService.initiateEscrow(sender, receiver, 100, currency, 'Payment for services');
console.log('Escrow initiated:', escrow);
// Example: Release funds from escrow
const releasedEscrow = await escrowService.releaseEscrow(escrow._id);
console.log('Escrow released:', releasedEscrow);
/*
// Example: Cancel an escrow
const canceledEscrow = await escrowService.cancelEscrow(escrow._id);
console.log('Escrow canceled:', canceledEscrow);
const eid = "67010a27e49b5789b048fa37";
// Example: Raise a dispute
const disputedEscrow = await escrowService.raiseDispute(eid, 'Service not delivered', 'Service Issue');
console.log('Dispute raised:', disputedEscrow);
// Example: Submit evidence for a dispute
const evidenceEscrow = await escrowService.submitEvidence(eid, 'http://example.com/evidence.jpg');
console.log('Evidence submitted:', evidenceEscrow);
// Example: Escalate a dispute
const escalatedEscrow = await escrowService.escalateDispute(eid, 'Level 2');
console.log('Dispute escalated:', escalatedEscrow);
// Example: Escalate to mediation
const mediationEscrow = await escrowService.escalateToMediation(eid, mediator);
console.log('Escalated to mediation:', mediationEscrow);
//Example: Resolve mediation
const resolvedMediation = await escrowService.resolveMediation(eid, 'RELEASE');
console.log('Mediation resolved:', resolvedMediation);
// Example: Resolve a dispute
const resolvedDispute = await escrowService.resolveDispute(escrow._id, 'RELEASE');
console.log('Dispute resolved:', resolvedDispute);
*/
} catch (error) {
console.error('Error:', error);
} finally {
// Close the MongoDB connection
await mongoose.connection.close();
}
}
main();
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
Contact
For any inquiries, please contact susheel2339 @ gmail.com.
Feel free to modify the content, especially the MongoDB connection string, email, and any other specific details related to your project.