UNPKG

18.1 kBHTMLView Raw
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 <!--[if lt IE 9]>
10 <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
11 <![endif]-->
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 */
99var __awaiter = (this &amp;&amp; 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};
107Object.defineProperty(exports, "__esModule", { value: true });
108const createDebug = require("debug");
109const querystring = require("querystring");
110const request = require("request-promise-native");
111const badRequest_1 = require("../error/badRequest");
112const 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&lt;ISaveMemberResult>} 会員登録out
123 */
124function 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}
146exports.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&lt;IUpdateMemberResult>} 会員更新out
157 */
158function 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}
180exports.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&lt;ISaveMemberResult>} 会員削除out
190 */
191function 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}
212exports.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&lt;ISearchMemberResult>} 会員参照out
222 */
223function 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 &amp;&amp; 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}
251exports.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&lt;ISaveCardResult>} カード登録・更新out
270 */
271function 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}
309exports.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&lt;IDeleteCardResult>} カード削除out
321 */
322function 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}
345exports.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&lt;ISearchCardResult[]>} カード参照out
357 */
358function 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 &amp;&amp; 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}
401exports.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">&times;</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><!-- /.modal-content -->
433 </div><!-- /.modal-dialog -->
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<!--Navigation and Symbol Display-->
520
521
522<!--Google Analytics-->
523
524
525
526 <script type="text/javascript">
527 $(document).ready(function() {
528 SearcherDisplay.init();
529 });
530 </script>
531
532
533</body>
534</html>