PayNexus

PayNexus: PythonからPayPayを操作できる非公式モジュールです。


License
BSD-3-Clause
Install
pip install PayNexus==0.2.5

Documentation

PayNexus

目次

  1. プロジェクトについて
  2. インストール方法
  3. 環境
  4. モジュールについて

プロジェクトについて

PythonからPaypayを操作できる非公式モジュールです。
また、開発時間短縮のために以下のモジュールを参考・ベースに利用させていただいております。

ベースモジュール
PayPaython
paypay.py

公式サイト
公式Github(使い方など)はこちら
公式Note(更新情報など)はこちら

インストール方法

こちらのPyPIパッケージを、 pip install PayNexus などのコマンドでインストールしてください。
※お好みでバージョンを指定してください

環境

言語・フレームワーク バージョン
Python 3.9.19

モジュール(パッケージ)のバージョンは requirements.txt を参照してください

モジュールについて

タスク

  • ログイン機能
  • DiscordにWebhookを用いたログ等の送信
  • 自動再ログイン(UUIDが必要)
  • セッション保持機能のデータ保護(Paypayに登録された電話番号+パスワードを用いて保護)
  • Paypayリンクの自動処理(https://pay.paypay.ne.jp/osuvUuLmQH8WA4kW などでも処理できるようにします)
  • create_linksend_moneyが動作しない問題の修正(使用するAPIを変える必要があるため検討中)

ドキュメント

関数 パラメータ 説明
PayPay phone -- str: 電話番号 これは例外で関数ではなく、Classです。また、PayNexusを利用するために必要(Discord.pyでいうdiscord.Client()のようなものです)
password -- str: パスワード
client_uuid -- str: ログイン済みclient_uuid login関数を使用してログインすると既存のログイン時のjsonに加え、client_uuidが追加されて返ってくるのでそちらをここで指定します
session_save -- str: ファイルパス ログイン情報を保存するためのファイルパスを指定、拡張子はお任せ
debug -- bool: True or False デバッグメッセージの有効化と無効化(デフォルトではFalse
webhook -- str: DiscordのWebhook ログ等の送信に使用
session_auto_save -- bool: True or False セッションを自動で保持するかどうか(デフォルトではFalse
session_check_interval -- int: 分単位で時間を指定 セッション切れを確認する間隔、デフォルトでは3~7分の間
session_check_interval_delay -- list: [min, max] minとmaxは秒単位で、min~maxの中からランダムな時間をsession_check_intervalに足す。また、デフォルトでは`[0, 0]'(アカウントが凍結されないようにする願いが込められているが、おそらく関係ない)
login otp -- str:受信したワンタイムパスワード Paypayアカウントにログイン
resend_otp otp_reference_id -- str: paypay.refid 認証コードを再送信します。paypay.refidはPayPayクラスを利用すると利用可能(例:paypay = PayNexus.PayPay(phone="08012345678",password="Test-1234"
check_link pcode -- str: 送金リンクのコード 送金リンクの金額などを取得(ログイン必要)
PayNexus.Pay2().check_link pcode -- str: 送金リンクのコード 送金リンクの金額などを取得(ログイン不要)
receive pcode -- str: 送金リンクのコード 送金リンクを介して受け取り
reject pcode -- str: 送金リンクのコード 送金の受け取りを辞退
create_link kingaku -- int: 金額 password -- str: 4桁のパスワード 送金リンクを作成
balance 残高を取得
user_info ユーザー情報を取得
display_info ディスプレイ情報を取得
payment_method 支払い方法を取得
history 取引履歴を取得
send_money kingaku -- int: 金額 external_id -- str: ユーザーのid 指定したexternal_idのユーザーに直接送金
create_p2pcode 送金してもらうためのURLを作成する(PayPayアプリのQRコードとおなじ)
create_payment_otcfh 支払いのワンタイムコードを作成する(ホーム画面にあるあのバーコードとおなじ)

使用例

import PayNexus

# ログイン
paypay = PayNexus.PayPay(phone="電話番号",
                        password="パスワード",
                        client_uuid="uuid",
                        session_save="ファイルパス",
                        debug=True,
                        webhook="Discord Webhook",
                        session_auto_save=True,
                        # 時間は分単位(0.1で6秒)
                        session_check_interval=3,
                        #時間は秒単位 [min, max]
                        session_check_interval_delay=[0, 180])

otp = input(f"SMSに届いた番号:{paypay.pre}-")
print(paypay.login(otp))  #uuid確認用に["client_uuid"]にわざとuuidくっつけてます
#SMSの認証番号を再送
print(paypay.resend_otp(paypay.refid))  #refidの使い道ができた
otp = input(f"SMSに届いた番号:{paypay.pre}-")  #もっかい入力
print(paypay.login(otp))
#送金リンク確認
print(paypay.check_link("osuvUuLmQH8WA4kW"))  #ぺいぺい送金リンクの https://pay.paypay.ne.jp/osuvUuLmQH8WA4kW <-ここね
#or
print(PayNexus.Pay2().check_link("osuvUuLmQH8WA4kW"))  #ログインなしでcheck_linkを使えるPay2クラスです #これもproxy=dictでプロキシを設定できる
#送金リンク受け取り
print(paypay.receive("osuvUuLmQH8WA4kW"))  #パスワードはpassword=str #事前にcheck_linkして返ってきたdictを引数infoに入れるとそのdictを使うようになります
#送金リンクを辞退
print(paypay.reject("osuvUuLmQH8WA4kW"))  #これもinfoにdictつっこめる
#送金リンクを作成
print(paypay.create_link(kingaku=1, password="1111"))  #パスワードはpassword=str
#残高確認
print(paypay.balance())
#ユーザー情報
print(paypay.user_info())
#ユーザーの表示情報
print(paypay.display_info())
#ユーザーの支払い方法
print(paypay.payment_method())
#取引履歴
print(paypay.history())
#指定したexternalidのユーザーに直接送金
print(paypay.send_money(kingaku=1, external_id="048f4fef00bdbad00"))  #このexternal_idはてきとーです
#送金してもらうためのURLを作成する(PayPayアプリのQRコードとおなじ)
print(paypay.create_p2pcode())
#支払いのワンタイムコードを作成する(ホーム画面にあるあのバーコードとおなじ)
print(paypay.create_payment_otcfh())

※タスクが完了していてもモジュールが更新されていない場合がございます(その際は時間を空けてご確認ください)