Skip to main content

paypaypay

PayPay の非公式モバイル API クライアントライブラリです。 内部実装は PayPaython-mobile をベースにしています。

本ライブラリは PayPay 公式の提供するものではありません。PayPay 株式会社とは関係がありません。

注意事項

  • PayPay アプリの内部 API を利用します。非公開のため、予告なく変更・停止される可能性があります。
  • 利用にあたっては PayPay の利用規約をご確認ください。アカウントが制限されるリスクがあります。
  • 本番運用や金銭取引の自動化への利用は推奨しません。発生した損害について開発者は責任を負いません。
  • ログインを3回失敗するとアカウントが一時ロックされます。
  • セッションを大量に作るとアカウント凍結の可能性があります。
  • 日本国外からはアクセスできません(プロキシの利用が必要です)。

インストール

pip install paypaypay

ログイン

登録済みデバイスでログイン(2FA不要)

from paypaypay import PayPay

paypay = PayPay("080-1234-5678", "your_password", device_uuid="登録済みのUUID")

__init__ 内でログイン処理が完了します。AWS WAF チャレンジも自動で解決します。

print(paypay.access_token)  # 約90日間有効
print(paypay.device_uuid)

新規デバイスでログイン(2FA必要)

paypay = PayPay("080-1234-5678", "your_password")

__init__ で仮ログインまで完了し、2FA 用のワンタイムリンク(OTL)が発行されます。 別のデバイスで PayPay アプリに表示されたリンクを承認後、login_confirm() を呼びます。

paypay.login_confirm("https://www.paypay.ne.jp/portal/oauth2/l?id=XXXX")
# URLでもIDだけでもOK

print(paypay.access_token)
print(paypay.device_uuid)  # 次回以降このUUIDで2FA不要

アクセストークンでログイン(ログインをスキップ)

paypay = PayPay(access_token="your_token")

セッションの保存・復元

paypay.save_session("my_session")

paypay = PayPay.load_session("my_session")

セッション情報は ~/.paypay/session.json に保存されます。

残高取得

balance = paypay.get_balance()
print(balance.all_balance)       # 利用可能な残高(合計)
print(balance.useable_balance)   # 使用可能な残高
print(balance.money)             # PayPayマネー
print(balance.money_light)       # PayPayマネーライト
print(balance.points)            # ポイント
print(balance.bank_balance)      # PayPay銀行残高

プロフィール取得

profile = paypay.get_profile()
print(profile.name)               # 表示名
print(profile.external_user_id)   # ユーザーID
print(profile.icon)               # アイコンURL

送金リンク

リンクの確認

link = paypay.link_check("https://pay.paypay.ne.jp/KT975hvzbH1EulTr")

print(link.amount)        # 金額
print(link.status)        # PENDING / SUCCESS / REJECTED / FAILED
print(link.has_password)  # パスコードの有無
print(link.sender_name)   # 送信者名
print(link.money)         # マネー分
print(link.money_light)   # マネーライト分

web_api=True でログインなしでも確認できます。

paypay = PayPay()
link = paypay.link_check("KT975hvzbH1EulTr", web_api=True)

リンクの受取・辞退・キャンセル

paypay.link_receive("KT975hvzbH1EulTr", passcode="1234")
paypay.link_reject("KT975hvzbH1EulTr")
paypay.link_cancel("KT975hvzbH1EulTr")

link_info を渡すとリンクチェックをスキップします。

info = paypay.link_check("KT975hvzbH1EulTr")
paypay.link_receive("KT975hvzbH1EulTr", link_info=info)

リンクの作成

result = paypay.create_link(amount=100, passcode="1234")
print(result.link)          # 送金リンクURL
print(result.chat_room_id)  # チャットルームID
print(result.order_id)      # 注文ID

ぽち袋モードにするには pochibukuro=True を指定します。

送金

result = paypay.send_money(amount=100, receiver_id="external_user_id")
print(result.chat_room_id)
print(result.order_id)

メッセージ送信

paypay.send_message(chat_room_id="chat_room_id", message="ありがとう!")

QRコード決済

result = paypay.pay_qr_code(url="https://qr.paypay.ne.jp/XXXXX")
print(result.amount)         # 支払い金額
print(result.merchant_name)  # 店舗名
print(result.order_status)   # 決済ステータス

PayPay銀行への出金

result = paypay.cashout_to_paypaybank(amount=1000)
print(result.bank_name)
print(result.bank_account_number)

その他の機能

paypay.get_history(size=20)
paypay.get_history(size=20, cashback=True)

paypay.get_chat_rooms(size=20)
paypay.get_chat_room_messages(chat_room_id="chat_room_id")

paypay.get_point_history()

user = paypay.search_p2puser(user_id="paypay_id")

room = paypay.initialize_chatroom(external_user_id="external_user_id")
print(room.chatroom_id)

p2p = paypay.create_p2pcode(amount=100)
print(p2p.url)

paypay.set_money_priority(paypay_money=False)  # マネーライト優先
paypay.set_money_priority(paypay_money=True)   # マネー優先

人間パターンシミュレータ

Bot検知を回避するため、バックグラウンドで人間らしいリクエストを送信します。

paypay.start_alive_simulator(interval_range=(30, 180))

# ... 使用中 ...

paypay.stop_alive_simulator()

手動で送信する場合:

paypay.alive()

例外クラス

例外クラス 説明
PayPayError 汎用エラー
PayPayLoginError ログイン失敗・トークン失効
PayPayNetWorkError ネットワークエラー
P2PTemporaryHoldError 送金一時保留
from paypaypay import PayPayError, PayPayLoginError, PayPayNetWorkError

try:
    paypay.get_balance()
except PayPayLoginError:
    print("ログインしてください")
except PayPayNetWorkError:
    print("ネットワークエラー")

プロキシの使用

paypay = PayPay("080-1234-5678", "password", proxy="http://host:port")
# または
paypay = PayPay.load_session("my_session", proxy="http://host:port")

ライセンス

MIT License

Metadata

Release files for paypaypay 4.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for paypaypay 4.5.2
File Size Uploaded
paypaypay-4.5.2.tar.gz 29.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for paypaypay 4.5.2
File Interpreter ABI Platform
paypaypay-4.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 57.2 kB

Release files / paypaypay-4.5.2.tar.gz

Download URL paypaypay-4.5.2.tar.gz
Size 29.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f4f0fe81cbdb73cce3bd2fd4c2220480d887e3c82adb746390d6e1d04f5e7d26
BLAKE2b-256 checksum
How to use checksums
e1ae9c06c1652a8ab4ba876b2a5eedf4bcfac6cb0f81cfb70791d2213a2619b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / paypaypay-4.5.2-py3-none-any.whl

Download URL paypaypay-4.5.2-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
34cd661d4c0bd78a9d49134fd9dc9fcdd0d519119b48188bf22887c34edac970
BLAKE2b-256 checksum
How to use checksums
e443a8f90b11c21e953569ad68d2e75a6bb08837c4eb8ebf888deaa0aa9cfc1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

4.5.2 This release

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.0

2 release files

4.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page