iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
1
自我挑戰組

使用PHP串接金流相關API系列 第 10

Day 09 - Linepay (7) 付款記錄查詢/退款 API

付款記錄查詢/退款

前面提到了幾種付款方式,今天要建立一個讓使用者可以查詢付款紀錄的服務。整個服務流程是:

查詢所有訂單號(商家)  ->  查詢訂單(LINE Pay)  ->  顯示查詢結果

Step. 1 查詢訂單號
從商家資料庫查詢使用者的所有訂單號。
tnos

Step. 2 查詢訂單內容
從 LINE Pay server 查詢訂單資訊 ( 取得查看付款紀錄 API )

GET /v2/payments

$transactionNoArr = array('transactionId' => getTransactionNoByUserNick('a'));
// array('001', '002', '003');

▲ 在 set curl 前,先把 transactionId/orderId 設為 array key。

項目 資料型別 是否必要? 說明
transactionId[] number N 由 LINE Pay 核發的交易編號,用於付款或退款)
orderId[] String N 商家的訂單編號
  • 呼叫此 API 時,需要傳遞一個以上的參數。您最多可以查看 100 筆交易的詳細說明。
$ch = curl_init("https://sandbox-api-pay.line.me/v2/payments?".http_build_query($transactionNoArr));

▲ 使用 http_build_query() 將 value 轉為 key[0]=001&key[1]=002...

  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

▲ 因為這支 API 是 GET 傳送,所以要將這兩段 POST 參數拿掉。

["info"]=>
  array(2) {
	[0]=>
	    array(7) {
	      ["transactionId"]=>
	      int(2017122100022012910)
	      ["transactionDate"]=>
	      string(20) "2017-12-21T13:40:36Z"
	      ["transactionType"]=>
	      string(7) "PAYMENT"
	      ["productName"]=>
	      string(9) "Test Item"
	      ["currency"]=>
	      string(3) "TWD"
	      ["payInfo"]=>
	      array(1) {
	        [0]=>
	        array(2) {
	          ["method"]=>
	          string(11) "CREDIT_CARD"
	          ["amount"]=>
	          int(168)
	        }
	      }
	      ["orderId"]=>
	      string(14) "20171221214119"
	    }
...

▲ 回傳的訂單資訊會放在 info 的 array 裡。

Step. 3 顯示查詢結果

可以把取得的訂單資訊建立成一個簡單的 退款頁面

refund

將勾選的訂單編號送到 退款 API

POST /v2/payments/{transactionId}/refund

項目 資料型別 是否必要? 說明
refundAmount number N 退款金額 - 如果未傳遞此參數,則全額退款

|

response 範例
{
	"returnCode": "0000",
	"returnMessage": "success",
	"info": {
	"refundTransactionId": 123123123123,
	"refundTransactionDate": "2014-01-01T06:17:41Z"
	}
}

上一篇
Day 08 - Linepay (6) 自動付款 API
下一篇
Day 10 - Linepay (8) 授權紀錄查詢/授權作廢 API
系列文
使用PHP串接金流相關API30

1 則留言

我要留言

立即登入留言