GMOペイメントのAPIで3Dセキュア2.0を導入

2025年3月末までにECサイトへ3Dセキュア2.0の導入が義務付けられるらしいです。
カード決済の導入方式によっては、そこそこ工数のかかるシステム改修が必要です。
未対応のサイトがたくさん出てそうですね。

私のところにも3Dセキュア導入の見積依頼がいくつか来ました。
決済代行業者や導入方式によって実装方法は大きく変わってきますが、
ユーザー・ECサイト・決済代行業者・3DSサーバーの4者間の情報の流れはだいたい同じです。
なので、一度実装すると、二度目からは必要な作業を把握するのは早くなります。

直近で実装したのは、
GMOペイメントのAPIで実装されていたサブスクのシステムで、
新規申込み時に3Dセキュアを導入したいというものでした。

サブスクなので新規申込み時には決済はありません。
ユーザー登録とクレジットカード登録があるだけでした。

具体的には、

SaveMember.idPass(ユーザー登録)

SaveCard.idPass(カード登録)

で終わりです。

ここに3Dセキュア2.0を導入するためには、
決済処理の一種である「有効性チェック」を実行する必要があります。
有効性チェックは、実際に決済されるわけではなくカードの有効性チェックで使われます。
3Dセキュア認証では決済処理を伴わせる必要があるため、
カード登録時に3Dセキュア認証をさせるためにはこの有効性チェックを使用します。
(GMOペイメントの担当者もこの方法を指示してきました)

有効性チェック実行後、レスポンスとして3Dセキュアの認証URLが返ってくるのでリダイレクトします。
3Dセキュア認証後、コールバックで帰ってきたら「3Dセキュア2.0認証後決済実行」「ユーザー登録」「決済後カード登録」
という流れになります。

具体的には、

EntryTran.idPass(取引登録(有効性チェック))

ExecTran.idPass(決済実行(有効性チェック))

3Dセキュアのサーバへリダイレクト(3Dセキュア認証)

コールバックURLに戻ってくる

SecureTran2.idPass(3Dセキュア2.0認証後決済実行)

SaveMenber.idPass(ユーザー登録)

TradedCard.idPass(決済後カード登録)

【GoogleマップAPI】fitBounds実行時に特定の方向だけパディングする

GoogleマップのJavaScript APIを使ったマップツールの修正依頼が来ました。

Googleマップで複数のマーカーを設置した際に、
すべてのマーカーが表示されるように自動で表示領域や縮尺をいい感じに調整してくれる

というメソッドがあります。

第一引数にマーカーの座標を入れてやるだけ(説明は割愛)なので
とても簡単で重宝するメソッドなのですが、

とあるシステムで、マップに重なる形で左側にスライド式の開閉メニューがあり、
普通にfitBoundsを実行すると一部のマーカーがメニューで隠れてしまうという問題がありました。

マーカーがメニューに隠れないようにしてほしいというのが今回の依頼なのですが、これは簡単に対応できます。
fitBoundsの第2引数でパディングを指定するだけです。

たとえば左メニューの幅が400pxだった場合は

とするだけで左に400pxパディングした形でfitBoundsが実行されるので
マーカーがメニューに隠れることがなくなります。

今回のシステムではメニュー幅は固定で、メニューの開閉状態だけ考慮すればよかったのでさらに簡単でした。

【キーボード】HHKB Studioを半年使ってみて

HHKB Studioを購入して半年近くたちました。

テレワークと出社のハイブリッドで仕事をしていますが、
キーボードを持ち運んで自宅でも会社でも毎日使っています。
キーボードだけ入るサイズのボディバッグをわざわざ買ったほどです。

半年近く毎日、1日中使ってきましたので
あらためてレビューを書きました。

※以下、あくまで個人の感想です。

打鍵感

これまでのHHKBの静電容量無接点方式からメカニカルスイッチに変更されたそうですが、
私はこれまでのHHKBを使ってきていないので、あくまでHHKB Studioだけの感想になります。
打鍵感としては、「押した感」を感じることは少ないのですが、ほとんどミスなく速く打てているので、自分には合っているのだと思います。
配置も形状もよく考えられているなあと思います。長時間仕事しても手が疲れなくなったのは確かです。

打鍵音もコトコトという静かな音で、全然うるさくないです。

HHKBは通常のキーボードの最上段(F1~F10などがある段)がなく、ホームポジションから大きく離さずにすべてのキーが打てるので、目線を下に向けることが全くなくなります。
そのおかげで目も疲れにくく、首も痛くなったりしません。

余談ですが、一時期、肩と首の痛みがひどかったのですが、
キーボードを膝の上(というかモモの上)に置いて作業するようになってから
姿勢がよくなったのか、痛みがなくなりました。
肩こりや首のこりに悩んでいる方は試してみる価値があると思います。

ポインティングデバイス(トラックポイント)

ポインティングデバイス(トラックポイント)も
Thinkpad使いの私には違和感なく使えています。
カーソル速度の変更も簡単で、カーソルが勝手に動くトラブル(トラックポイントあるある)にも遭遇したことがなく、
本家Thinkpad以上に使いやすいです。

またも余談ですが、
Thinkpadのトラックポイントにはいくつか種類があり、
種類によって指の引っかかりや操作感にかなり違いがあります。
私のおすすめは「ソフトリム」タイプですが、現在は公式には販売されていません。
しかし、3Dプリンターで作成して販売されている方がいらっしゃいます。
HHKB Studioにも装着できますので、興味のある方は探してみてください。

ジェスチャーパッド

ジェスチャーパッドはオフにしています。
私の仕事や使い方が特殊なのかもしれませんが、必要性を感じず、
膝の上で使っているので、けっこうな頻度で持ち上げることになるのですが
持ち上げた際に誤動作することが多いのでオフにせざるを得ませんでした。

その他

最初は有線で使っていたのですが、今はBluetoothで接続して使っています。
1回だけ接続できない問題が出たのですが、それ以外は問題なく使えています。

キーは無刻印にしました。
無刻印にするとキーマップを変更しやすいというメリットがありますが、あとはほとんど自己満足の世界です。
無刻印のキーボードは「すべてのキーを指が覚えている」人向けなので「電話しながら」「メモをとりながら」片手で使うということができません。

最後に

HHKB Studioを購入したきっかけは
Thinkpadと同じポインティングデバイスがついたことに興味を持ったからなのですが、
打鍵感なども含めてHHKBはやっぱりすばらしいキーボードですね。
高価ですが、私は毎日、1日中使うものなので、価値があると思います。

TinyMCEをカスタマイズ

久しぶりにTinyMCEをカスタマイズする案件があり、以下のカスタマイズを行いました。

bタグがstrongに変換されないようにする

見出しの選択肢をカスタマイズする

※見出しをツールバーに出すのは「formatselect」

下線をstyleではなくuで追加する

Bとは別でstrongボタンを作る

(ツールバーに「strong」を追加)

設定はすべて

の中に書きます。

【phpSpreadsheet】PHPでExcelを読み込んだらグラフが消える

phpSpreadsheetを長らく使っていますが、
あるとき「読み込んだExcelのグラフをそのまま出力したい」
という要望がありました。

何も考えずにグラフも読み込めるだろうと
過去のシステムからphpSpreadsheet使用部分をコピペして持ってきたところ、
出力したExcelはグラフだけ消えてしまいました。

知っている人にとってはなんということはないのですが、
グラフ付きのExcelを読み込むときは、Readerに対して

という設定が必要だとわかりました。

また、出力時も同様に、Writerに対して

が必要でした。

この歳になってまたひとつ勉強になりました。

例)