Integrating GMOPG
Endpoints for integrating [GMOPG](https://www.gmo-pg.com/) with Storeganise
-
GET /v1/billing/gmopg/settings - list payment gateway settings
-
GET /v1/billing/gmopg/settings/bank-account - list payment gateway bank data
-
GET /v1/billing/gmopg/sources - list available payment methods, returns
-
POST /v1/billing/gmopg/sources/bank-account
.
{ cards: Array<{CardNo, CardExpire}>, bankAccount: {Status}, paymentType: 'directDebit'|'creditCard' }
-
POST /v1/billing/gmopg/sources
{ token: String } - registers a card, the token is acquired using the GMOPG client lib: https://static.mul-pay.jp/ext/js/token.js (or https://stg.static.mul-pay.jp/ext/js/token.js for a testing GMOPG account)
Sample code:/*
Form data:
- cardno: card number without spaces
- securitycode: card security code without spaces
- expire: must follow this YYYYMM format, e.g. '202408'
- holdername: optional card holder's name, e.g. 'John Doe'
*/
const gmopgSettings = await fetch('/api/v1/billing/gmopg/settings', {headers: {authorization: 'Bearer ..'}}); // fetch the GMOPG settings from Storeganise API
window.Multipayment.init(gmopgSettings.ShopID); // load <script src="https://static.mul-pay.jp/ext/js/token.js"></script> first
return new Promise((resolve, reject) => {
window.Multipayment.getToken(formData, ({ resultCode, tokenObject }) => {
if (resultCode !== '000' || !tokenObject) {
return reject(new Error(`Invalid credit card data ${resultCode === 102 ? '[card number]' : resultCode === 122 ? '[verification number]' : `[other: ${resultCode}]`}`));
}
resolve(tokenObject.token);
});
})
.then(token => {
return fetch('/api/v1/billing/gmopg/sources', {
method: 'POST',
body: JSON.stringify({ token }),
headers: {authorization: 'Bearer ..'}, 'content-type': 'application/json',
});
})
.catch(err => {
window.alert(`Saving card failed ${err.message}`);
});
{ bankCode, accountType, branchCode, accountNumber, accountName } - registers a bank account, depending on the bank, not all fields are necessary. The required fields are given by the GET /v1/billing/gmopg/settings/bank-account endpointfetch('/api/v1/billing/gmopg/sources/bank-account', {
method: 'POST',
body: JSON.stringify({ bankCode, ... }),
headers: {authorization: 'Bearer ..'}, 'content-type': 'application/json',
})
.then(({ TranID, Token, StartUrl }) => {
const redirectUrl = `/api/v1/billing/gmopg/sources/bank-account/register?${new URLSearchParams({ TranID, Token, StartUrl })}`; window.location.href = redirectUrl; // also possible to open this page in a popup (window.open(redirectUrl, '_blank'))
});