ぼくが作ろうとしたのは「コインを購入してもらって、そのコインをコンテンツ内で利用してもらう」というもの。
PayPalの決済ボタンを設置するには、大きく3種類あって、「API認証を使って自由自在に作り込む」「html/JavaScriptの知識で決済フォームを取り入れる」「管理ツールでボタン作成し、自動生成されたhtmlコードを貼り付ける」。
1日目)ググりながら意味が分からないまま、いろんな記事をコピペしながら試すもできない。そもそも開発環境のアカウントを作ることもできずに諦めた(エンジニアの方にぜひ作ってほしい、予算ないけども...)。
2日目半日)PayPalアカウントがなくても口座引き落としやクレジットカード決済ができるということで、これはいい!と思いトライ。購入ボタンを選択した際に指定サイズのウィンドウが開かれることがどうしても嫌で(これでコンバージョンがよくなるということだが...)、半日で諦めることに。そもそも仕様以前に英語のドキュメントに苦戦して導入できなかったのだけど(涙)。
2日目のひととき)この方法はスーパー簡単。管理画面をポチポチして一瞬で完成。
3日目)結局、管理ツールでボタン作成し、自動生成されたhtmlコードを貼り付けることにした。それまでは良かったが、運用をイメージしたときに大きな問題が3つ発生することが判明。
3つ目に関しては、とくに致命的。利用者と購入者が紐付けできなければコインを付与できない。購入時に利用者にユーザーIDを入力してもらうなど紐付けするフローは考えられるが、記入ミスや記入漏れのヒューマンエラーは避けたい。また、ユーザー登録時に本名やPayPal登録情報を入力してもらうことで紐づけることも考えられるが、過度に個人を特定する情報の保持は避けたい。
PayPalには返金機能があるので対応はできるとしても、もし正常にコインが付与され、そのコインの利用後に返金依頼がきたら、利用状況は確認できないので全額返金するしかないという究極な性善説で稼働させるしかない(被害は運用側のみなので、最初はこれでもいいかもしれないが)。
決済時に利用者と決済者を紐付けして、タイムラグが発生することなくコインを付与するにはどうしたらいいか。この命題にフォーカスして改善策を考える。
購入時
購入ボタン → PayPal決済画面 → PayPal決済完了画面 → 購入画面
購入キャンセル時
購入ボタン → PayPal決済画面 → 購入画面

PayPal画面では、決済完了後、キャンセル後のページを指定できるので、それぞれ遷移した後、DB処理をした後に購入画面にリダイレクトするようにしている。とくに購入完了画面は大事で不正なアクセスがあった場合のケアを充分にしておく必要がある。
A 購入キャンセル後、コンテンツに戻らなかった場合
購入ボタンを選択時に、購入申請情報としてデータ保持した情報は残ったままだが、残っているからといって害になる情報ではないためそのまま。むしろ申請情報のログは何かに役立たせることができるかもしれない。
B 購入後、コンテンツに戻らなかった場合
購入ボタンを選択時に、購入申請情報としてデータ保持し、即時反映ではなく、手動で付与する。即時反映できない例外ケースとなる。
C (PayPalへの要望)決済完了時は、自動でリダイレクトして欲しい
リダイレクトされると、B 購入後コンテンツに戻らない、というリスクを排除できる
とりあえずローカル環境で期待通りに動作するところまで完成。今日中にはステージングでの動作確認まで終わらせたい。
とにもかくにも、こうしてステイホームな2020年GWは終わりました(笑)。
この書籍の中で、ライティングのユーザビリティについて触れている項目があり、激しく共感する部分だったので、ここで備忘録としてピックアップする。 ・・・
この書籍は、I部 リサーチ、II部 デザイン、III部 インプリメンテーションと三部構成になっている。この記事では、その中から、I部 リサーチ、・・・
これを知ったときはマジか!と飛び跳ねた。あらためて思い返してみると、確かに公式チュートリアルでも触れていたことをうっすら思い出す。そしてそのときとやり方がなん・・・
試したことはまだないけど、Macで編集時と書き出し後で色味が変わって困ったときのために備忘録。 プロジェクト設定 > 「カラーマネジメント・・・
プロジェクト設定と環境設定について詳しく解説されている情報がなかなか見つからないので、要所要所で知り得た情報を更新していきます。 プロジェクト設定 ・・・
Clipyが超絶便利そうだったので、macOS Big Sur にインストール&再起動して使ってみた。ところが、command + c を複数の箇所で行い、c・・・
requestAnimationFrame をはじめて見たので調べていたら、setTimeout や setInterval は requestAnimati・・・
6年ぶりに読み返したが、今なおハッとさせられることが多く見つかる。 この本で忘れないようにしたい項目をピックアップするだけでも役に立ちそ・・・
この記事では、以前に読んだ際に付箋を付けていたが、その部分だけを備忘録としてピックアップするため、本の要約ではない。実際は、何倍も濃い内容で、練・・・
もう一回、全部読み返したいところだが、書籍がありすぎるので、当時付箋紙をつけていたところだけをピックアップ。書籍内ではより具体的な説明があるので・・・
これまでに扱ったことのないようなものを取り扱うときには、次のような問いを参考にすると何をしたらよいかが分かってくる。 どの部分が可動部で、どの部分が固定部か。・・・
以前に書いた「このサイトのリニューアル」で、リニューアル意思を示しつつも結局保留にして、先送りしてしまっていたけど、このあいだの週末(2013.3.29-30)・・・
エラーが起こっても大丈夫なシステムを作ると、みんなそれに頼るようになるので、信頼性を高くしておいたほうがよいだろう。 エラーの原因を理解し、その原因が最も少な・・・
こんな製品は使いたくない例1 教示がよくない。 システムの操作が可視的でない。 操作した結果が目に見えない。 こんな製品は使いたくない例2 デザイナーは良か・・・
表示させるにはキーワードを変更するか単価を上げてください。」ってメッセージがよく出てしまう。 これを改善するにはどうしたらいいか? アナウンス通りに単価を吊り上・・・
地図サービス「ジョルノ地図」、リニューアルしました。 ジョルノ地図(公開終了) ゼロベースで企画からやり直しました。 まず、「どんなときに地図を使うのか」、改・・・
新規コンテンツ「たびのと言ノ葉」公開 Webマガジン「たびのと」を夏に公開しましたが、たびのとのコンテンツの一つとして「たびのと言ノ葉(ことのば)」を新規で作・・・
いつもは直接アップロードしているので気にしていなかったが、WordPress管理画面のメニュー「メディア」からfavicon.icoをアップロードしようとした・・・
「デザインノート EXTRA good design company 水野学」から抜粋して自分なりの解釈を追加した過去メモ。 「iD」メイキング ・・・
外界の中の知識 人は環境を構造化して、思い出さなくてはならないものに関する多量の情報を手に入れることができるようにしている。 そのために、「ofの知識(事実につ・・・
「test」
「>ころころさん コメントありがとうございます! 確かに、APIドキュメント見ましたが、ライブに関する情報は今のところ取得できないようですね。 インスタライ・・・」
「SIGMAから超軽量で明るい単焦点レンズが2本発売になりましたので、リストにレンズ情報追加しました!」
「>名無しさん ご指摘、ありがとうございます! 記事冒頭の「まずはサンプル」のサンプルが動いていませんでしたので修正しました。」
「>前田さん コメントありがとうございます。 環境は分かりかねますが、修正したいファイルのパーミッションを604や644に変更すると書き込みできるようになります(・・・」
「アバターを取得する「get_avatar」についても追記しました!」
「「値をクリアする」を追加しました。チェックボックスやラジオボタンの値を何も選択していない状態に戻すときについて触れています。」
「>匿名さん コメントありがとうございます。 サンプルでは、beforeは何も処理していないので期待する表示にならない、で正解です。 クリックした後が、対応・・・」
「(匿名)さん コメントありがとうございます。何も設定変更していないのに、それまで使用できていたサーバーが突然使えなくなるのは辛いですよね、、。 ここで紹介したや・・・」
「コメントありがとうございます! そもそもできるかはわかりませんが、ソースを書き換える必要はあります。 下記記事などが参考になるかもしれません。 illustra・・・」