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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paypaypay-4.5.1.tar.gz | 29.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paypaypay-4.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.2 kB
Release files / paypaypay-4.5.1.tar.gz
| Download URL | paypaypay-4.5.1.tar.gz |
|---|---|
| Size | 29.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11c088521d220b8265669ec233d001046057b2e5041c45a450d8ac91f8db326b
|
|
BLAKE2b-256 checksum How to use checksums |
b706ddff00027c23762d3766a598ddfba36bac1a06aeadb5d8faea1322d60667
|
| 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.1-py3-none-any.whl
| Download URL | paypaypay-4.5.1-py3-none-any.whl |
|---|---|
| Size | 28.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a82e4a19f5c44797d943944e94831e84b416ab56a056b26025a1ec1d12edf50
|
|
BLAKE2b-256 checksum How to use checksums |
09b21efc0132ae5a4703aed0a18b8dfe0f08144835ff8ea222d94fe0c6626022
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|