1 | <!DOCTYPE html>
|
2 |
|
3 | <html lang="en">
|
4 | <head>
|
5 | <meta charset="utf-8">
|
6 | <meta name="viewport" content="width=device-width">
|
7 | <title>GMO Client Library for Node.js Source: services/card.js</title>
|
8 |
|
9 | |
10 |
|
11 |
|
12 | <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
|
13 |
|
14 | <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
|
15 |
|
16 | </head>
|
17 |
|
18 | <body>
|
19 |
|
20 | <div class="navbar navbar-default navbar-fixed-top navbar-inverse">
|
21 | <div class="container">
|
22 | <div class="navbar-header">
|
23 | <a class="navbar-brand" href="index.html">GMO Client Library for Node.js</a>
|
24 | <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
|
25 | <span class="icon-bar"></span>
|
26 | <span class="icon-bar"></span>
|
27 | <span class="icon-bar"></span>
|
28 | </button>
|
29 | </div>
|
30 | <div class="navbar-collapse collapse" id="topNavigation">
|
31 | <ul class="nav navbar-nav">
|
32 |
|
33 | <li class="dropdown">
|
34 | <a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b class="caret"></b></a>
|
35 | <ul class="dropdown-menu ">
|
36 | <li><a href="error_badRequestError.html">error/badRequestError</a></li><li><a href="error_errors.html">error/errors</a></li><li><a href="factory.resultNotification.creditCard.html">factory.resultNotification.creditCard</a></li><li><a href="services_card.html">services/card</a></li><li><a href="services_credit.html">services/credit</a></li><li><a href="utils_util.html">utils/util</a></li>
|
37 | </ul>
|
38 | </li>
|
39 |
|
40 | <li class="dropdown">
|
41 | <a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b class="caret"></b></a>
|
42 | <ul class="dropdown-menu ">
|
43 | <li><a href="module-index.html">index</a></li>
|
44 | </ul>
|
45 | </li>
|
46 |
|
47 | <li class="dropdown">
|
48 | <a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
|
49 | <ul class="dropdown-menu ">
|
50 | <li><a href="error_badRequestError.BadRequestError.html">error/badRequestError.BadRequestError</a></li>
|
51 | </ul>
|
52 | </li>
|
53 |
|
54 | <li class="dropdown">
|
55 | <a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
|
56 | <ul class="dropdown-menu ">
|
57 | <li><a href="global.html#parseErrorMessage">parseErrorMessage</a></li>
|
58 | </ul>
|
59 | </li>
|
60 |
|
61 | </ul>
|
62 |
|
63 | <div class="col-sm-3 col-md-3">
|
64 | <form class="navbar-form" role="search">
|
65 | <div class="input-group">
|
66 | <input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
|
67 | <div class="input-group-btn">
|
68 | <button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
|
69 | </div>
|
70 | </div>
|
71 | </form>
|
72 | </div>
|
73 |
|
74 | </div>
|
75 |
|
76 | </div>
|
77 | </div>
|
78 |
|
79 |
|
80 | <div class="container" id="toc-content">
|
81 | <div class="row">
|
82 |
|
83 |
|
84 | <div class="col-md-12">
|
85 |
|
86 | <div id="main">
|
87 |
|
88 |
|
89 | <h1 class="page-title">Source: services/card.js</h1>
|
90 |
|
91 | <section>
|
92 | <article>
|
93 | <pre
|
94 | class="sunlight-highlight-javascript linenums">"use strict";
|
95 | /**
|
96 | * カード決済インターフェース
|
97 | * @namespace services/card
|
98 | */
|
99 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
100 | return new (P || (P = Promise))(function (resolve, reject) {
|
101 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
102 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
103 | function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
104 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
105 | });
|
106 | };
|
107 | Object.defineProperty(exports, "__esModule", { value: true });
|
108 | const createDebug = require("debug");
|
109 | const querystring = require("querystring");
|
110 | const request = require("request-promise-native");
|
111 | const badRequest_1 = require("../error/badRequest");
|
112 | const debug = createDebug('gmo-service:services:card');
|
113 | /**
|
114 | * 会員登録
|
115 | * @memberof services/member
|
116 | * @function saveMember
|
117 | * @param {ISaveMemberArgs} args 会員登録in
|
118 | * @param {string} args.siteId サイトID
|
119 | * @param {string} args.sitePass サイトパスワード
|
120 | * @param {string} args.memberId 会員ID
|
121 | * @param {string | undefined} args.memberName 会員名
|
122 | * @returns {Promise<ISaveMemberResult>} 会員登録out
|
123 | */
|
124 | function saveMember(args) {
|
125 | return __awaiter(this, void 0, void 0, function* () {
|
126 | debug('requesting...', args);
|
127 | const body = yield request.post({
|
128 | url: `${process.env.GMO_ENDPOINT}/payment/SaveMember.idPass`,
|
129 | form: {
|
130 | SiteID: args.siteId,
|
131 | SitePass: args.sitePass,
|
132 | MemberID: args.memberId,
|
133 | MemberName: args.memberName
|
134 | }
|
135 | }).promise();
|
136 | debug('request processed.', body);
|
137 | const result = querystring.parse(body);
|
138 | if (result.ErrCode !== undefined) {
|
139 | throw new badRequest_1.BadRequestError(body);
|
140 | }
|
141 | return {
|
142 | memberId: result.MemberID
|
143 | };
|
144 | });
|
145 | }
|
146 | exports.saveMember = saveMember;
|
147 | /**
|
148 | * 会員更新
|
149 | * @memberof services/member
|
150 | * @function updateMember
|
151 | * @param {IUpdateMemberArgs} args 会員更新in
|
152 | * @param {string} args.siteId サイトID
|
153 | * @param {string} args.sitePass サイトパスワード
|
154 | * @param {string} args.memberId 会員ID
|
155 | * @param {string | undefined} args.memberName 会員名
|
156 | * @returns {Promise<IUpdateMemberResult>} 会員更新out
|
157 | */
|
158 | function updateMember(args) {
|
159 | return __awaiter(this, void 0, void 0, function* () {
|
160 | debug('requesting...', args);
|
161 | const body = yield request.post({
|
162 | url: `${process.env.GMO_ENDPOINT}/payment/UpdateMember.idPass`,
|
163 | form: {
|
164 | SiteID: args.siteId,
|
165 | SitePass: args.sitePass,
|
166 | MemberID: args.memberId,
|
167 | MemberName: args.memberName
|
168 | }
|
169 | }).promise();
|
170 | debug('request processed.', body);
|
171 | const result = querystring.parse(body);
|
172 | if (result.ErrCode !== undefined) {
|
173 | throw new badRequest_1.BadRequestError(body);
|
174 | }
|
175 | return {
|
176 | memberId: result.MemberID
|
177 | };
|
178 | });
|
179 | }
|
180 | exports.updateMember = updateMember;
|
181 | /**
|
182 | * 会員削除
|
183 | * @memberof services/member
|
184 | * @function deleteMember
|
185 | * @param {ISaveMemberArgs} args 会員削除in
|
186 | * @param {string} args.siteId サイトID
|
187 | * @param {string} args.sitePass サイトパスワード
|
188 | * @param {string} args.memberId 会員ID
|
189 | * @returns {Promise<ISaveMemberResult>} 会員削除out
|
190 | */
|
191 | function deleteMember(args) {
|
192 | return __awaiter(this, void 0, void 0, function* () {
|
193 | debug('requesting...', args);
|
194 | const body = yield request.post({
|
195 | url: `${process.env.GMO_ENDPOINT}/payment/DeleteMember.idPass`,
|
196 | form: {
|
197 | SiteID: args.siteId,
|
198 | SitePass: args.sitePass,
|
199 | MemberID: args.memberId
|
200 | }
|
201 | }).promise();
|
202 | debug('request processed.', body);
|
203 | const result = querystring.parse(body);
|
204 | if (result.ErrCode !== undefined) {
|
205 | throw new badRequest_1.BadRequestError(body);
|
206 | }
|
207 | return {
|
208 | memberId: result.MemberID
|
209 | };
|
210 | });
|
211 | }
|
212 | exports.deleteMember = deleteMember;
|
213 | /**
|
214 | * 会員参照
|
215 | * @memberof services/member
|
216 | * @function searchMember
|
217 | * @param {ISearchMemberArgs} args 会員参照in
|
218 | * @param {string} args.siteId サイトID
|
219 | * @param {string} args.sitePass サイトパスワード
|
220 | * @param {string} args.memberId 会員ID
|
221 | * @returns {Promise<ISearchMemberResult>} 会員参照out
|
222 | */
|
223 | function searchMember(args) {
|
224 | return __awaiter(this, void 0, void 0, function* () {
|
225 | debug('requesting...', args);
|
226 | const body = yield request.post({
|
227 | url: `${process.env.GMO_ENDPOINT}/payment/SearchMember.idPass`,
|
228 | form: {
|
229 | SiteID: args.siteId,
|
230 | SitePass: args.sitePass,
|
231 | MemberID: args.memberId
|
232 | }
|
233 | }).promise();
|
234 | debug('request processed.', body);
|
235 | const result = querystring.parse(body);
|
236 | if (result.ErrCode !== undefined) {
|
237 | const error = new badRequest_1.BadRequestError(body);
|
238 | // 指定されたサイトIDと会員IDの会員が存在しない場合、nullを返すように、特別扱い
|
239 | if (error.errors.length === 1 && error.errors[0].info === 'E01390002') {
|
240 | return null;
|
241 | }
|
242 | throw error;
|
243 | }
|
244 | return {
|
245 | memberId: result.MemberID,
|
246 | memberName: result.MemberName,
|
247 | deleteFlag: result.DeleteFlag
|
248 | };
|
249 | });
|
250 | }
|
251 | exports.searchMember = searchMember;
|
252 | /**
|
253 | * カード登録・更新
|
254 | * @memberof services/card
|
255 | * @function saveCard
|
256 | * @param {ISaveCardArgs} args カード登録・更新in
|
257 | * @param {string} args.siteId サイトID
|
258 | * @param {string} args.sitePass サイトパスワード
|
259 | * @param {string} args.memberId 会員ID
|
260 | * @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード(デフォルト)1:物理モード)
|
261 | * @param {number} args.cardSeq カード登録連番(登録時は、入力不可です。更新時は、更新する値を設定します。)
|
262 | * @param {string} args.defaultFlag 洗替・継続課金フラグ(0:継続課金対象としない(デフォルト)1:継続課金対象とする)
|
263 | * @param {string} args.cardName カード会社略称
|
264 | * @param {string} args.cardNo カード番号
|
265 | * @param {string} args.cardPass カードパスワード
|
266 | * @param {string} args.expire 有効期限
|
267 | * @param {string} args.holderName 名義人
|
268 | * @param {string} args.token トークン
|
269 | * @returns {Promise<ISaveCardResult>} カード登録・更新out
|
270 | */
|
271 | function saveCard(args) {
|
272 | return __awaiter(this, void 0, void 0, function* () {
|
273 | debug('requesting...', args);
|
274 | const body = yield request.post({
|
275 | url: `${process.env.GMO_ENDPOINT}/payment/SaveCard.idPass`,
|
276 | form: {
|
277 | SiteID: args.siteId,
|
278 | SitePass: args.sitePass,
|
279 | MemberID: args.memberId,
|
280 | SeqMode: args.seqMode,
|
281 | CardSeq: args.cardSeq,
|
282 | DefaultFlag: args.defaultFlag,
|
283 | CardName: args.cardName,
|
284 | CardNo: args.cardNo,
|
285 | CardPass: args.cardPass,
|
286 | Expire: args.expire,
|
287 | HolderName: args.holderName,
|
288 | Token: args.token
|
289 | }
|
290 | }).promise();
|
291 | debug('request processed.', body);
|
292 | const result = querystring.parse(body);
|
293 | if (result.ErrCode !== undefined) {
|
294 | throw new badRequest_1.BadRequestError(body);
|
295 | }
|
296 | return {
|
297 | cardSeq: result.CardSeq,
|
298 | cardNo: result.CardNo,
|
299 | forward: result.Forward
|
300 | // brand: result.Brand,
|
301 | // domesticFlag: result.DomesticFlag,
|
302 | // issuerCode: result.IssuerCode,
|
303 | // debitPrepaidFlag: result.DebitPrepaidFlag,
|
304 | // debitPrepaidIssuerName: result.DebitPrepaidIssuerName,
|
305 | // forwardFinal: result.ForwardFinal
|
306 | };
|
307 | });
|
308 | }
|
309 | exports.saveCard = saveCard;
|
310 | /**
|
311 | * カード削除
|
312 | * @memberof services/card
|
313 | * @function deleteCard
|
314 | * @param {IDeleteCardArgs} args カード削除in
|
315 | * @param {string} args.siteId サイトID
|
316 | * @param {string} args.sitePass サイトパスワード
|
317 | * @param {string} args.memberId 会員ID
|
318 | * @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード(デフォルト)1:物理モード)
|
319 | * @param {string} args.cardSeq カード登録連番
|
320 | * @returns {Promise<IDeleteCardResult>} カード削除out
|
321 | */
|
322 | function deleteCard(args) {
|
323 | return __awaiter(this, void 0, void 0, function* () {
|
324 | debug('requesting...', args);
|
325 | const body = yield request.post({
|
326 | url: `${process.env.GMO_ENDPOINT}/payment/DeleteCard.idPass`,
|
327 | form: {
|
328 | SiteID: args.siteId,
|
329 | SitePass: args.sitePass,
|
330 | MemberID: args.memberId,
|
331 | SeqMode: args.seqMode,
|
332 | CardSeq: args.cardSeq
|
333 | }
|
334 | }).promise();
|
335 | debug('request processed.', body);
|
336 | const result = querystring.parse(body);
|
337 | if (result.ErrCode !== undefined) {
|
338 | throw new badRequest_1.BadRequestError(body);
|
339 | }
|
340 | return {
|
341 | cardSeq: result.CardSeq
|
342 | };
|
343 | });
|
344 | }
|
345 | exports.deleteCard = deleteCard;
|
346 | /**
|
347 | * カード参照
|
348 | * @memberof services/card
|
349 | * @function searchCard
|
350 | * @param {ISearchCardArgs} args カード参照in
|
351 | * @param {string} args.siteId サイトID
|
352 | * @param {string} args.sitePass サイトパスワード
|
353 | * @param {string} args.memberId 会員ID
|
354 | * @param {util.SeqMode} args.seqMode カード登録連番モード(0:論理モード1:物理モード)
|
355 | * @param {string} args.cardSeq カード登録連番
|
356 | * @returns {Promise<ISearchCardResult[]>} カード参照out
|
357 | */
|
358 | function searchCard(args) {
|
359 | return __awaiter(this, void 0, void 0, function* () {
|
360 | debug('requesting...', args);
|
361 | const body = yield request.post({
|
362 | url: `${process.env.GMO_ENDPOINT}/payment/SearchCard.idPass`,
|
363 | form: {
|
364 | SiteID: args.siteId,
|
365 | SitePass: args.sitePass,
|
366 | MemberID: args.memberId,
|
367 | SeqMode: args.seqMode,
|
368 | CardSeq: args.cardSeq
|
369 | }
|
370 | }).promise();
|
371 | debug('request processed.', body);
|
372 | const result = querystring.parse(body);
|
373 | if (result.ErrCode !== undefined) {
|
374 | const error = new badRequest_1.BadRequestError(body);
|
375 | // 会員は存在してカードが存在しない場合、空配列を返すように、特別扱い
|
376 | if (error.errors.length === 1 && error.errors[0].info === 'E01240002') {
|
377 | return [];
|
378 | }
|
379 | throw error;
|
380 | }
|
381 | const cardSeqArry = result.CardSeq.split('|');
|
382 | const defaultFlagArry = result.DefaultFlag.split('|');
|
383 | const cardNameArry = result.CardName.split('|');
|
384 | const cardNoArry = result.CardNo.split('|');
|
385 | const expireArry = result.Expire.split('|');
|
386 | const holderNameArry = result.HolderName.split('|');
|
387 | const deleteFlagArry = result.DeleteFlag.split('|');
|
388 | return cardSeqArry.map((cardSeq, index) => {
|
389 | return {
|
390 | cardSeq: cardSeq,
|
391 | defaultFlag: defaultFlagArry[index],
|
392 | cardName: cardNameArry[index],
|
393 | cardNo: cardNoArry[index],
|
394 | expire: expireArry[index],
|
395 | holderName: holderNameArry[index],
|
396 | deleteFlag: deleteFlagArry[index]
|
397 | };
|
398 | });
|
399 | });
|
400 | }
|
401 | exports.searchCard = searchCard;
|
402 | </pre>
|
403 | </article>
|
404 | </section>
|
405 |
|
406 |
|
407 |
|
408 |
|
409 |
|
410 | </div>
|
411 | </div>
|
412 |
|
413 | <div class="clearfix"></div>
|
414 |
|
415 |
|
416 |
|
417 | </div>
|
418 | </div>
|
419 |
|
420 |
|
421 | <div class="modal fade" id="searchResults">
|
422 | <div class="modal-dialog">
|
423 | <div class="modal-content">
|
424 | <div class="modal-header">
|
425 | <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
426 | <h4 class="modal-title">Search results</h4>
|
427 | </div>
|
428 | <div class="modal-body"></div>
|
429 | <div class="modal-footer">
|
430 | <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
431 | </div>
|
432 | </div>
|
433 | </div>
|
434 | </div>
|
435 |
|
436 |
|
437 | <footer>
|
438 |
|
439 |
|
440 | <span class="jsdoc-message">
|
441 | Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a>
|
442 |
|
443 | on Sat Oct 28th 2017
|
444 |
|
445 | using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
|
446 | </span>
|
447 | </footer>
|
448 |
|
449 | <script src="scripts/docstrap.lib.js"></script>
|
450 | <script src="scripts/toc.js"></script>
|
451 |
|
452 | <script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
|
453 |
|
454 |
|
455 | <script>
|
456 | $( function () {
|
457 | $( "[id*='$']" ).each( function () {
|
458 | var $this = $( this );
|
459 |
|
460 | $this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
|
461 | } );
|
462 |
|
463 | $( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
|
464 | var $this = $( this );
|
465 |
|
466 | var example = $this.find( "code" );
|
467 | exampleText = example.html();
|
468 | var lang = /{@lang (.*?)}/.exec( exampleText );
|
469 | if ( lang && lang[1] ) {
|
470 | exampleText = exampleText.replace( lang[0], "" );
|
471 | example.html( exampleText );
|
472 | lang = lang[1];
|
473 | } else {
|
474 | var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
|
475 | lang = langClassMatch ? langClassMatch[1] : "javascript";
|
476 | }
|
477 |
|
478 | if ( lang ) {
|
479 |
|
480 | $this
|
481 | .addClass( "sunlight-highlight-" + lang )
|
482 | .addClass( "linenums" )
|
483 | .html( example.html() );
|
484 |
|
485 | }
|
486 | } );
|
487 |
|
488 | Sunlight.highlightAll( {
|
489 | lineNumbers : true,
|
490 | showMenu : true,
|
491 | enableDoclinks : true
|
492 | } );
|
493 |
|
494 | $.catchAnchorLinks( {
|
495 | navbarOffset: 10
|
496 | } );
|
497 | $( "#toc" ).toc( {
|
498 | anchorName : function ( i, heading, prefix ) {
|
499 | return $( heading ).attr( "id" ) || ( prefix + i );
|
500 | },
|
501 | selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
|
502 | showAndHide : false,
|
503 | smoothScrolling: true
|
504 | } );
|
505 |
|
506 | $( "#main span[id^='toc']" ).addClass( "toc-shim" );
|
507 | $( '.dropdown-toggle' ).dropdown();
|
508 |
|
509 | $( "table" ).each( function () {
|
510 | var $this = $( this );
|
511 | $this.addClass('table');
|
512 | } );
|
513 |
|
514 | } );
|
515 | </script>
|
516 |
|
517 |
|
518 |
|
519 |
|
520 |
|
521 |
|
522 |
|
523 |
|
524 |
|
525 |
|
526 | <script type="text/javascript">
|
527 | $(document).ready(function() {
|
528 | SearcherDisplay.init();
|
529 | });
|
530 | </script>
|
531 |
|
532 |
|
533 | </body>
|
534 | </html>
|