Ccmmutty logo
Commutty IT
5 min read

PayPayのAPIをPythonで体験してみよう

https://picsum.photos/seed/dab4385eea3b4a9d9c37ad2a27fdeee2/600/800

PayPayのAPIを触ってみました!!

PayPayが決済のAPIを二年前くらいから提供しているとYouTube【ウェブペイメント】第1回 PayPay Integration Webinarで知り、試してみた。それを書いていきます。またMagicodeなので、実際にやってみるとすごく楽しいと思います!いくつかの組み込み方がありますが、今回はウェブペイメントをやってみます。これはStripeでいうCheckoutのような感じで、少ないコードで決済ページのURLを作り、ユーザをそのページで決済させるという形です。

手順1. 会員登録

まずはPayPay for Developersから会員登録をしてください。 パスワードに一文字以上の記号が必要なことに注意してください。これがすこしわかりにくいです。
その後は、適当に進んでいくと登録が完了します。

手順2. 少し待つ

数分待つ必要がありました。おそらくPayPay側が、加盟店ID、APIキー、シークレット、テストユーザを作ってくれています。

手順3. 加盟店ID、APIキー、シークレットを取得する。

下の写真のような感じです。
python
# この3つの変数は各人のものを入れる。
API_KEY = "YOUR_API_KEY"
API_SECRET = "YOUR_API_SECRET"
MERCHANT_ID = "YOUR_SHOP_ID"

手順4. スマホのPayPayアプリにテストユーザーでログインする。

PayPayアプリには、実はテスト環境用の裏機能が隠れています。PayPay公式にて最新のやり方を見てほしいですがまとめると

手順4-1. PayPayアプリからログアウトする。

いったんお使いのアカウントからログアウトしましょう。2022年1月現在は、「アカウント」タブの右上にある「詳細」を押し→下にスクロールし「ログアウト」ボタンを押すとログアウトできます。なかなかログアウトする人はいないので深いところにありますね。

手順4-2. テスト環境に裏ルートから専用のログイン画面にする。

下の写真の紫色で囲まれているロゴを7回連続でタップしてください。すごい!
すると「PayPay for Developersのアカウントでログインしますか?」と聞かれるのでそのまま進みましょう。

手順4-3. テストユーザーでログインする。

先程のPayPay DevelopersのダッシュボードのAPIキーの隣にある「テストユーザー」をクリックしてください。3人のテストユーザーが用意されています。誰でもいいですが、一人のテストユーザーの電話番号とパスワードを用いてログインします。電話番号の認証には1234と入力してください。これで完了です!

手順5. 公式SDKをインストールする

python
!pip install paypayopa

手順6. 公式ドキュメントのとおりに実装する

公式ドキュメントとライブラリがわかりやすいのでほぼそのままです
python
import paypayopa

# PayPayとやり取りするclientを作成
client = paypayopa.Client(auth=(API_KEY, API_SECRET), production_mode=False)
client.set_assume_merchant(MERCHANT_ID)

# リクエスト本文を作成
import uuid
request = {
    "merchantPaymentId": uuid.uuid4().hex, # こちらが決めれる決済番号のようなもの、決済ごとに異なる必要がありそう
    "codeType": "ORDER_QR",
    "redirectUrl": "http://foobar.com",
    "redirectType":"WEB_LINK",
    "orderDescription":"Example - Mune Cake shop",
    "orderItems": [{
        "name": "Moon cake",
        "category": "pasteries",
        "quantity": 1,
        "productId": "67678",
        "unitPrice": {
            "amount": 1,
            "currency": "JPY"
        }
    }],
    "amount": {
        "amount": 1,
        "currency": "JPY"
    },
}

# 実際にPayPayのサーバーにアクセスする。
response = client.Code.create_qr_code(request)

print("ステータス→"+response['resultInfo']['code'] +"\n")
ここでresponse['data']['url']が、決済ページです。
python
print("決済するURL→ "+ response['data']['url'])
ここにアクセスすると、下のようなページが表示されるのでアプリでQRコードを読み取ると、「ペイペィ!!」と成功しました!

手順7. 支払いを確認する

支払いの確認には2通りの方法があると思います。

手順7-やり方A(API)

支払い確認用のAPIを叩いて、支払い状況をチェックできます。

手順7-やり方B(Webhook)

PayPayにWebhook用のURLを登録すると、そのエンドポイントにイベントが発生したときにPOSTしてくれます。

おまけ

  1. PayPayのシームレスなユーザ体験すごいですね!
  2. 裏ルートみたいな子供心をくすぐられるものもあり開発していて楽しいです!
  3. Stripe級にドキュメントが見やすく親切です!
  4. これをDjangoで実装した記事をDjango Babyというサイトにアップしましたのでそちらもぜひ 「DjangoでPayPayのAPIを使って決済をするハンズオン、サンプルコード

Discussion

コメントにはログインが必要です。