まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

以前に NUCBox というミニ PC を購入した GMKtec 社の(2025/06 時点での)最新モデル、EVO-X2 という格安モンスターマシンを買ってしまいました:
AMD Ryzen AI Max+ 395  EVO-X2 AI ミニ PC

2025061801


CPU に AMD Ryzen AI Max+ 395(16 コア)を搭載し、スペックは2種類から選べるのですが高性能な方だと 128GB メモリ+ 2TB SSD です。そこまで限界に近い状態で使ったわけではないのですが、印象としてさほどうるさいわけでもなく、静かに稼働してくれてます。 円安というハンデの中ですが、このスペックの機種が約 2000 ドルで買えるのはなんとも嬉しい時代になりました。

自分はとある仮想環境の構築のためにメモリ 64GB では足りないと分かっている作業をしていて、この機種ならなんとかなりそう、、と購入したのでした。

ところが実際に使い始めてみると、想定していなかった事態に遭遇しました。タスクマネージャーで見る限り、搭載されているはずの 128 GB のメモリは 128 GB を認識しているかのような表示にはなっているものの、実際には 64GB しか使えないかのようになっていました:
2025061600(1)


64GB だと足りないからこのマシンを購入したのに・・・ というわけで販売元の GMKtec に問い合わせた所、原因と調整方法を教えていただけました。以下、その内容を紹介します。


【なぜ 64GB しか使えないのか】
この機種はメモリそのものは 128GB 搭載されているのですが、出荷状態ではその半分である 64GB が(GPU 用の)グラフィックメモリとして予約されているようでした。そのためユーザーが自由に使えるメモリは(128 - 64 = )64GB になっていた、というのが原因のようでした。

この値は利用者が調整することのできる値になっているので、GPU をどの程度使うつもりなのかによって調整することで実質的なメモリ量を増減することができるとのことでした。


【メモリ量調整手順】
以下でユーザーが利用可能なメモリ量を調整する手順を紹介します。が、この内容が有効なのは PC の BIOS バージョンが 1.04 2025/05/12 以降のものに限られるようです。まずは以下の手順で BIOS バージョンを確認してください。仮に対象日付のものではなかったり、全く異なる BIOS を使っているような場合でも、同じような設定項目があればそこをどうにかすれば(苦笑)なんとかなるかもしれません。

BIOS バージョンを確認するには PC が起動している状態で Win+R をクリックし、"msinfo32" と入力して「システム情報」を起動します。この画面内で「BIOS バージョン/日付」を参照します:
2025061601 (1)


上記だと "1.04 2025/05/14" になっていました。条件を満たしているので、以下の方法でユーザーが利用可能なメモリ量を調整することができます。


メモリ量を調整するには BIOS 画面を起動する必要があります。一度 PC の電源を切ってから電源ボタンを軽く押し、起動画面で ESC キーを連打していると以下のような BIOS 画面が起動します:
2025061802


横の矢印キーで "Advanced" タブを選択します:
2025061803


縦の矢印キーで "GFX Configuration" という項目を選んで Enter キーを押します:
2025061804


再び矢印キーで "iGPU Configuration" という項目を選んで Enter を押し、"UMA_SPECIFIED" を選択します:
2025061805


続いて "UMA Frame buffer size" を選択して Enter を押します:
2025061806


ここで GPU 向けメモリ量を指定します。128 GB モデルの場合、ここは最小で 512MB から最大 96GB まで選択することができます:
2025061807


自分が希望するところまで矢印キーで移動して、Enter で決定します。繰り返しますがこの値が小さいほど、ユーザーが自由に使えるメモリ量は増えます:
2025061808


元の画面に戻るので設定値が自分の希望の値になっていることを確認します:
2025061809


最後に F10 を押して "Save & Exit" 画面に移動して "Save & Reset" を選んで起動します。これで起動した Windows ではここでの変更が反映されて、利用可能メモリが増えているはず、です:
2025061810


多くの人は GPU 目当てでこれを買っているのでしょうか? 私の場合は CPU はそれほどこだわりがなく、メモリ量が最優先だったので「足りない」ことに気付いたのでした。 


最近の PC だとこういうケースは意外と多かったりするのでしょうか。AI や機械学習用途でハイスペック機を使う人も増えているので、初期設定がこのような内容でも困らない人もいるのかもしれませんね。ただ私と同じように悩んでしまった人の助けになれば嬉しいです。

【シリーズリンク】
#内容
1PayPay for Developers へサインアップ
2PayPay API について
3サンプルアプリケーション
4加盟店登録 ←今回


前回の続きです。今回は加盟店登録の手順を紹介します。

以前に紹介した PayPay for Developers にアカウント登録をすることで PayPay API を使ったアプリケーション開発の準備はできていて、実際の決済ではなく仮のお金を使ったテスト環境での決済による動作確認を行うことはできるようになっています(実際にアプリケーションを公開したり運用したりはできないけど、運用する PayPay 決済対応アプリケーションを開発して、公開せずに手元で動かすまではできる、という意味です)。

ただこれだけだとあくまで「(開発したアプリで)試しに使ってみる」段階であって、アプリが完成しても実際のお金を使った本環境での決済に移行することはできません。実際のお金を使った決済ができるようにするには PayPay for Developers のアカウントを作ることに加えて PayPay に加盟店登録をする必要があります。実際の決済をするつもりがなければ本ブログエントリは無視していただいてもいいのですが、私自身が試しに手続きを行った記録を公開する目的で紹介させていただきます。


【加盟店登録の法人登録と個人事業者登録の違い】
では PayPay 加盟店登録する手順を紹介します。PayPay for Developers アカウントを取得済みであることが前提となりますので、まだ取得されていない場合は以前の内容を参照いただいて取得しておいてください。

加盟店登録をする上で最初に決めておく必要のある項目があります。それは「法人登録」にするか、「個人事業者登録」にするか、ということです。どちらか1つを選んで登録することになります。

私のように経営主体となる法人を持っておらず、あくまで個人開発者としてサービスを運用することを想定するのであれば事実上選択肢はなく、個人事業者登録一択になります。個人事業者登録のメリットはなんといっても手続きが簡素であることです。提出書類も本人確認書類程度だし、公開するアプリケーションに必要な情報(ページ)が用意されていれば審査もさほど面倒ではありません※。

※法人登録したことないので、あくまで主観です。

一方、事業法人としてのサービス運用を行う場合は法人登録する選択肢もあります。こちらは手続きは比較的面倒ではあるのですが、個人事業者登録では使うことのできない機能(例えばサブスクリプション決済機能)もフルに活用することができ、より柔軟な機能実装や運用が可能になります。

以下では個人事業者として加盟店登録する手順を紹介します。ただこの手続きを最後まで行うには該当のウェブアプリケーションが既に公開されていて、その URL やサーバー IP アドレスを入力できる状態になっている必要があります。そこまで準備ができている状態で先に進めるようになる点にご注意ください。


なお、この手続きに関する PayPay の公式ドキュメントはこちらになります:
https://integration.paypay.ne.jp/hc/ja/article_attachments/4632569873039


【PayPay に個人事業者として加盟店登録する手順】
PayPay に個人事業者として加盟店登録する手順は2段階に分かれた入力作業を終える必要があります。まず第一段階の手順を紹介します。

PayPay for Developers にログインし、ダッシュボード画面から「アカウントの作成」と書かれた部分をクリックします:
2025060801


「加盟店登録をしましょう」というダイアログが表示されるので「今すぐ申し込む」をクリックします:
2025060802


すると申し込みフォームが表示されます。自分でアプリを作って運用する場合は「ユーザへのサービス提供の主体となる事業者」を選択します:
2025060803


すると質問項目が増えます。まずサービスの販売形態は「Web サービス/アプリ」にチェック、ご利用のサービスは「ウェブペイメント/動的ユーザースキャン/アプリコール」をチェック(サブスクである「継続課金」を使ってみたいところではありましたが・・・ 個人事業主は上のみ選択可能です)、最後に「お申込みフォームへ」をクリックします:
2025060804


すると画面が「PayPay オンライン加盟店のお申込み」ページに遷移します。自分の名前と連絡先電話番号、事業形態(個人事業主)を入力して、最後に「確認する」をクリックします:
2025060805


以下のような確認画面が表示されるので「申し込み開始」ボタンをクリックします。これで第一段階が完了です:
2025060806


この後、以下のようなページに遷移し、本登録である第2段階のフォーム入力となります。画面上部の「残り未完了項目」(必須項目で未入力のもの)がゼロにならないと先へ進めません:
2025060808


以下、要注意な部分のみ紹介します。まず個人事業主としての代表電話番号や住所の入力が必要です。ここには自分の電話番号や住所を記載します:
2025060809


次に開発して公開することになるウェブサービスの内容を記載する項目があります。名称や年商(予定)を記載します:
2025060810


販売形態は(ウェブサービスであれば)「web/アプリ」を選択し、サービス内容の詳細を記載・選択します。 なおこの中で「お取り扱い商品詳細」を指定するのですが、ここで指定する項目によって決済システム利用料(=PayPay 側に支払う手数料)が決まります:
2025060811


またここで実際に公開するウェブサービスの URL 等の情報が必要です。この中には特定商取引法に基づく表記の URL や(個人事業主としての)コーポレートサイトの URL も必須入力項目として必要な点に注意してください:
2025060812


更に決済サーバー(アプリケーションが稼働するサーバー)のグローバル IP アドレスも必要です:
2025060813


実決済を伴うサービスの申請となるため、緊急連絡先の登録が必要です。PayPay 決済サービス側の障害情報などもここで登録したメールアドレスに送付されます:
2025060814


規約等の内容を確認し、問題なければチェックを入れます。入力が完了したら「保存して次へ」をクリック:
2025060815


次に振り込み関する情報入力ページに遷移します。最初に入金サイクルを指定します:
2025060816


次に売り上げを入金してほしい金融機関を指定します:
2025060817


特定の商品を扱う場合はその資格書類が必要になるので、内容について該当項目があればチェックします。入力が完了したら「保存して次へ」をクリック:
2025060818


最後は本人確認書類の登録画面です。最初は入力内容の確認と、必要であれば(本人確認書類の登録前に)修正します:
2025060819


本人確認書類の登録に移ります。自動車運転免許など、登録する書類を選択し、指示に従って画像ファイルをアップロードします:
2025060820


必要な全ての画像ファイルをアップロードしたら「次へ」をクリックします:
2025060821


最後に内容確認画面が表示されます:
2025060822


内容に修正が必要なければ「内容を確認して申込む」ボタンをクリックします。これで登録作業そのものは完了です:
2025060823

私の場合は入力の数時間後に電話がかかってきて、いくつかの内容について電話確認が行われました。まあ電話番号の確認も兼ねたものだと思います。電話対応の後、数日後に以下のようなメールが送られてきました:
2025060824


メール本文にも書かれていたように、実際に利用開始できるようになるまでここから更に数日必要なようでしたが、手続きとしては無事に完了することができました。


【まとめ】
以上、4回に渡って PayPay API を使ったオンライン決済対応アプリケーションの作り方や、その前提となる PayPay for Developers アカウントの取得方法を紹介してきました。

アプリケーション開発に関しては、以下の点に注意する必要があると感じました:
・単に PayPay で決済するだけなら実装はシンプルでさほど難しくない
・一方で(テスト用のお金ではなく)実際のお金で決済するアプリを公開する前提で考えると、返金処理などにも対応した設計が必要になり、そのためには決済トランザクションをデータベースなどに記録して、後からどのトランザクションに対する返金なのかを照会できる仕組みも併せて必要

また今回は個人事業主アカウントしか作れなかったので、用意したサンプルもそこまで複雑な API を実装していないのですが、いずれは(現在、法人契約でないと使えない)サブスクリプション API も使えるようになったらいいなあ、、と思っています。






【シリーズリンク】
#内容
1PayPay for Developers へサインアップ
2PayPay API について
3サンプルアプリケーション ←今回
4加盟店登録


前回の続きです。今回は前回紹介した PayPay API(SDK) を使って決済・確認・返金に対応可能なアプリケーションのサンプルを作りましたので、その使い方を紹介します。 またこのサンプルアプリケーションには実際の決済を行うための加盟店登録(次回紹介予定)時の審査に必要な使い方ページや、特定商取引法に基づく表記のページも含めています。そのため、売りたいものやサービスが既にある場合は商品を自分のものに入れ替え、使い方ページや特定商取引法に基づく表記のページを自分のものに書き換えることで審査に使うこともできると思っています。


【サンプルアプリケーションを動かすための準備】
PayPay 決済のサンプルアプリケーションを手元で動かす上で大きく3つ、前提条件となる準備作業が必要です。

(1)Node.js
以下で紹介するサンプルアプリケーションは Node.js を使って実装されています(もう少し詳しく言うと Node.js + Express + EJS を使って実装したサーバーサイドアプリケーションで、jQuery や Bootstrap を使って UI を作っています。まあ昔ながらのシンプルな構成になっていると思ってください)。

このサンプルアプリケーションを手元の PC で動かすには Node.js がインストールされている必要があります(他のライブラリなどはサンプルアプリケーション側に用意されています)。既にインストール済みであれば先に進んでください。インストールできていない場合は公式サイトを参照し、自分の環境向けの Node.js をインストールしておいてください。

(2)PostgreSQL
前回のブログエントリでも紹介しましたが、サンプルアプリケーションは(返金などに対応するため)決済トランザクションをデータベースに記録します。そのデータベースが必要なんですが、本サンプルアプリケーションでは PostgreSQL を使う想定で記述されています。個人的にはデータベースは Docker 環境で用意するのがいいと思っていますが、なんらかの方法で PostgreSQL にアクセスできるような環境を用意しておいてください。

ちなみに Docker がインストール済みであれば以下のコマンドで PostgreSQL データベース(データベース名は mydb 、コンテナ名は mypostgres)を動かすことができます:
$ docker run -d --name mypostgres -p 5432:5432 -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=password -e POSTGRES_DB=mydb postgres

また以下のコマンドを追加で実行して、 mydb にトランザクション記録用テーブルである transactions を定義します:
$ docker container exec -it mypostgres psql -h localhost -U admin -d mydb

mydb=# create table if not exists transactions ( id varchar(100) not null primary key, order_id varchar(50) not null, amount int default 0, currency varchar(10) default '', created bigint default 0 );

mydb=# \q

このような PostgreSQL データベースと transactions テーブルが用意されている前提で以下を説明します。


(3)PayPay アプリ
またこのサンプルアプリケーションを使って(テスト環境で)商品を購入したり、購入した商品の返金対応をしたりするのですが、そのためにはスマホにインストールされた PayPay アプリが必要です。普段自分が使っている PayPay アプリでもできないことはないのですが、(環境切替が面倒だと思うので)できればアプリケーション試験用に普段使っているものとは別のスマホに PayPay アプリをインストールしておくのがいいと思います。



【サンプルアプリケーションを動かしてみる】
サンプルアプリケーションのソースコードはこちらから取得できます(zip でダウンロード&展開、または git clone):
https://github.com/dotnsf/paypayapi-sample

ソースコード展開後、とりあえず初回だけ必要なライブラリのインストール作業を済ませておきます:
$ cd paypayapi-sample

$ npm install

(正しく実行できると node_modules というフォルダが作られます)

次に動作設定ファイル .env を編集します。適当なエディタ(メモ帳でも可)で .env というファイルを開いて、以下の内容を入力して保存します:
DATABASE_URL=postgres://admin:password@localhost:5432/mydb
PGSSLMODE=disable
ADMIN_ID=user
ADMIN_PW=pass
PAYPAY_API_KEY=(PAYPAY API キーの値)
PAYPAY_API_SECRET=(PAYPAY API シークレットの値)
PAYPAY_MERCHANT_ID=(PAYPAY 加盟店 ID の値)
PAYPAY_REDIRECT_URL=http://localhost:8080/paypay/redirect

DATABASE_URL は前提準備で作った PostgreSQL データベースへの URL 、ADMIN_USER と ADMIN_PASS は管理者用画面にアクセスする際の ID とパスワード(この例だと ID が user で、パスワードは pass)を指定します。

そして PAYPAY_API_KEY と PAYPAY_API_SECRET は初回 PayPay for Developers に申し込んで取得した API キーとシークレットの値、PAYPAY_MERCHANT_ID は加盟店 ID です。それぞれ自分の環境で調べた値を指定してください(自分で取得した値を入れないと意味なくなります):
2025052910


最後に(これは編集せずにそのままでも動きますが)このサンプルアプリケーションで扱う商品の一覧ファイル items.json を必要に応じて編集します:
[
  {
    "name": "商品A",
    "imageurl": "/item-a.png",
    "amount": 500,
    "currency": "JPY"
  },
  {
    "name": "商品B",
    "imageurl": "/item-b.png",
    "amount": 1000,
    "currency": "JPY"
  },
  {
    "name": "商品C",
    "imageurl": "/item-c.png",
    "amount": 1200,
    "currency": "JPY"
  }
]

デフォルトの items.json では JSON 配列フォーマットで3つの商品が記載されています。各商品ごとに商品名、商品画像 URL 、価格とその通貨単位("JPY" は「日本円」です)が指定されているので、必要に応じて内容を書き換えたり、商品を追加削除してください。

ちなみに商品画像はリモートにある画像を使う場合はその URL を、手元にある画像の場合は public/ フォルダ以下にコピーしておくとサンプルのような記述が使えます。

ここまで完了していると実際にサンプルアプリケーションを動かすことができます。動かすには以下のコマンドを実行します(ちなみに実行終了は Ctrl+C です):
$ node app


実行中のサンプルアプリケーションにアクセスするには、同じ PC でブラウザを開き、http://localhost:8080/ にアクセスします。

下のような、3つ(items.json を変更した場合は変更内容によって変わります)の商品が縦に並んでいる画面になれば起動成功です。items.json で指定した商品が商品名、画像、価格が反映されて "Buy" というボタンを一緒に表示されています:
2025061301


実際に商品を購入する前に、概説ページと特定商取引法に基づく表記ページを確認します(管理者画面は後述します)。それぞれ画面上部のリンクから遷移できます:

(概説ページ)
2025061302

(特定商取引法に基づく表記ページ)
2025061303


どちらもここでは実質的に意味のないサンプルですが、実際の決済を行う際に必要な加盟店登録(次のブログで紹介予定)時には必要なページ(のサンプル)です。加盟店登録を行う際は同様のページを自分のショップ向けにカスタマイズして用意する必要があることを意識して内容を理解してください。


【テストアカウントで PayPay アプリにログイン】
改めて商品ページに戻り、今度はどれか1つを実際に購入してみましょう。そのために購入時に備えてスマホの PayPay アプリにログインしておきます。 ただ通常の(自分が普段使っている)PayPay アカウントでログインするのではなく、PayPay for Developers でテスト用に提供されているアカウントで(仮想のお金で)ログインします。 そのための手順を紹介しますが、可能であれば普段自分が使っているスマホではなく、(持っていればですが)別のスマホで以下の手順を実行することをお勧めします。

まず PayPay for Developers にログインし、ダッシュボードのテストユーザータブを開きます。すると3つのテストアカウントがあるので、どれか一つのユーザーネームとパスワード(下図では見えていませんが、目のアイコンをクリックすると表示されます)を確認しておきます(残金が少ない場合はこの画面からチャージもできます):
2025052909



このテストユーザーを使って PayPay アプリに Developer アカウントでログインします。Developer アプリにログインするにはアプリケーションを開いて(ログイン中の場合はログアウトして)、ログイン/新規登録画面内 PayPay ロゴの上部を7回連続でタップします:
2025061305


(途中からカウントダウンが表示されます)
2025061306


7回タップすると以下のような画面になります。「PayPay for Developers のアカウントでログイン」をクリックします:
2025061307


すると(テストモードでの)ログイン画面に切り替わります。ここで先ほど確認したテストユーザーの ID(電話番号)を入力します:
2025061308


パスワードも該当する電話番号のパスワードを入力してログインします:
2025061309


ログイン後の画面はスクリーンショットが撮影できないため文章のみでの説明になります。Developer モードでのログインができたことを確認してください。


【テストアカウントの PayPay アプリで決済】
ではテストアカウントの PayPay アプリで、サンプルアプリケーションの商品を購入してみましょう。

改めて購入する商品(下図の例では「商品A」)のアクション列にある "Buy" ボタンをクリックします:
2025061301


確認メッセージが表示されるので、間違いでなければ "OK" ボタンをクリック
2025061301


すると PayPay の QR コード画面に転送されます(ここでは前回紹介した内容の「ユースケース1 ウェブ決済」機能を使っています)。この QR コードを PayPay アプリで「スキャンして支払い」します:
2025061302


アプリ側で支払いするとサンプルアプリの画面も支払い完了時の画面に切り替わり、、、
2025061303


しばらくすると元の画面に再転送されます。これで決済できています。
2025061304


始めてやってみると不思議に感じるかもしれませんが、これで支払いは(今回の場合はテストユーザー用の仮想のお金で)完了しています。 他の商品も含めて何度か決済してみてください。


【管理画面と返金対応】
ユーザーの決済までの手順は(普段使っている PayPay アプリでの決済手順と比べてもほぼ同じだと思うので)分かりやすかったのではないかと思いました。これで支払いが完了して、(このサンプルアプリの場合は)そのトランザクションが記録されています。

最後に管理者としての管理画面にもアクセスしてみます。トップ画面右上の「管理画面」リンクをクリックします(または http://localhost:8080/admin にアクセスします):
2025061305


管理者画面へアクセスするためのユーザー名とパスワードの入力を求められるので、自分で .env に設定した内容(ADMIN_USER と ADMIN_PASS の内容)を入力してログインします:
2025061306


管理画面へのログインに成功すると以下のような画面になり、過去のトランザクション(取引)一覧(下図では1件だけ)が表示されます。トランザクションの詳細を表示するには該当レコードの "info" ボタンをクリックします:
2025061401


すると以下のようなダイアログが表示され、トランザクションの現在の状態が表示されます(日付や決済額などの情報が確認できます)。トランザクションのステータスはダイアログの最上部に表示されます(下図では "COMPLETED" になっていて、決済が完了していることを意味しています)。なお、ここでは前回紹介した内容の「ユースケース2 ウェブ決済状況確認」機能を使っています:
2025061402



最後に返金対応をシミュレートしてみましょう。もしこのトランザクションを実行したユーザー(お客様)から、「クーリングオフを理由に返金してほしい」という要望があった場合に(法律的にはクーリングオフは消費者の権利なので条件を満たしている限り対応しないわけにはいかないのですが)具体的に返金するにはどうすればよいか、というシミュレーションです。

返金対応をする上で重要なのは「どの取引に対して返金処理をすればよいのか?」を明確にするということです。トランザクションの履歴は管理画面に残っていることが確認できるのですが、この一覧の中のどのトランザクションに対して返金対応すればよいか、を正確に知る必要があるのです。

そのためにはまず利用者(お客様)から取引番号を伝えてもらう必要があります。以下の手順を利用者に伝えた上で、「返金を希望する PayPay 決済の取引番号を調べて送ってほしい」と伝えます。

利用者からみた取引番号の調べ方は以下の通りです。なお、PayPay アプリのスクショは撮れないようになっているので、以下は PayPay アプリの操作の様子を別のスマホで撮影した写真を添付します。またこの PayPay アプリは PayPay for Developers のテスト用アカウントでログインしているので、その旨のメッセージが画面上部に表示されています。


まず利用者に PayPay アプリにログインした状態で開いてもらいます:
2025061403


ここから「取引履歴」と書かれた部分をタップして、過去の取引履歴を表示してもらいます:
2025061404


直近の取引の履歴が表示されます。ここから返金を希望する取引を選んでタップしてもらい、
2025061405


返金対象の取引の画面が表示されます。ここで更に「詳細を見る」と書かれた箇所をタップしてもらうと、
2025061406


詳細情報が展開されます。その中に「取引番号」と書かれた箇所があります。返金対応にはこの情報が必要なので、取引番号の内容を伝えてもらってください:
2025061407


返金対象の取引番号が分かったら、改めてサンプルアプリの管理画面を開き、トランザクション一覧で order id がその取引番号になっているトランザクションを見つけます(下図の例だとトランザクションが1件しかないので簡単に見つかりますが、数多くあった場合はソートなどして見つけてください)。これで返金対象トランザクションが分かりました:
2025061408


返金対象トランザクションが分かったら、このトランザクションの返金対応を実施します。なお返金対応はアンドゥができない点に注意してください。また、ここでは前回紹介した内容の「ユースケース3 返金対応」機能を使って実装しています。

対象トランザクションの右側にある "Refund" ボタンをクリックします:
2025061408


最初の確認画面が表示されます。対象トランザクションが一致しているか確認して OK をクリック:
2025061409


返金処理には必ず理由を入力する必要があります。返金理由を記載して OK をクリック:
2025061410


返金処理前の最後の確認画面が表示されます。内容を確認し、この内容での返金を実行する場合は OK をクリックします:
2025061411


実行結果が表示されます。画面内に返金理由や paymentId(order id)、返金額などの情報が表示されています:
2025061412


再度、管理画面が表示されます。ここで返金したトランザクションのステータスを再確認してみます。該当トランザクションの "info" ボタンをクリックします:
2025061413


すると(正しく返金が実行されていれば) "REFUNDED" というタイトルのダイアログが表示され、返金理由なども表示されます。無事に返金できていたようでした:
2025061314


ここまでできていれば、利用者の PayPay アプリ側にも返金されています。PayPay アプリの取引履歴を確認すると返金されていることが確認できるはずです:
2025061415


サンプルアプリケーションと PayPay アプリ(とテストユーザー)を使った購入と、購入内容の確認、そして返金対応の手順が確認できました。ここまで確認すると、返金対応するには過去の(取引番号含めた)取引履歴の情報が残っていないと難しいのでデータベースに記録する必要があった、というのもなんとなく理解いただけるのではないかと思います。


管理機能や返金処理まで実装し、更に加盟店登録時に必要な概要ページや特定商取引法に基づく表記ページまで含まれたサンプルアプリは我ながら珍しいと思うので、これを参考に(商品や見た目をカスタマイズすれば)返金機能まで対応した PayPay ショップサイトを比較的容易に作れるのではないかと思っています。よかったら是非カスタマイズして使ってください。


次回はこのシリーズの最終回の予定です。これまでは PayPay for Developers アカウントのテストユーザーを使ったアプリ動作確認を紹介してきましたが、次回は PayPay に加盟店登録を行い、本当に(テストユーザー以外でも)PayPay 決済が可能になるような手続きを紹介する予定です。













このページのトップヘ