FinTech Dialy

FinTech Diary

ソーシャルレンディング/ロボアドバイザー等のフィンテックを実際に利用した感想などを書いていますφ(..)

【プログラミング】カード番号のチェックデジットを判定する(JavaScript)【クレジットカード】

カード番号の最後の一桁は「チェックデジット」と呼ばれ、カード番号の有効性を判定するのに利用されます。 今回はチェックデジットの判定を行うJavaScriptを実行してみますφ(..)



チェックデジットとは?

数値の入力誤りを検出するために、末尾に付与される数値。
チェックディジット、チェックサム、検査数字、検査文字などとも。
英語だとCheck Digit、略称はCD、C/D。
クレジットカード以外にも、バーコードや銀行の口座番号、マイナンバー等、色々な番号で使用されています。

[参考]IT用語辞典
www.weblio.jp

[参考]wikipedia
チェックディジット - Wikipedia


Luhnアルゴリズムとは?

チェックデジットを判定するアルゴリズムには「Dammアルゴリズム」「ヴァーヘフアルゴリズム」「Luhnアルゴリズム」等があり、 クレジットカードでは「Luhnアルゴリズム」を使用しています。

[参考]wikipedia
Luhnアルゴリズム - Wikipedia
色々な言語のサンプルコードが公開されています。



チェックデジット判定

カード番号を入力し「判定」ボタンを押すとダイアログに結果が表示されます。




適当に入れると大体エラーになりますw
例えば「1111222233334444」とか入れるとOKが出ます。



コード

HTML

onclickでShowCheckResultを実行。

<form name = fr_card_info>
<input name="card_num" type="text" value="" placeholder="カード番号 (半角数字)" size = "24" maxlength = "16" /> <br/>
<input type="button" value="判定" onclick="ShowCheckResult()">
</form>


JavaScript

一応数値チェック(NumCheck)も入れてます。
数値チェックOKの場合、チェックデジット判定(luhn_checksum)でチェックデジットを判定します。

<script language="javascript">
<!--
//チェック結果表示
function ShowCheckResult()
{
   in_card_num = document.fr_card_info.card_num.value;
   //カード番号チェック
   if(in_card_num == "" || NumCheck(in_card_num) == false){
      alert("カード番号には半角数値を入力して下さい"); 
      return;
   }
   //チェックデジット判定
   if(luhn_checksum(in_card_num) == false){
      alert("チェックNG(><;)"); 
      return;
   }
   //チェックOK
   alert("チェックOK( '-')b"); 
}

//数値チェック
function NumCheck(val) {
   if (val.match(/[^z0-9]+/)) {
   return false;
   }
}

//チェックデジット判定
function luhn_checksum(card_number) {
  var a, s, i, x;
  a = card_number.split("").reverse();
  s = 0;
  for (i = 0; i < a.length; i++) {
    x = a[i] * (1 + i % 2);
    s += x > 9 ? x - 9 : x;
  }
  return s % 10 == 0;
}
//-->
</script>



コード参考

以下、参考にさせて頂きましたm(_ _)m

[参考1]クレジットカード番号をチェックする

luhn_checksumを使用させて頂きました。

[参考2]【PHP】クレジットカードチェックサンプル

[参考3][メモ] 各種チェックデジットの計算方法

[参考4]Javascriptで入力チェック(半角英数字)

NumCheckを使用させて頂きました。

エクセルマクロ

私の大好きなエクセルマクロ(VBA)のサンプルもありました。
まあ使う機会があるかどうかは極めて微妙ですが…(-_- )


[参考]Luhn Algorithm Validation in VBScript (ASP)

www.nilpo.com


上記のコードをそのまま実行するとコンパイルエラーになってしまうので、参照設定にRegExpオブジェクトを追加する必要があります。

[参考]VBA正規表現を使う - RegExpオブジェクトの利用
codezine.jp



チェックデジット以外のカード番号の意味

せっかくなのでおまけで少し触れておきたいと思います。
簡単な解説をまとめました。

f:id:natsumedeus:20181004025930p:plain


[参考]クレジットカードプロ
https://www.card-x.net/contents/creditcard-number.htmlwww.card-x.net
[参考]GIZMODO
www.gizmodo.jp
[参考]wikipedia
クレジットカードの番号 - Wikipedia

ISO/IEC 7812 - Wikipedia


おわり

MASTERカードの先頭2導入とか、先頭1のブランド(UATP)とか、意外と新たな発見がありました。
ただの数字の羅列に見えるものにも、実は色々な意味が込められているんですね(' ' )



【プログラミング】はてなブログでオンラインショッピングごっご②【JavaScript】

前回記事の解説というか、コードを見やすいように表示しつつちょこちょこコメントを入れましたφ(..)
ラジオボタン、テキストボックス、プルダウンリスト、テキストエリア等色々と試しているので、
HTML/JavaScriptで何か作ってみたい場合の参考になればと思います。


↓下記記事の説明になります。 fintechdiary.hatenablog.com


商品一覧

HTML

★ポイント
ラジオボタンの使用
ラジオボタンを選択するとonclickイベントで[選択中の商品]の表示を切り替える(ChangeGoodsInfo)
・画像をクリックするとonclickイベントでラジオボタンが選択される(ClickGoodsImage)

<p>以下より商品をお選び下さい(画像クリックでも選択可)。</p>
<p>※価格は税別価格です</p>
<p><form name = fr_good></p>
<br/>

<p><input name="kapu" type="radio" value="kapu_html" id = "kapu_html" onclick="ChangeGoodsInfo(1)" />支払可能見込額算出サンプルコード(html)</p>
<p>[ダウンロード版]¥ 400</p>
<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/n/natsumedeus/20180506/20180506201036.png" border=0 onClick="ClickGoodsImage(1)" style="cursor: hand;">
<br/>
<br/>

<p><input name="kapu" type="radio" value="kapu_js" id = "kapu_js" onclick="ChangeGoodsInfo(2)" />支払可能見込額算出サンプルコード(JavaScript)</p>
<p>[ダウンロード版]¥ 600</p>
<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/n/natsumedeus/20180506/20180506201302.png" border=0 onClick="ClickGoodsImage(2)" style="cursor: hand;">
<br/>
<br/>

<p><input name="kapu" type="radio" value="kapu_both" id = "kapu_both" onclick="ChangeGoodsInfo(3)" />支払可能見込額算出サンプルコード(html/JavaScript)</p>
<p>[ダウンロード版]¥ 900</p>
<p><span style="color: #ff0000">※html/JavaScript同時購入で10%割引</span></p>
<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/n/natsumedeus/20180506/20180506203926.png" border=0 onClick="ClickGoodsImage(3)" style="cursor: hand;">

<p></form></p>


JavaScript

★ポイント
・CASE文を使用
・ChangeGoodsInfoを呼び出し、ラジオボタンを選択した時と同様に[選択中の商品]・[購入金額(税別)]の表示を切り替える

<script language="javascript">
<!--
//画像クリック時
function ClickGoodsImage(num)
{
   switch(num) {
       case 1:
           ChangeGoodsInfo(1);
           document.getElementById('kapu_html').checked=true;
           break;
       case 2:
           ChangeGoodsInfo(2);
           document.getElementById('kapu_js').checked=true;
           break;
       case 3:
           ChangeGoodsInfo(3);
           document.getElementById('kapu_both').checked=true;
           break;
   }
}

//商品・金額の表示切替
function ChangeGoodsInfo(num)
{
   switch(num) {
       case 1:
           goods_temp   = "支払可能見込額算出サンプルコード(html)";
           amaon_temp  = "400";
           break;
       case 2:
           goods_temp   = "支払可能見込額算出サンプルコード(JavaScript)";
           amaon_temp  = "600";
           break;
       case 3:
           goods_temp   = "支払可能見込額算出サンプルコード(html/JavaScript)";
           amaon_temp  = "900";
           break;
   }
   document.getElementById("select_goods").textContent = goods_temp;
   document.getElementById("goods_amount").textContent = '¥' + amaon_temp;
}
//-->
</script>


お支払い

カード情報のご入力

HTML

★ポイント
・テキストボックスの使用(カード名義人・カード番号)
・プルダウンリストの使用(有効期限)
・カード番号の入力後、onkeyupイベントにより[ご利用カード]の表示を切り替える(ChangeCardInfo)

<p>以下のカード情報をご入力下さい。</p>
<p>カード名義人(半角ローマ字) | カード番号 (半角数字)   | 有効期限</p>
<form name = fr_card_info>
<input name="card_name" type="text" value="" placeholder="カード名義人(半角ローマ字)" size = "21" maxlength = "30"/> 
<input name="card_num" type="text" value="" placeholder="カード番号 (半角数字)" size = "16" maxlength = "16" onkeyup="ChangeCardInfo(this.value)" /> 
<select name="month">
<option selected="selected" value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option>
<option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option>
<option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
</select>
<select name="year">
<option value="2018">2018</option><option value="2019">2019</option><option selected="selected" value="2020">2020</option>
<option value="2021">2021</option><option value="2022">2022</option><option value="2023">2023</option><option value="2024">2024</option>
<option value="2025">2025</option><option value="2026">2026</option><option value="2027">2027</option><option value="2028">2028</option>
</select>
</form>

<p>※JCB/VISA/MASTERブランドをご利用頂けます。先頭3(JCB)/4(VISA)/5(MASTER)且つ16桁の番号以外は購入時にエラーとなります。</p>
<p>※カード情報の収集はしてませんが、念のため適当な番号を入力してね!</p>
JavaScript

★ポイント
・substrを使用して文字列を編集

<script language="javascript">
<!--
//利用カード番号の表示切替
function ChangeCardInfo(change_card_num)
{
   document.getElementById("use_card_num").textContent = '************' + change_card_num.substr(12,4);
}
//-->
</script>


お支払い方法の選択

HTML

★ポイント
・プルダウンリストの使用

<p>一括払い/リボ払いのみご利用頂けます。</p>
<p><form name = fr_pay_method>
<select name="pay_method" onchange="ChangePayInfo(this.value)">
<option selected="selected" value="一括">一括</option>
<option value="リボ">リボ</option>
</select>
</form></p>
JavaScript
<script language="javascript">
<!--
//支払方法の表示切替
function ChangePayInfo(change_pay_method)
{
   document.getElementById("select_pay_method").textContent = change_pay_method;
}
//-->
</script>


商品ご購入

HTML

★ポイント
・入力によって下記の表示が切り替わる
・購入ボタンを押すと購入処理(purchase)を実行

<p>以下の内容でよろしければ、”購入”ボタンをクリックして下さい。</p>
<p>-----------------------------------------------------------------------------------------------------------</p>
<span>[選択中の商品]</span>
<span id="select_goods">商品未選択</span>

<span>[購入金額(税別)]</span>
<span id="goods_amount">¥0</span>

<span>[ご利用カード]</span>
<span id="use_card_num">未入力</span>

<span>[お支払い方法]</span>
<span id="select_pay_method">一括</span>

<span>[ダウンロードリンク]</span>
<a id="download_link"  href="" target="_blank"></a>
<p>※ダウンロードリンクはご購入後に表示されます</p>

<p>-----------------------------------------------------------------------------------------------------------</p>


<input type="button" value="購入" onclick="purchase()">
JavaScript

★購入処理(purchase)の説明
(1)入力チェック
入力された商品情報、カード情報が不正な値でないかチェックする。
チェックOKの場合、クレジット売上票の編集、ダイアログメッセージの表示、ダウンロードリンクの表示を行う。
チェックNGの場合、ダイアログメッセージを表示し処理を終了する。

(2)クレジット売上票編集(edit_credit_slip)
入力された商品情報、カード情報を元に、テキストエリアに表示するクレジット売上票の内容を編集する。

(3)ダウンロードリンク表示(show_download_link)
選択された商品のダウンロードリンクを表示する。

★ポイント
処理を説明する際には、IPOを考える(最近上司に教わりました)。
ただし、文脈によって自明なこと等は適宜省略したりする。
I(Input)・・・入力
P(Process)・・・何をするか
O(Output)・・・出力
例)入力チェック
入力された商品情報、カード情報が(I)不正な値でないかチェックし(P)、OK/NGの結果を出力する(O)。

<script language="javascript">
<!--
//購入処理
function purchase(){

   if(input_info_check() == false){ //入力情報チェック
      return;
   }

   edit_credit_slip();  //クレジット売上票編集
   alert("お買い上げありがとうございます。\nダウンロードリンクより商品をダウンロードして下さい。"); 
   show_download_link();
}
//入力情報チェック
function input_info_check(){
   in_card_name = document.fr_card_info.card_name.value;
   in_card_num = document.fr_card_info.card_num.value;
   brand_id = in_card_num.substr(0,1);
   in_expire = ""+ document.fr_card_info.year.value + document.fr_card_info.month.value;
   in_goods_name = document.getElementById("select_goods").textContent;

   //商品選択チェック
   if(in_goods_name == "商品未選択"){
      alert("商品を選択して下さい"); 
      return false;
   }

   //比較用有効期限編集
   var hiduke=new Date(); 
   var year = hiduke.getFullYear();
   var month = hiduke.getMonth()+1;
   chk_expire = ""+ year + zeroPadding(month ,2);

   //カード名義人チェック
   if(in_card_name == "" || ArfCheck(in_card_name) == false){
      alert("カード名義人には半角ローマ字を入力して下さい"); 
      return false;
   }
   //カード番号チェック
   if(in_card_num == "" || in_card_num.length < 16 || NumCheck(in_card_num) == false){
      alert("カード番号には半角数値(16桁)を入力して下さい"); 
      return false;
   }
   //ブランドチェック
   switch(brand_id  ) {
       case '3':
           card_co  = "  JCB   ";
           break;
       case '4':
           card_co  = "  VISA  ";
           break;
       case '5':
           card_co  = " MASTER ";
           break;
      default:
          alert("お取り扱いできなブランドのカードです"); 
          return false;
          break;
   }

   //有効期限チェック
   if(Number(in_expire) < Number(chk_expire)){
      alert("有効期限切れです"); 
      return false;
   }

}
//英字チェック
function ArfCheck(val) {
   if (val.match(/[^A-Za ]+/)) {
      return false;
   }
}

//数値チェック
function NumCheck(val) {
   if (val.match(/[^z0-9]+/)) {
      return false;
   }
}
//クレジット売上票編集
function edit_credit_slip(){
   //日時データ編集
   var hiduke=new Date(); 
   var jikan= new Date();

   var year = hiduke.getFullYear();
   var month = hiduke.getMonth()+1;
   var day = hiduke.getDate();
   var hour = jikan.getHours();
   var minute = jikan.getMinutes();
   var second = jikan.getSeconds();
   var ymd = zeroPadding(year ,2) + '/' + zeroPadding(month ,2) + '/' + zeroPadding(day ,2);
   var hms = zeroPadding(hour ,2) + ':' + zeroPadding(minute ,2) + ':' + zeroPadding(second ,2);
   var ymd = zeroPadding(year ,2) + '/' + zeroPadding(month ,2) + '/' + zeroPadding(day ,2);
   var hms = zeroPadding(hour ,2) + ':' + zeroPadding(minute ,2) + ':' + zeroPadding(second ,2);

   //会員番号編集
   or_card_num = document.fr_card_info.card_num.value;
   ed_card_num  = '************' + or_card_num.substr(12,4);

   //支払区分
   ed_pay_method = document.getElementById("select_pay_method").textContent;

   //金額編集
   pay_amount = parseInt(document.getElementById("goods_amount").textContent.replace( '¥', '' ));
   pay_tax =  pay_amount * 0.08;
   pay_total = pay_amount + pay_tax;

   //売上票編集
   var col1 = '*****************************************\r\n';
   var col2 = '           [クレジット売上票]\r\n';
   var col3 = '   ――――――――――――――――\r\n';
   var col4 = '   加盟店名 MERCHANT\r\n';
   var col5 = '   Fintech Diary Online Shop\r\n';
   var col6 = '   ご利用日 DATE ' + ymd  + ' ' + hms  + '\r\n';
   var col7 = '   伝票番号 SLIP No 00123\r\n';
   var col8 = '   ――――――――――――――――\r\n';
   var col9 = '   会員番号 ' + ed_card_num + '\r\n';
   var col10 = '   ACCT No\r\n';
   var col11 = '   承認番号 APP CODE 123456\r\n';
   var col12 = '   ――――――――――――――――\r\n';
   var col13 = '   取引内容| 支払区分 |取扱区分\r\n';
   var col14 = '     売上  |  ' + ed_pay_method + '  |110\r\n';
   var col15 = '   ――――――――――――――――\r\n';
   var col16 = '   カード会社| 有効期限 |商品区分\r\n';
   var col17 = '   CARD Co | EXP DATE |\r\n';
   var col18 = '   ' + card_co + '| XX/XX    |680\r\n';
   var col19 = '   ――――――――――――――――\r\n';
   var col20 = '   金 額 AMOUNT    ¥' + pay_amount + '\r\n';
   var col21 = '   税その他 TAX/OTHER      ¥' + pay_tax + '\r\n';
   var col22 = '   ――――――――――――――――\r\n';
   var col23 = '   合計金額     ¥' + pay_total + '\r\n';
   var col24 = '   ――――――――――――――――\r\n';
   var col25 = '   Fintech Diary Online Shop\r\n';
   var col26 = '   ――――――――――――――――\r\n';
   var col27 = '   ご利用ありがとうございました。\r\n';
   var col28 = '   お客様控え CUSTOMERS COPY\r\n';
   var col29 = '*****************************************\r\n';
   cols = col1 + col2  + col3 + col4 + col5 + col6 + col7 + col8 + col9 + col10 +
              col11 + col12  + col13 + col14 + col15 + col16 + col17 + col18 + col19 + col20 + 
              col21 + col22  + col23 + col24 + col25 + col26 + col27 + col28 + col29;
   myform.myarea.value = cols;

}

//0パディング
function zeroPadding(num,length){
    return ('0000000000' + num).slice(-length);
}
//ダウンロードリンクの表示切替
function show_download_link()
{
   if(document.getElementById('kapu_html').checked==true){
      document.getElementById("download_link").innerHTML= "支払可能見込額算出サンプルコード(html).html";
      document.getElementById("download_link").href = "https://drive.google.com/file/d/1UDyFk227u37ypnNY_ib4ESA3qskJtAWO/view?usp=sharing";
   }
   else if(document.getElementById('kapu_js').checked==true){
      document.getElementById("download_link").innerHTML= "支払可能見込額算出サンプルコード(JavaScript).js";
      document.getElementById("download_link").href = "https://drive.google.com/file/d/13LSgZBotkd3gb9GpqlT9w3LSztfSozdH/view?usp=sharing";
   }
   else{
      document.getElementById("download_link").innerHTML= "支払可能見込額算出サンプルコード(html/JavaScript).zip";
      document.getElementById("download_link").href = "https://drive.google.com/file/d/1TfmkQzikQiRBZ1_QJeop9LO5ZQFy67zM/view?usp=sharing";
   }
}

//-->
</script>


クレジット売上票

HTML
<form name="myform"><textarea id="txtarea"  rows="10" cols="45" name="myarea" style="font-family:'MS ゴシック';" ></textarea></form>

<button onclick="run();">売上票ダウンロード</button>


JavaScript

★ポイント
・売上票ダウンロードボタンを押すとクレジット売上票をテキスト形式でダウンロード

<script type="text/javascript">
//伝票ダウンロード
function SaveToFile(FileName,Stream) {
  if (window.navigator.msSaveBlob) {
    window.navigator.msSaveBlob(new Blob([Stream], { type: "text/plain" }), FileName);
  } else {
    var a = document.createElement("a");
    a.href = URL.createObjectURL(new Blob([Stream], { type: "text/plain" }));
    //a.target   = '_blank';
    a.download = FileName;
    document.body.appendChild(a) //  FireFox specification
    a.click();
    document.body.removeChild(a) //  FireFox specification
  }
}
 
function run(){    
  Stream = myform.myarea.value;
  Stream = Stream.replace(/\n/g, "\r\n").replace(/\r\r/g, "\r");
  SaveToFile('クレジット売上票.txt',Stream);
}
</script>



おわり

以上です。
JavaScriptは家で作ってるだけで別に詳しいわけではないので、
おかしなところがあればご指摘頂けるとありがたいですm(_ _)m



【クレジットカード】フィッシングメールに注意

迷惑メールを覗いたら今流行り?のフィッシングメールが来ていたので、

記念と注意喚起を兼ねてメモφ(..)

 

今回受け取ったフィッシングメール

MUFGを騙るフィッシングメール(8/11)

・実際の文面

f:id:natsumedeus:20180821024323p:plain

 

・フィッシング対策協議会の報告

2日後の13日にフィッシング対策協議会から報告されたものと同一の文面でした。

www.antiphishing.jp

 

クレディセゾンを騙るフィッシングメール(8/19)

・実際の文面

f:id:natsumedeus:20180821024421p:plain

 

・フィッシング対策協議会の報告

翌日の20日にフィッシング対策協議会から報告されたものと同一の文面でした。

www.antiphishing.jp

 

③所感

Gmailを使用しているのですが、どちらも迷惑メールに振り分けられていました。

流石Google先生は頼りになりますね!たまに迷惑メール以外も迷惑メールフォルダに行くけど

 

内容については、どちらもほぼ同じ文面なのには驚きましたが…どちらかだけでも開いて引っかかってくれればいいかなって感じなんでしょうか(・・?

後は差出人アドレスからして怪しいですね…

ただ、文面に関しては、ネットに疎い方だと「そういうものなのか?」って感じで普通にログインしちゃうかも?

 

フィッシングとは

せっかくなので少し調べてみました。

 

①フィッシング 【 phishingフィッシング詐欺

『フィッシングとは、金融機関などからの正規のメールやWebサイトを装い、暗証番号やクレジットカード番号などを詐取する詐欺。「釣り」を意味する「fishing」が語源だが、偽装の手法が洗練されている(sophisticated)ことから「phishing」と綴るようになったとする説がある。』(引用元:フィッシングとは - IT用語辞典)

 

ずっとfishingだと思ってましたが、違うんですね…初めてしりました(. . )

語源は上記以外にも諸説あるようです。

参考:フィッシング (詐欺) - Wikipedia

 

②手口

手口はフィッシング対策協議会の図解が分かりやすいです。

参考:フィッシングとは(フィッシング対策協議会)

www.antiphishing.jp

 

③対策

こちらもフィッシング対策協議会より、漫画で解説されています。

www.antiphishing.jp

 

■まとめ

・ウイルスソフトやブラウザは最新の状態に

 ⇒当たり前の話ではありますが…面倒だからって更新しないのは('ω'乂)

・銀行やカード会社はメールで個人情報を確認しない

 ⇒ということを知っていれば、すぐに怪しいと気付ける(⌒ ͜   ⌒) 

・電子メールに記載されたリンクは偽装可能

 ⇒怪しいと思ったらリンクを踏む前に要確認。初回登録時にお気に入りしておくと〇

・フィッシング対策協議会で注意喚起されていないかチェック

 ⇒されてなっかたら、報告すると〇

 

④フィッシングレポート2018

最新のフィッシング事情はこちらが参考になりました。

www.antiphishing.jp

 

『2.1. フィッシング報告状況からみた、この 1 年の動向』にて、「仮想通貨関連サービスのアカウント情報の詐取を目的としたフィッシングの報告が見られるようになってきた。」とありますが、COMSAのICOで発生した偽サイトは私も覚えがあります…(下記参照)

hajimeru-bitcoin.com

 

⑤クレジットカードとフィッシング

■不正利用の被害

下記記事によると、フィッシングなどによるネットでの被害が増加している模様です。

japan.zdnet.com

 

■クレカとフィッシングの歴史

『2.2.クレジットカード情報を狙うフィッシングの増加』にて、2010年から2017年までのクレカとフィッシングの関係が概説されています。

www.antiphishing.jp

 

■いち早く不正に気付くために

カード番号は今後も狙われ続けると思われるので、身に覚えのない購入履歴がないか毎月明細を確認することをお勧めします。また、複数カードを利用している場合、MoneyForwardと連携しておくと毎回個々のカード会社のサイトにログインせずに済むのでお勧めです。

 

おまけ

 関連銘柄

フィッシング対策などのサイバーセキュリティー関連銘柄。

kabutan.jp

 

FOLIOのテーマにもありました。

folio-sec.com

 

 

 おわり

次から次へと新たな手口が出現するフィッシング詐欺ですが、うっかり引っかからないように気を付けないといけませんね…(自戒)

 

 

 

【プログラミング】はてなブログでオンラインショッピングごっご【JavaScript】

オンラインショッピングごっごです。
サンプルコードを購入できます。
勿論ごっこなので請求は発生しません。

また、それっぽいクレジット売上票(実店舗のもの参考)のテキストファイルをダウンロードできます。

Fintech Diary Online Shop

この度はFintechDiaryOnlineShopにお越し頂き誠にありがとうございます。

等サイトでは、html/JavaScriptのサンプルコードを販売しております。

商品一覧

以下より商品をお選び下さい(画像クリックでも選択可)。

※価格は税別価格です


支払可能見込額算出サンプルコード(html)

[ダウンロード版]¥ 400



支払可能見込額算出サンプルコード(JavaScript)

[ダウンロード版]¥ 600



支払可能見込額算出サンプルコード(html/JavaScript)

[ダウンロード版]¥ 900

※html/JavaScript同時購入で10%割引



お支払い

※等サイトではクレジットカード決済のみご利用頂けます。


カード情報のご入力

以下のカード情報をご入力下さい。

カード名義人(半角ローマ字) | カード番号 (半角数字) | 有効期限

JCB/VISA/MASTERブランドをご利用頂けます。先頭3(JCB)/4(VISA)/5(MASTER)且つ16桁の番号以外は購入時にエラーとなります。

※カード情報の収集はしてませんが、念のため適当な番号を入力してね!



お支払い方法の選択

一括払い/リボ払いのみご利用頂けます。



商品ご購入

以下の内容でよろしければ、”購入”ボタンをクリックして下さい。

-----------------------------------------------------------------------------------------------------------

[選択中の商品] 商品未選択

[購入金額(税別)] ¥0

[ご利用カード] 未入力

[お支払い方法] 一括

[ダウンロードリンク]

※ダウンロードリンクはご購入後に表示されます

-----------------------------------------------------------------------------------------------------------



クレジット売上票


ご利用ありがとうございました

FintechDiaryOnlineShopをご利用頂きありがとうございました。

またのご利用をお待ちしております。



参考資料

ダウンロードリンクのコードは下記記事で実際に動かせます。

[参考]【プログラミング】支払可能見込額と総量規制利用可能枠を算出する【JavaScript】


以下、参考にさせて頂きましたm(_ _)m

[参考1]テキストエリアの内容をダウンロードできるようにする

[参考2]JavaScriptでファイルを作成してダウンロードする

[参考3]テキストエリアにメッセージを表示する

[参考4]テキストエリアの書体指定

[参考5]クレジットカードの仕様 - 一般社団法人日本クレジット協会

[参考6]a.download + data:text/plain or Blob でテキストを保存したら改行がLFになった

[参考7]markdownで連続するアンダースコアを記述する方法

[参考8]テキストの書き換え(パズルネット智慧)

[参考9]今日の日付と現在時刻(パズルネット智慧)

[参考10]javascriptで0パディングする

[参考11]Javascriptで入力チェック(半角英数字)

[参考12]【5分でマスター】JavaScriptのonChangeイベントの使い方まとめ

【セキュリテ】償還ファンド/運用中ファンド_2018年4月【投資記録】

セキュリテで償還を迎えたファンドと、現在運用中のファンドについてφ(..)

 

1.セキュリテとは

一言で言うと、株主優待が貰えるソーシャルレンディングみたいな感じです。

www.securite.jp

 

 

 

2.過去の購入ファンド

以前購入したファンドは下記記事にまとめてあります。

fintechdiary.hatenablog.com

 

 

 

3.償還ファンド

上記のファンドのうち、償還を迎えたファンドの実績です。

f:id:natsumedeus:20180430135717p:plain

出資金と分配金を単純に比較すると6,864円のマイナスですが、上記2つのファンドは1口につき約4000円相当の投資家特典を貰えたので、それらを考慮すると、

140,136 + (4,000×6) - 147,000 = 17,136円 相当のプラスと言えます。

 

 

①田代珈琲 サステイナブルコーヒーファンド

投資家得点の田代珈琲厳選珈琲豆に魅力を感じ出資しました。

セミナー無料招待の特典もあったのですが、場所的に参加できませんでした><;

www.securite.jp

 

 

②丸山珈琲とコスタリカ生産者ファンド

 豆も魅力だったのですが、3口から選べるフレンチプレス目当てで出資しました。

www.securite.jp

 

感想

どちらも無事プラス償還となり、出資者としてもうれしい限りです^^

特典にも大変満足しているので、次回があれば是非また出資したいファンドです(丸山珈琲には再投資済み)。

 

 

 

4.運用中ファンド

現在運用中のファンドです。

主に珈琲やスイーツ系のファンド中心です。

 

①クルミドコーヒーファンド

投資家特典より、新たな試みを応援したいという気持ちで出資しました。

www.securite.jp

 

 

②北海道焙煎 苫小牧コーヒーファンド1

 投資家得点のコーヒーミル目当てです。

www.securite.jp

 

 

さくらんぼとぶどう屋のパフェファンド1

 投資家特典でさくらんぼかぶどうが貰えます。 

www.securite.jp

 

 

阿賀野 八米 蜜源再生はちみつファンド

 ナッツ入りの蜂蜜が特においしかったです(^q^)

www.securite.jp

 

 

⑤至高のフレンチシェフの焼菓子ファンド

スイーツ系ファンド①

スイーツ系のファンドは人気があり、すぐ埋まってしまう場合も多いので注意です(^^;)

www.securite.jp

 

 

⑥くだもの王国岡山フレッシュタルトファンド

スイーツ系ファンド②

www.securite.jp

 

 

 ⑦岡山発 和のとろける焼きショコラファンド

 スイーツ系ファンド③

www.securite.jp

 

 

 ⑧北上 トロイカ チーズケーキファンド

スイーツ系ファンド④

www.securite.jp

 

 

⑨姫路発 まねきの「バウム」土産化ファンド

スイーツ系ファンド⑤

www.securite.jp

 

 

⑩郊楽苑 ショートチーズファンド

スイーツ系ファンド⑥

www.securite.jp

 

 

⑪室工大公認ジンギスカン鍋クッキーファンド

最初なんぞこれwって思いましたが、普通においしそう(^q^)

www.securite.jp

 

 

⑫丸山珈琲シングルオリジン珈琲ファンド2

丸山珈琲の直営店やオンラインショップで使えるプリペイドカードを、1口につき3000円分貰えます。

オンラインショップで使えるので、自分の好きなものが買えるというのがよいです^^

また、プラス償還の実績があり、信頼のおける事業者さんだと判断し再度出資することにしました。

www.securite.jp

 

 

5.セキュリテについて色々

償還を迎えて

今回2つのファンドが無事償還を迎え、少しは事業者さんのお役にたてたかな(・・?と思います。

今後もセキュリテを通じて、微力ながら支援していきたいと思います٩( 'ω' )و

 

ファンドを選ぶのが楽しい

セキュリテには全国から特徴あるファンドが集まっているので、ファンド一覧を見ているだけでも楽しくなります。

実際投資に至らなくても、「こんなのあるんだ!」みたいな発見があり、いつも楽しませて貰っています^^

 

  

投資家との交流

 セキュリテや各ファンドのイベントで、他の投資家の方々と交流する機会が得られるのもありがたいです。

下記は、クルミドコーヒーファンドのイベントでお会いした下山さんのブログです。

www.shimoshun.com

 

毎月の運用記録も公開されており、大変参考になりますm(_ _)m

www.shimoshun.com

 

カードで購入可能

VISA/MASTER/Dinersブランドが使用可能、AMEX/JCBはまだ(乂'ω')ダメー

額がそれなりに大きくなるので、カードが使えるのはありがたいです^^ 

最近メインカードをJCBに変えたので、個人的にはJCBも使えるようになると嬉しいです><

 

[参考]よくある質問|セキュリテ

[参考]【クレジットカード】メインカードの変更を検討してみる(ライフカード⇒JCB CARD W) - FinTech Diary

 

 不満な点

手数料が高い…これにつきます(--;)

 

ファンドにもよりますが、1口につき1割前後の手数料が掛かります。

あまり高すぎると敬遠してしまう投資家もいるのでは(・・?と思いますが…

あまり安くするとセキュリテの利益がなくなってしまいますので、この辺は難しいところかもしれません。

 

ソーシャルレンディングと非課税制度

イギリスには、日本のNISAの元になった、ISA(Individual Savings Account=個人貯蓄口座)という非課税制度があります。

そのISAの拡大版として、IFISA (Innovative Finance ISA)という制度ができ、ソーシャルレンディングも非課税の対象になりました。

日本のNISAも、今後非課税の対象が広がっていくことに期待したいですね。

 

[参考]イギリスでソーシャルレンディングがISAの対象に含まれた理由 | 社長 杉山智行のブログ |クラウドクレジット

[参考]日本でも(数年後に)ソーシャルレンディングがNISA対象に含まれる理由 | 社長 杉山智行のブログ |クラウドクレジット

[参考] 下記動画の11:00あたりからIFISAの話題。

www.youtube.com

[参考]The New Innovative Finance ISA (IFISA)