Skip to content

Commit

Permalink
Merge pull request #1 from keeratita/add-source-api
Browse files Browse the repository at this point in the history
Add source api & update dependencies
  • Loading branch information
keeratita authored Jun 23, 2018
2 parents 1b25bec + 0a17cbc commit 7cd9a38
Show file tree
Hide file tree
Showing 9 changed files with 433 additions and 187 deletions.
17 changes: 14 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Omise.config('pkey_test_596un7xggnyo73nm7an', '2015-11-17');
```

## Usage

### Create a token
```
const data = await Omise.createToken({
'card': {
Expand All @@ -30,7 +30,18 @@ const data = await Omise.createToken({
'expiration_year': 2018,
'security_code': 123
}
});
});
console.log("data", data);
```

### Create a source
```
const data = await Omise.createSource(
'type': 'internet_banking_bbl',
'amount': 500000,
'currency': 'thb'
});
console.log("data", data);
console.log("data", data);
```
86 changes: 76 additions & 10 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,100 @@
const base64 = require("base-64");
const pkgConfig = require("./package.json");
const tokenEndpoint = "https://vault.omise.co/tokens";
const vaultEndpoint = "https://vault.omise.co/";
const apiEndpoint = "https://api.omise.co/";

let _publicKey;
let _apiVersion;

/**
* ReactNativeOmise
*/
class ReactNativeOmise {

/**
* constructor
*/
constructor() {
this.createSource = this.createSource.bind(this);
this.createToken = this.createToken.bind(this);
}

/**
* To set a public key and API version
* @param {String} publicKey
* @param {String} apiVersion
*/
config(publicKey, apiVersion = "2015-11-17") {
_publicKey = publicKey;
_apiVersion = apiVersion;
}

/**
* Get headers
* @return {*} headers
*/
getHeaders() {
let headers = new Headers();
headers.append('Authorization', 'Basic ' + base64.encode(_publicKey + ":"));
headers.append('User-Agent', pkgConfig.name + "/" + pkgConfig.version);
headers.append('Content-Type', 'application/json');

if (_apiVersion && _apiVersion !== "") {
headers.append('Omise-Version', _apiVersion);
}

return headers;
}

/**
* Create a token
* @param {*} data
*/
createToken(data) {
const tokenEndpoint = vaultEndpoint + "tokens";
// set headers
let headers = this.getHeaders();

return new Promise((resolve, reject) => {
// verify a public key
if (!_publicKey || _publicKey === "") {
reject("Please config your public key");
return;
}

return fetch(tokenEndpoint, {
method: 'POST',
cache: 'no-cache',
headers: headers,
body: JSON.stringify(data)
}).then((response) => {
if (response.ok && response.status === 200) {
resolve(response.json());
} else {
console.log("response not ok", response);
reject(response.json());
}
}).catch((error) => resolve(error));
});
}

// set headers
let headers = new Headers();
headers.append('Authorization', 'Basic ' + base64.encode(_publicKey + ":"));
headers.append('User-Agent', pkgConfig.name + "/" + pkgConfig.version);
headers.append('Content-Type', 'application/json');
/**
* Create a source
* @param {*} data
*/
createSource(data) {
const sourceEndpoint = apiEndpoint + "sources";
// set headers
let headers = this.getHeaders();

if (_apiVersion && _apiVersion !== "") {
headers.append('Omise-Version', _apiVersion);
return new Promise((resolve, reject) => {
// verify a public key
if (!_publicKey || _publicKey === "") {
reject("Please config your public key");
return;
}

fetch(tokenEndpoint, {
return fetch(sourceEndpoint, {
method: 'POST',
cache: 'no-cache',
headers: headers,
Expand All @@ -51,5 +116,6 @@ const reactNativeOmise = new ReactNativeOmise();

module.exports = {
config: reactNativeOmise.config,
createToken: reactNativeOmise.createToken
createToken: reactNativeOmise.createToken,
createSource: reactNativeOmise.createSource
}
Loading

0 comments on commit 7cd9a38

Please sign in to comment.