Line Pay 金流串接
註冊為LINE Pay的商家,可以吸引全球的LINE用戶作為自己的客戶。此外,通過LINE擴展商家的銷售管道,可以預見銷售額的迅速成長。
上次我們已經說過如何申請Sand Box與帳號,現在我們要來串接付款的程式。
Sandbox Url : https://sandbox-api-pay.line.me
Production Url : https://api-pay.line.me
LINE Pay的Authentication方式為
GET 為 Channel Secret + URI + Query String + nonce
POST Channel Secret + URI + Request Body + nonce
Channel Secret 請登入SandBox拿取,管理付款連結>管理連結金鑰 輸入密碼便會顯示。
Nonce 請用Timestamp
Base64(HMAC-SHA256(Your ChannelSecret, (Your ChannelSecret + URI + Query String + nonce)))
先行呼叫Request API取得付款URL
<?php $sandBox = 'https://sandbox-api-pay.line.me'; $uri = '/v3/payments/request'; $channelId = 'yourChannelId'; $channelSecret = ‘yourChannelSecret’; $Nonce = date('c') . uniqid('-'); $isSandbox = false; $qyery = [ 'amount' => 250, 'currency' => 'TWD', 'orderId' => '000001', 'packages' => [ [ 'id' => '000001', 'amount' => 250, 'name' => 'test store', 'products' => [ [ 'name' => 'test product', 'quantity' => 1, 'price' => 250 ], ], ], ], 'redirectUrls' => [ 'confirmUrl' => 'https://test.astralweb.com/confirm.php', 'cancelUrl' => 'https://test.astralweb.com/cancel.php', ], ]; $authMacText = $channelSecret . $uri . json_encode($qyery) . $Nonce; $Authorization = base64_encode(hash_hmac('sha256', $authMacText, $channelSecret, true)); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $sandBox.$uri, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>json_encode($qyery), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-LINE-ChannelId: '.$channelId, 'X-LINE-Authorization-Nonce: '.$Nonce, 'X-LINE-Authorization: '.$Authorization ), )); $response = curl_exec($curl); curl_close($curl); $data = json_decode($response); header("Location: ".$data->info->paymentUrl->web); ?>
使用回應得paymentUrl進行跳轉到LINE付款頁面
輸入帳號或者是使用手機掃描付款
按下付款後便會跳轉當初所設定的confirmUrl,https://test.astralweb.com/line-pay/confirm?transactionId=2021100100691484310&orderId=000001
並帶上transactionId與orderId,這時授權完成 , 現在可以呼叫Confirm API
<?php $sandBox = 'https://sandbox-api-pay.line.me'; $uri = '/v3/payments/'.$_GET['transactionId'].'/confirm'; $channelId = ''yourChannelId''; $channelSecret = 'yourChannelSecret'; $Nonce = date('c') . uniqid('-'); $isSandbox = false; $qyery = [ 'amount' => 250, 'currency' => 'TWD' ]; $authMacText = $channelSecret . $uri . json_encode($qyery) . $Nonce; $Authorization = base64_encode(hash_hmac('sha256', $authMacText, $channelSecret, true)); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $sandBox.$uri, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>json_encode($qyery), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-LINE-ChannelId: '.$channelId, 'X-LINE-Authorization-Nonce: '.$Nonce, 'X-LINE-Authorization: '.$Authorization ), )); $response = curl_exec($curl); curl_close($curl); echo $response; ?>
這邊是回來的資料,到這裡你已完成付款的流程,由於LINEPAY是預設options.payment.capture所以我們不須使用Capture API向LINEPAY請款,如果需要要向LINE申請。
{ "returnCode": "0000", "returnMessage": "Success.", "info": { "transactionId": 2021100100691493400, "orderId": "000001", "payInfo": [ { "method": "CREDIT_CARD", "amount": 250, "maskedCreditCardNumber": "************1111" } ], "packages": [ { "id": "000001", "amount": 250, "userFeeAmount": 0, "products": [ { "name": "test product", "quantity": 1, "price": 250 } ] } ] } }
到這裡我們已經完成LINE Pay的付款所有流程,請注意confirmUrl有可能會因為網路問題或使用者等因素導致沒有回傳,必須建立主動檢查機制,註冊為LINE Pay的商家,可以吸引全球的LINE用戶作為自己的客戶。此外,通過LINE擴展商家的銷售管道,可以預見銷售額的迅速成長。
以上是本篇的Line Pay金流串接分享,對於經營電子商務的商家來說,金流是很重要的一個環節,喜歡歐斯瑞文章的讀者們,記得追蹤我們的fb粉絲團及IG,也別忘了訂閱電子報,隨時掌握第一手最新消息呦!若有問題也歡迎聯繫我們~
參考範例
https://pay.line.me/jp/developers/apis/onlineApis?locale=zh_TW
我要留言