PayPay決済をサーバーレス(Cloud Functions for Firebase)構成で実装した

これは[no plan inc.の Advent Calendar 2023](https://qiita.com/advent-calendar/2023/noplan_inc)の4日目の記事です。


どもー、no plan inc.の[おかむー](https://twitter.com/okamu_ro)です。
PayPay決済をサーバーレス(Cloud Functions for Firebase)構成で実装したときに、
ハマったポイントなどを紹介できればと思います。

# この記事でわかること
- PayPay実装をサーバーレス(Cloud Functions for Firebase)構成で実装したときの注意点がわかります

# まずは結論
- ❶PayPay決済は固定IP必須なので、Cloud Functions for Firebase(以下、Firebase Functions)でVPCと固定IPを入れないといけない
- ❷PayPay申請作業に時間がかかる
- ❸日本以外でテストできない

# ❶PayPay決済は固定IP必須

![ip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/6c46e354-ee4b-76a3-de52-b675ed61053e.png)


> テスト環境ではIPアドレスの制御はありません。
> 本番環境をご利用の場合、IPアドレスのホワイトリスト制御をしています。また、固定IPアドレスのみをサポートしています。

[OpenPaymentAPI(OPA)を使う場合、IPアドレスによる制限はありますか？](https://integration.paypay.ne.jp/hc/ja/articles/4414068763407-OpenPaymentAPI-OPA-%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88-IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AB%E3%82%88%E3%82%8B%E5%88%B6%E9%99%90%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B-)

と書いてあります。
なので、PayPay決済機能を入れる場合は固定IPをどうするか事前に決めておくと良いでしょう

また申請時にIPアドレスを求められるので、申請前に用意しておきましょう

ちなみに、申請後IPアドレスを変更する場合はお問い合わせから直接担当者とやりとりをしないと変更できないので、1~2営業日余裕をみておきましょう

## Firebase Functionsの固定IPについて
以下の記事を参考にしました

- [Cloud Functions 関数の IP を固定してみた。 | DevelopersIO](https://dev.classmethod.jp/articles/cloud-functions-use-static-ip/)
- [クイックスタート: VPC ネットワークを作成して使用する  |  Google Cloud](https://cloud.google.com/vpc/docs/create-modify-vpc-networks?hl=ja#creating_networks)
- [GCFから外部へのHTTPリクエストを固定IPにする - Qiita](https://qiita.com/suzutatsu/items/8a54ba628e52c6be71aa) <= 設定は一番この記事が参考になった

## Firebase Functionsの固定IPについての費用感
- Firebase Functionsはだいぶ低額で利用できるのがメリットですが、固定IPをSTGとPRD環境で使うと 3000円ぐらいはかかるので、料金についても注意が必要です


# ❷PayPay申請作業に時間がかかる
![paypay.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/d35be1b6-a4cf-893b-a4c9-28e42200c637.png)


[オンラインショップへのPayPay決済 導入希望フォーム](https://merchant.paypay.ne.jp/webform/?Inquiry_Number=PayOnlineshop&_ga=2.49878310.1051179635.1684806781-1357958029.1656666106&_ga=2.253844495.609282594.1701498268-1542278963.1693359904&_gac=1.183207636.1701498490.CjwKCAiApaarBhB7EiwAYiMwqpw8aFx6f_1bchFe-qpk8Vg-aGtYOCmzldhk1YM44X9628G9eBebRBoCsC4QAvD_BwE)


申請内容のスクショがこちらです(2023年9月時点)

### 申請①
![FireShot Capture 101 - オンラインショップへのPayPay決済 導入希望フォーム - merchant.paypay.ne.jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/a5c7a3a6-a97a-ce13-a926-70034df1281a.png)

### 申請②
![FireShot Capture 089 - PayPay加盟店のお申込み - merchant.paypay.ne.jp (2) copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/7e8db931-887d-2c92-d787-cd8019236bc2.png)

### 申請後やりとり①
- ご申告のサイトにて審査を実施しておりますが、ご申告のサイトにてご申告の商材および決済方法が確認できませんでした

```
「ご申告の加盟店名」、「ご申告のご利用されたい商材」、「請求発生から支払いの具体的な流れ」について、
画像付きで詳細が確認できる資料を下記【写真送付用フォーム】よりアップロードをお願いいたします。
※「請求発生から支払いの具体的な流れ」…ユーザー様が利用するサイトの「TOP画面から決済完了まで」の画面遷移が必要です。
```


- WEBページ作成中の場合は、WEBページの完成予定日を≪情報入力欄≫に記載をお願いいたします
    - 「※おおよその時期で問題ございません。」とのことでしたのでおおよその日付をいれました
### 申請後のやりとり②
- ・興行主、または正規販売代理店に該当しますか：　はい　/　いいえ
- ・販売責任は申請法人が負いますか：　はい　/　いいえ
- 【特商法ページ】が確認できるURLのご提出について

```
ご申請いただいた情報にて審査をおこなっておりますが、
特商法上の通信販売で必須の以下項目について記載が確認できませんでした。
恐れ入りますが、サイト上で追記いただき、【特商法ページ】が確認できるURLのご提出をお願いいたします。
```

**これらをやりとりして、ようやく申請が通りました。1~2週間はみておいてもいいかもです**

# ❸日本以外でテストできない
![japan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/06e8e0b9-a530-2778-3b3c-6f28801c89f0.png)

([【5つの落とし穴】海外に移住生活しながらエンジニアとして開発するときに困ったこと](https://qiita.com/okamu_/items/535eb94ae7321a2bf094) )でも書いたのですが、PMとして案件を開発していて、VPNがないとPayPay決済のテストができませんので注意が必要です

# まとめ
- ❶PayPay決済は固定IP必須なので、Cloud Functions for Firebase(以下、Firebase Functions)でVPCと固定IPを入れないといけない
    - 料金も注意
- ❷PayPay申請作業に時間がかかる
    - 2~3週間は多めにみましょう
- ❸日本以外でテストできない
    - テスト体制も考えておきましょう

# no plan inc.で扱っているTechに関する様々なジャンルをアウトプットします!!


[![top.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/41177709-516f-0174-7cc4-c3052a311ac8.gif)](https://noplan-inc.com)



# no plan株式会社について

- no plan株式会社は **「テクノロジーの力でZEROから未来を創造する、精鋭クリエイター集団」** です。
- ブロックチェーン/AI技術をはじめとした、Webサイト開発、ネイティブアプリ開発、チーム育成、などWebサービス全般の開発から運用や教育、支援なども行っています。よくわからない、ふわふわしたノープラン状態でも大丈夫！ご一緒にプランを立てていきましょう！
- [no plan株式会社について](https://noplan-inc.com)
- [no plan株式会社 | web3実績](https://noplan-inc.com/web3)
- [no plan株式会社 | ブログ一覧](https://noplan-inc.com/blog)
エンジニアの採用も積極的に行なっていますので、興味がある方は是非ご連絡ください！
- [CTOのDMはこちら](https://twitter.com/_serinuntius)