オンラインでの LINE Pay 決済を簡単に導入できるスターターアプリです。
2020/7/15より、店頭にプリントQRを置くタイプの店頭決済サービス加盟店は、LINE上でお支払いリクエストの送信が可能になりました。手動の一般決済だけを利用したい場合はそちらをご利用ください(オンライン決済加盟店とは別IDで加盟店申請が必要です。実店舗がない事業者は許可されなかもしれません)
LINE Pay 加盟店申請を済ませておき、加盟店MyPageにログインできるようにしておく。
決済連動管理>連動キー管理から
- Channel ID
- Channel Secret Key
を確認し、控えておく。
xxx
はそれぞれ任意の値を設定
$ git clone https://github.com/maztak/line-pay-v3-python-starter.git line-pay-app-xxx
$ heroku login
$ heroku create line-pay-app-xxx
$ cd line-pay-app-xxx
$ git init
$ heroku git:remote -a line-pay-app-xxx
$ git push heroku master
$ heroku config:set LINE_PAY_CHANNEL_ID=xxx
$ heroku config:set LINE_PAY_CHANNEL_SECRET=xxx
https://line-pay-app-xxx.herokuapp.comにアクセスしLINE Pay で決済する
ボタンを押して一般決済を試す。
問題なければボタンのリンク先であるhttps://line-pay-app-xxx.herokuapp.com/request/captureをユーザーにLINEで送信し、決済してもらう。
金額を変えたい場合はapp.py
の51行目付近にあるreserve_payment
メソッドのamount
の値を変更してください。
@app.route('/request/<param_capture>')
def reserve_payment(param_capture):
order_id = str(uuid.uuid4())
amount = 1 # ここを変更
currency = "JPY"
CACHE["order_id"] = order_id
CACHE["amount"] = amount
CACHE["currency"] = currency
request_options = {
取引履歴の確認や返金は LINE Pay 加盟店 My Page で行ってください。
トップページには売上確定(キャプチャ)まで自動で行うRequest & Capture
ボタンをLINE Pay で決済する
という文言にして、これのみ表示しています。
売上確定は手動で行うRequest
ボタン, 配送を伴なう決済であるCheckout
ボタン, 自動決済(サブスク)をするためのGet RegKey
ボタンはコメントアウトしています。
Checkoutを利用するには、プライバシーポリシーのリンクと、配送方法と送料を照会できるinquiryShippingMethods
のカスタマイズも同時に行う必要があり少し高度です。
またRegKeyの取得や自動決済は事前に許可された加盟店しか利用できません。
加盟店申請をしなくともSandboxでテストアカウントを作成し試すこともできます。
app.py
の上の方のLINE_PAY_IS_SANDBOX
をTrue
に変更すると実際のウォレットからは引き落とされずSandboxのテストウォレットで決済を試すことができます。
Herokuへのデプロイもせずローカルで試すこともできます。
ただしPython3.6以上が必要です。
.env_sample
を.env
にリネーム.env
に記載のID、SECRETをご自身のSandboxのものに置き換え
$ git clone https://github.com/maztak/line-pay-v3-python-starter.git line-pay-app-xxx
$ cd line-pay-app-xxx
$ pip install -r requirements.txt
$ python app.py
localhost:5000にアクセスしLINE Pay で支払う
ボタンを押して一般決済を試す。
SDKを作ってくれた加川さん、それをWeb上で試せるアプリにしてくれた立花さんのアプリをベースにさせていただいています。具体的には立花さんのアプリからkintone連携なしで利用できる形にしています。