<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linepay on Quietbo</title><link>https://quietbo.com/tags/linepay/</link><description>Recent content in Linepay on Quietbo</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Mon, 14 Mar 2022 05:44:59 +0000</lastBuildDate><atom:link href="https://quietbo.com/tags/linepay/index.xml" rel="self" type="application/rss+xml"/><item><title>[Python] LinePay串接Online APIs – 問題 (5/5)</title><link>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%95%8F%E9%A1%8C-5-5/</link><pubDate>Mon, 14 Mar 2022 05:44:59 +0000</pubDate><guid>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%95%8F%E9%A1%8C-5-5/</guid><description>&lt;div class="wp-block-image is-style-default"&gt;
 &lt;figure class="aligncenter size-full is-resized"&gt;&lt;img loading="lazy" decoding="async" src="https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM.png" alt="" class="wp-image-793" width="334" height="119" srcset="https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM.png 334w, https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM-300x107.png 300w" sizes="auto, (max-width: 334px) 100vw, 334px" /&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;ul class="wp-block-list"&gt;
 &lt;li&gt;
 linepay v2 的Payment-check api 在&lt;a href="chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/viewer.html?pdfurl=http%3A%2F%2Fwww.hrp.scu.edu.tw%2F.upload%2Fdissertation%2F1498720302032.pdf&amp;clen=3977681&amp;chunk=true"&gt;LINE Pay: Overview&lt;/a&gt;這邊找到的,僅供測試用。
 &lt;/li&gt;
 &lt;li&gt;
 建議開發使用新的版本，目前v3。
 &lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>[Python] LinePay串接Online APIs – 串接v3(含code) (4/5)</title><link>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E4%B8%B2%E6%8E%A5v3%E5%90%ABcode-4-5/</link><pubDate>Mon, 14 Mar 2022 05:38:31 +0000</pubDate><guid>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E4%B8%B2%E6%8E%A5v3%E5%90%ABcode-4-5/</guid><description>&lt;p&gt;以下測試環境及工具使用:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
 &lt;li&gt;
 windows 10
 &lt;/li&gt;
 &lt;li&gt;
 Sandbox
 &lt;/li&gt;
 &lt;li&gt;
 linePay文檔
 &lt;/li&gt;
 &lt;li&gt;
 python 3.7
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下使用Request API-&amp;gt; Check Payment Status API -&amp;gt; Confirm API。&lt;/p&gt;
&lt;p&gt;操作流程如下:&lt;/p&gt;
&lt;ol class="wp-block-list"&gt;
 &lt;li&gt;
 channel_id 填入自己的channel id
 &lt;/li&gt;
 &lt;li&gt;
 channel_secret 填入自己的channel secret
 &lt;/li&gt;
 &lt;li&gt;
 開啟瀏覽器貼上付款web_url
 &lt;/li&gt;
 &lt;li&gt;
 付款成功後將最下方的transaction_id填上
 &lt;/li&gt;
 &lt;li&gt;
 重新運行
 &lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="python" class="language-python line-numbers"&gt;import time
import json
import requests
import hashlib
import hmac
import base64


def get_auth_signature (secret, uri, body, nonce):
 """
 用於製作密鑰
 :param secret: your channel secret
 :param uri: uri
 :param body: request body
 :param nonce: uuid or timestamp(時間戳)
 :return:
 """
 str_sign = secret + uri + body + nonce
 return base64.b64encode(hmac.new(str.encode(secret), str.encode(str_sign), digestmod=hashlib.sha256).digest()).decode("utf-8")

channel_id = "your channel id"
channel_secret = "your channel secret"
uri = "/v3/payments/request"
nonce = str(round(time.time() * 1000)) # nonce = str(uuid.uuid4())
transaction_id = ''

headers = {
 'Content-Type': 'application/json',
 'X-LINE-ChannelId': channel_id,
 'X-LINE-Authorization-Nonce': nonce,
}

def do_request_payment():
 '''此api僅使用文檔中必填的資料'''
 request_options = {
 "amount": 2000,
 "currency": 'TWD',
 "orderId": nonce,
 "packages": [{
 "id": '20220314I001',
 "amount": 2000,
 "name": '鬼滅之刃公仔',
 "products": [{
 "name": '竈門禰豆子',
 "quantity": 1,
 "price": 1000
 },{
 "name": '我妻善逸',
 "quantity": 1,
 "price": 1000
 }]
 }],
 "redirectUrls": {
 "confirmUrl": 'https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%95%8f%e9%a1%8c-5-5/',
 "cancelUrl": 'https://fastapi.tiangolo.com/zh/tutorial/bigger-applications/'
 }
 }
 json_body = json.dumps(request_options)


 headers['X-LINE-Authorization-Nonce'] = nonce
 headers['X-LINE-Authorization'] = get_auth_signature(channel_secret, uri, json_body, nonce)
 response = requests.post("https://sandbox-api-pay.line.me"+uri, headers=headers, data=json_body)
 print(response.text)
 dict_response = json.loads(response.text)

 if dict_response.get('returnCode') == "0000":
 info = dict_response.get('info')
 web_url = info.get('paymentUrl').get('web')
 transaction_id = str(info.get('transactionId'))
 print(f"付款web_url:{web_url}")
 print(f"交易序號:{transaction_id}")

def do_checkout(transaction_id):
 print("transaction_id={}".format(transaction_id))

 conf_data = """{"amount": 2000, "currency": "TWD"}"""
 checkout_url = f"/v3/payments/requests/{transaction_id}/check"
 headers['X-LINE-Authorization'] = get_auth_signature(channel_secret, checkout_url, conf_data, nonce)
 response = requests.get("https://sandbox-api-pay.line.me"+checkout_url, headers=headers, data=conf_data)
 print(response.text)
 response = json.loads(response.text)
 if str(response.get('returnCode')) == "0110":
 return True
 return False

def do_confirm(transaction_id):

 con_url = f"/v3/payments/{transaction_id}/confirm"
 conf_data = """{"amount": 2000, "currency": "TWD"}"""
 headers['X-LINE-Authorization'] = get_auth_signature(channel_secret, con_url, conf_data, nonce)
 response = requests.post("https://sandbox-api-pay.line.me"+con_url, headers=headers, data=conf_data)
 print(response.text)
 response = json.loads(response.text)

 return response.get('returnMessage')

if __name__ == "__main__":
 do_request_payment() # 向linepay請求付款

 # 填入已付款後的交易序號後下方註解拿掉
 # transaction_id = "your transaction_id" # ex: transaction_id = 2022031400707390210
 # status = do_checkout(transaction_id) # 檢查訂單狀態
 # if status == True:
 # print(do_confirm(transaction_id)) # 確認訂單&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>[Python] LinePay串接Online APIs – 後台查看 (3/5)</title><link>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%BE%8C%E5%8F%B0%E6%9F%A5%E7%9C%8B-3-5/</link><pubDate>Sun, 13 Mar 2022 17:23:22 +0000</pubDate><guid>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%BE%8C%E5%8F%B0%E6%9F%A5%E7%9C%8B-3-5/</guid><description>&lt;figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex"&gt; &lt;figure class="wp-block-image size-large"&gt;&lt;img loading="lazy" decoding="async" width="334" height="119" data-id="793" src="https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM.png" alt="" class="wp-image-793" srcset="https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM.png 334w, https://quietbo.com/uploads/2022/03/chrome_iLlqqg3OhM-300x107.png 300w" sizes="auto, (max-width: 334px) 100vw, 334px" /&gt;&lt;/figure&gt; &lt;/figure&gt; 
&lt;p&gt;&lt;a class="link" href="https://pay.line.me/portal/tw/auth/login#" target="_blank" rel="noopener"
 &gt;linepay測試用後台&lt;/a&gt;&lt;figure class="wp-block-image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/K45uiot.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;登入後找右上角的「測試環境」&lt;figure class="wp-block-image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/ALTOU8d.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;右上角可將語言轉成繁體中文&lt;figure class="wp-block-image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/vmLeYqM.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;左方管理交易-&amp;gt;交易紀錄，可以查看到之前的交易紀錄:&lt;figure class="wp-block-image"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/31RxWwk.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;</description></item><item><title>[Python] LinePay串接Online APIs – 初步了解流程及使用postman測試api v2 (2/5)</title><link>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3%E6%B5%81%E7%A8%8B%E5%8F%8A%E4%BD%BF%E7%94%A8postman%E6%B8%AC%E8%A9%A6api-v2-2-5/</link><pubDate>Sun, 13 Mar 2022 17:22:34 +0000</pubDate><guid>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3%E6%B5%81%E7%A8%8B%E5%8F%8A%E4%BD%BF%E7%94%A8postman%E6%B8%AC%E8%A9%A6api-v2-2-5/</guid><description>&lt;p&gt;因有些人只想了解linepay的運作方式, 提供一些簡單可使用的方式。&lt;/p&gt;
&lt;p&gt;以下測試環境及工具使用:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
 &lt;li&gt;
 Sandbox
 &lt;/li&gt;
 &lt;li&gt;
 postman
 &lt;/li&gt;
 &lt;li&gt;
 linePay文檔
 &lt;/li&gt;
 &lt;li&gt;
 Online APIs 文檔:&lt;a href="https://pay.line.me/tw/developers/apis/onlineApis?locale=zh_TW"&gt;網址&lt;/a&gt;
 &lt;/li&gt;
 &lt;li&gt;
 按下&lt;a href="https://pay.line.me/documents/online_v2_en.html"&gt;此處&lt;/a&gt; 查看以前的API文件(v2)
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本次postman的簡易流程&lt;br&gt;
簡易流程圖&lt;a class="link" href="https://i.imgur.com/N2ftauj.jpg" target="_blank" rel="noopener"
 &gt;網址&lt;/a&gt;&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/N2ftauj.jpg" alt="" /&gt;&lt;/p&gt;
&lt;div id="ez-toc-container" class="ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction"&gt;
 &lt;div class="ez-toc-title-container"&gt;
 &lt;p class="ez-toc-title" style="cursor:inherit"&gt;
 Table of Contents
 &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;span class=&amp;quot;ez-toc-title-toggle&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle&amp;quot; aria-label=&amp;quot;顯示/隱藏內容目錄&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ez-toc-js-icon-con&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;eztoc-hide&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;Toggle&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ez-toc-icon-toggle-span&amp;quot;&amp;gt;&amp;lt;svg style=&amp;quot;fill: #999;color:#999&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; class=&amp;quot;list-377408&amp;quot; width=&amp;quot;20px&amp;quot; height=&amp;quot;20px&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z&amp;quot; fill=&amp;quot;currentColor&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;svg style=&amp;quot;fill: #999;color:#999&amp;quot; class=&amp;quot;arrow-unsorted-368013&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;10px&amp;quot; height=&amp;quot;10px&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; version=&amp;quot;1.2&amp;quot; baseProfile=&amp;quot;tiny&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;&lt;nav&gt;
 &lt;ul class='ez-toc-list ez-toc-list-level-1 ' &gt;
 &lt;li class='ez-toc-page-1 ez-toc-heading-level-2'&gt;
 &lt;a class="ez-toc-link ez-toc-heading-1" href="https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%88%9d%e6%ad%a5%e4%ba%86%e8%a7%a3%e6%b5%81%e7%a8%8b%e5%8f%8a%e4%bd%bf%e7%94%a8postman%e6%b8%ac%e8%a9%a6api-v2-2-5/#%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A" &gt;基本設定&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class='ez-toc-page-1 ez-toc-heading-level-2'&gt;
 &lt;a class="ez-toc-link ez-toc-heading-2" href="https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%88%9d%e6%ad%a5%e4%ba%86%e8%a7%a3%e6%b5%81%e7%a8%8b%e5%8f%8a%e4%bd%bf%e7%94%a8postman%e6%b8%ac%e8%a9%a6api-v2-2-5/#request_%E8%AB%8B%E6%B1%82%E8%A8%82%E5%96%AE" &gt;request 請求訂單&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class='ez-toc-page-1 ez-toc-heading-level-2'&gt;
 &lt;a class="ez-toc-link ez-toc-heading-3" href="https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%88%9d%e6%ad%a5%e4%ba%86%e8%a7%a3%e6%b5%81%e7%a8%8b%e5%8f%8a%e4%bd%bf%e7%94%a8postman%e6%b8%ac%e8%a9%a6api-v2-2-5/#confirm_%E7%A2%BA%E8%AA%8D" &gt;confirm 確認&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class='ez-toc-page-1 ez-toc-heading-level-2'&gt;
 &lt;a class="ez-toc-link ez-toc-heading-4" href="https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%88%9d%e6%ad%a5%e4%ba%86%e8%a7%a3%e6%b5%81%e7%a8%8b%e5%8f%8a%e4%bd%bf%e7%94%a8postman%e6%b8%ac%e8%a9%a6api-v2-2-5/#Check_Payment_Status_%E6%9F%A5%E7%9C%8B%E8%A8%82%E5%96%AE%E7%8B%80%E6%85%8B" &gt;Check Payment Status 查看訂單狀態&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class='ez-toc-page-1 ez-toc-heading-level-2'&gt;
 &lt;a class="ez-toc-link ez-toc-heading-5" href="https://quietbo.com/2022/03/14/python-linepay%e4%b8%b2%e6%8e%a5online-apis-%e5%88%9d%e6%ad%a5%e4%ba%86%e8%a7%a3%e6%b5%81%e7%a8%8b%e5%8f%8a%e4%bd%bf%e7%94%a8postman%e6%b8%ac%e8%a9%a6api-v2-2-5/#refurnd_%E9%80%80%E6%AC%BE" &gt;refurnd 退款&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;&lt;/nav&gt;
&lt;/div&gt;
&lt;h2 id="基本設定"&gt;&lt;span class="ez-toc-section" id="%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A"&gt;&lt;/span&gt;基本設定&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;請先下載&lt;a class="link" href="https://www.postman.com/" target="_blank" rel="noopener"
 &gt;postman&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;domain&lt;/strong&gt;(v2測試用)&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code class=""&gt;https://sandbox-api-pay.line.me/v2/payments&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在現有的&lt;strong&gt;Headers&lt;/strong&gt;添加&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;Content-Type:application/json
X-LINE-ChannelId:商戶的Channel ID
X-LINE-ChannelSecret:商戶的Channel Secret&lt;/code&gt;&lt;/pre&gt;&lt;figure class="wp-block-image"&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/xwo8UJj.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="request-請求訂單"&gt;&lt;span class="ez-toc-section" id="request_%E8%AB%8B%E6%B1%82%E8%A8%82%E5%96%AE"&gt;&lt;/span&gt;request 請求訂單&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;API:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;POST {domain}/request&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Request Body:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "amount": 1,
 "currency": "TWD", 
 "productName": "MyProd",
 "productImageUrl": "https://cimg.cnyes.cool/prod/news/4556115/l/79b7b76238dcaa28d626ec007bff576f.jpg",
 "confirmUrl": "http://127.0.0.1:3000",
 "orderId": "Order202203110011"
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Payment Reserve Response:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "returnCode": "0000",
 "returnMessage": "Success.",
 "info": {
 "paymentUrl": {
 "web": "https://sandbox-web-pay.line.me/web/payment/wait?transactionReserveId=WVZub2tRakxRbzk0NWVsa1VMZ1pyTzhOSk00QXJqNXgvbTZIeXZ2NklpL2ZiMHlBUGN4SnJrTG4xVWh6bFA1cg",
 "app": "line://pay/payment/WVZub2tRakxRbzk0NWVsa1VMZ1pyTzhOSk00QXJqNXgvbTZIeXZ2NklpL2ZiMHlBUGN4SnJrTG4xVWh6bFA1cg"
 },
 "transactionId": 2022031100707222710,
 "paymentAccessToken": "785453599850"
 }
}&lt;/code&gt;&lt;/pre&gt;&lt;figure class="wp-block-image"&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/TRf6Xju.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;取得info.paymentUrl.web後, 使用瀏覽器打開如下:&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/KqzzWBQ.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;點擊付款:&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/96WKw9t.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;付款成功如下:&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/iqFRyLj.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;補充:&lt;br&gt;
為什麼結帳後會原本的網頁會出現下圖?&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/fSpv3o3.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;文檔內的說明如下&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;Merchant's URL that the buyer is redirected to after selecting a payment method and entering the payment password in LINE Pay.
On the redirected URL, Merchant can call Confirm Payment API and complete the payment
LINE Pay passes an additional parameter, "transactionId"

Reference Detailed Explanation and Exceptional Case of ConfirmUrl&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;簡單來說就是:想讓結帳完的顧客看到什麼畫面。&lt;/p&gt;
&lt;h2 id="confirm-確認"&gt;&lt;span class="ez-toc-section" id="confirm_%E7%A2%BA%E8%AA%8D"&gt;&lt;/span&gt;confirm 確認&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;API:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;POST {domain}/{transactionId}/confirm&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;範例:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;https://sandbox-api-pay.line.me/v2/payments/2022031400707322810/confirm&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Headers&lt;/strong&gt;添加&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash line-numbers"&gt;X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY&lt;/code&gt;&lt;/pre&gt;&lt;figure class="wp-block-image"&gt;
&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/zX0wqPs.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Request Body:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "amount": 1,
 "currency": "TWD"
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Response成功的Json如下:&lt;br&gt;
(補充:此次訂單是重新發起的新的訂單,所以transactionId與orderId會與上面請求訂單時的資料不一樣, 主要目的是呈現成功的結果)&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "returnCode": "0000",
 "returnMessage": "Success.",
 "info": {
 "transactionId": 2022031400707322810,
 "orderId": "dev202203140002",
 "payInfo": [
 {
 "method": "CREDIT_CARD",
 "amount": 1,
 "maskedCreditCardNumber": "************1111"
 }
 ]
 }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若失敗或是orderId有重複, 則會告知錯誤。&lt;/p&gt;
&lt;h2 id="check-payment-status-查看訂單狀態"&gt;&lt;span class="ez-toc-section" id="Check_Payment_Status_%E6%9F%A5%E7%9C%8B%E8%A8%82%E5%96%AE%E7%8B%80%E6%85%8B"&gt;&lt;/span&gt;Check Payment Status 查看訂單狀態&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;API&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;GET {domain}?transactionId={transactionId}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;範例:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;https://sandbox-api-pay.line.me/v2/payments?transactionId=2022031400707322810&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Response成功的Json如下:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "returnCode": "0000",
 "returnMessage": "Success.",
 "info": [
 {
 "transactionId": 2022031400707322810,
 "transactionDate": "2022-03-13T16:11:08Z",
 "transactionType": "PAYMENT",
 "productName": "MyProd",
 "currency": "TWD",
 "payInfo": [
 {
 "method": "CREDIT_CARD",
 "amount": 1
 }
 ],
 "orderId": "dev202203140002"
 }
 ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意:&lt;br&gt;
正常來說是要先檢查是否付款後才執行confirm這支API，但因為v2是需要先進行confirm這支API才有辦法使用，否則會出現:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "returnCode": "1150",
 "returnMessage": "Transaction record not found."
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若是使用v3則可正常先進行Check Payment Status 後再進行確認。&lt;/p&gt;
&lt;h2 id="refurnd-退款"&gt;&lt;span class="ez-toc-section" id="refurnd_%E9%80%80%E6%AC%BE"&gt;&lt;/span&gt;refurnd 退款&lt;span class="ez-toc-section-end"&gt;&lt;/span&gt;
&lt;/h2&gt;&lt;p&gt;取消已付款的交易。&lt;/p&gt;
&lt;p&gt;API:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;POST {dimain}/{transactionId}/refund&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Headers&lt;/strong&gt;添加&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash line-numbers"&gt;X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;refundAmount: 退款金額&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "refundAmount": 1
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Response:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="json" class="language-json line-numbers"&gt;{
 "returnCode": "0000",
 "returnMessage": "Success.",
 "info": {
 "refundTransactionId": 2022031400707327211,
 "refundTransactionDate": "2022-03-13T17:05:50Z"
 }
}&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>[Python] LinePay串接Online APIs – 申請測試帳號 (1/5)</title><link>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E7%94%B3%E8%AB%8B%E6%B8%AC%E8%A9%A6%E5%B8%B3%E8%99%9F-1-5/</link><pubDate>Sun, 13 Mar 2022 17:17:51 +0000</pubDate><guid>https://quietbo.com/2022/03/14/python-linepay%E4%B8%B2%E6%8E%A5online-apis-%E7%94%B3%E8%AB%8B%E6%B8%AC%E8%A9%A6%E5%B8%B3%E8%99%9F-1-5/</guid><description>&lt;p&gt;以下測試環境使用:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
 &lt;li&gt;
 Sandbox
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="一創建sandbox帳號"&gt;一、創建Sandbox帳號
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://pay.line.me/tw/developers/techsupport/sandbox/testflow?locale=zh_TW" target="_blank" rel="noopener"
 &gt;測試流程文件網址&lt;/a&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
 &lt;li&gt;
 LinePay建立Sandbox:&lt;a href="https://pay.line.me/tw/developers/techsupport/sandbox/testflow?locale=zh_TW"&gt;Sandbox網址&lt;/a&gt;
 &lt;/li&gt;
 &lt;li&gt;
 正式LinePay商戶請使用:&lt;a href="https://pay.line.me/portal/tw/main?isFooterConventionChanged=true"&gt;網址&lt;/a&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;填入下方訊息, 及使用中的信箱, 此處我是使用與line相同的信箱，若是以有相同信箱會跳出:此email已註冊過Sandbox ID。請輸入其他email以註冊Sandbox。&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/wxZlyNd.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;創建成功如下圖(有興趣可自行點擊後查看)&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/TyR7AIv.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="二收信並登入商家"&gt;二、收信並登入商家
&lt;/h2&gt;&lt;p&gt;到信箱收信如下:&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/agbkGVt.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;使用剛才收到的來登入Merchant Center:&lt;a class="link" href="https://pay.line.me/portal/tw/auth/login#" target="_blank" rel="noopener"
 &gt;網址&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用收到的測試帳號及密碼登入&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/ABRSthV.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="三取得channel-id及channel-secret-key"&gt;三、取得Channel ID及Channel Secret Key &lt;figure class="wp-block-image"&gt;
&lt;/h2&gt;&lt;p&gt;&lt;img decoding="async" src="https://i.imgur.com/xVp3hpJ.png" alt="" /&gt; &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;紅框內的要保留好, 不要外流。&lt;br&gt;
&lt;img decoding="async" src="https://i.imgur.com/hcN9p8I.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;補充:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code class=""&gt;Sandbox: 指測試帳號的url及後台等等環境
v2/v3指的是在串接api時的linepay版本&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>