前面提到了幾種付款方式,今天要建立一個讓使用者可以查詢付款紀錄的服務。整個服務流程是:
查詢所有訂單號(商家) -> 查詢訂單(LINE Pay) -> 顯示查詢結果
Step. 1 查詢訂單號
從商家資料庫查詢使用者的所有訂單號。
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 | 商家的訂單編號 |
$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 顯示查詢結果
可以把取得的訂單資訊建立成一個簡單的 退款頁面
將勾選的訂單編號送到 退款 API
POST /v2/payments/{transactionId}/refund
項目 | 資料型別 | 是否必要? | 說明 |
---|---|---|---|
refundAmount | number | N | 退款金額 - 如果未傳遞此參數,則全額退款 |
|
response 範例
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"refundTransactionId": 123123123123,
"refundTransactionDate": "2014-01-01T06:17:41Z"
}
}