gracenode-wallet Module
Coin management module for gracenode framework.
Requirements
In order for gracenode-wallet module to work properly, you need to add gracenode-mysql module to your application.
Before you start using gracenode-wallet
gracenode-wallet module uses mysql database to store validation data, you will need to create the required table for the module.
To create the required mysql table, you will need to execute the following SQL queries:
gracenode-wallet/schema.sql
If you need to execute the queries from Node.js application, you may do:
var gracenode = require('gracenode');
gracenode.setConfigPath('path/to/your/config/dir/');
gracenode.setConfigFiles(['yourConfig.json']);
gracenode.use('gracenode-mysql');
gracenode.use('gracenode-wallet');
gracenode.setup(function (error) {
if (error) {
return console.error(error);
}
gracenode.getModuleSchema('gracenode-wallet', function (error, sqlList) {
if (error) {
// hmm error
}
// execute the SQL queries in sqlList array here
});
});
How to include it in my project
To add this package as your gracenode module, add the following to your package.json:
"dependencies": {
"gracenode": "",
"gracenode-mysql": "",
"gracenode-wallet": ""
}
To use this module in your application, add the following to your gracenode bootstrap code:
var gracenode = require('gracenode');
// this tells gracenode to load the module
// make sure you load gracenode-mysql module BEFORE gracenode-wallet module
gracenode.use('gracenode-mysql');
gracenode.use('gracenode-wallet');
To access the module:
// the prefix gracenode- will be removed automatically
gracenode.wallet
Configurations
"modules": "gracenode-wallet": "names": an array of wallet names "sql": "mysql configuration name"
API: create
Wallet create(String walletName)
Returns an instance of Wallet class by a wallet name
The wallet name needs to be defined in the configuration file
Wallet class
getBalanceByUserId
void getBalanceByUserId(String uniqueUserId, Function callback)
Rerturns the current balance (paid and free separately) of a wallet in the callback as a second argument
add
void add(String uniqueReceiptHash, String uniqueUserId, Int price, Object values, Function onCallback, Function callback)
Adds "paid" and/or "free" to a wallet.
// this will add 100 paid and 30 free into the wallet "hc".
var hc = gracenode.wallet.create('hc');
hc.add(receipt, userId, { paid: 100, free: 30 }, handlOnCallback, finalCallback);
addPaid
void addPaid(String uniqueReceiptHash, String uniqueUserId, Int price, Int value, Function onCallback, Function callback)
Adds the value to a wallet as "paid"
"paid" represents that the user has paid real money
If onCallback is given: the function will be called BEFORE committing the "add" transaction, if an error occuries in onCallback, the transaction can be rolled back
addFree
void addFree(String uniqueReceiptHash, String uniqueUserId, Int value, Function onCallback, Function callback)
Adds the value to a wallet as "free"
"free" represents that the user has been given the value as free gift
If onCallback is given: the function will be called BEFORE committing the "add" transaction, if an error occuries in onCallback, the transaction can be rolled back
Example:
// example code with iap modulegracenodeiap;
spend
void spend(String uniqueUserId, Int value, String spendFor, Function onCallback, Function callback)
Spends value from a wallet if allowed
spendFor should represent what the user has spend the value for
If onCallback is given: the function will be called BEFORE committing the "spend" transaction, if an error occuries in onCallback, the transaction can be rolled back
Example:
// example of how to use wallet.spendvar itemToBePurchased = 'test.item.1000';var cost = 1000; // this is the amount that will be taken out of wallet 'hc'var hc = gracenodewallet;hc;