iT邦幫忙

0

TAPPAY 的 LINE PAY 串接問題?

不知道有沒有人串過 TAPPAY 的 LINE PAY
我遇到了一個問題

LINE PAY 流程是這樣:點擊 LINE PAY 付款 -> 取得Prime後會得到一個付款網址 -> 導轉到該付款網址並使用 LINE 付款 -> 成功或失敗 -> POST 到我指定的 HTTP 去 -> 回傳他要帶給我的資料
信用卡流程是這樣 ( 也是 TAPPAY ):點擊付款,取得Prime後直接打付款 API,回傳他要帶給我的資料

tappay 回傳帶給我的資料:
https://docs.tappaysdk.com/line-pay/zh/back.html#backend-notify

現在我遇到一個問題,就是 LINE PAY 的部分(信用卡串接沒問題)
當成功後我可以設定「backend_notify_url」的網址,都是同一個域名
但是當他打過來的時候,我發現 backend_notify_url 裡面的 SESSION 完全沒用了?變空的,唯一有抓到的就只有他回傳給我的一些「他自己的」參數(就是 Request Body 的資料)而已

只是。。。
當我直接進去 backend_notify_url 的時候,假設我正在登入狀態(會員),我進入我給 LINE的 backend_notify_url , SESSION 是有效的?那 LINE PAY打回來給我的時候,為什麼同一個 router 的情況下,SESSION 卻都變成無效的呢?(在同一個子域名上)還是我的作法錯了?

確定沒問題的是

  1. 確定有付款成功,TAPPAY有交易紀錄
  2. 有成功進入 frontend_redirect_url

這是前端取到 $prime 後丟到 PHP ,當成功時會丟一個付款網址出來,前端直接跳轉至該網址

"prime" => $prime,
      "partner_key" => $key,
      "result_url" => array(
        "frontend_redirect_url" => '/user/order?query=success',
        "backend_notify_url" => '/admin/pay?type=line-pay'
      )

這是當交易確認成功後,PHP接收TAPPAY回傳的資料 (也就是 backend_notify_url )

$data = json_decode(file_get_contents('php://input'), true);

        if ($data['msg'] == 'Success' && $data['status'] == 0) {
        echo $_SESSION['XXX'];
        } 

我後端的最上方會有 SESSION_START() ,所以不可能沒有啟動 SESSION,而直接訪問該 backend_notify_url (/admin/pay?type=line-pay),SESSION是可顯示的,但 LINEPAY POST回來就不行?

像信用卡付款,我是確認付款成功後我才會跑建立訂單流程,此時用 SESSION 都沒問題(同一個只是 type 不同 /admin/pay?type=card)
我想說 LINE PAY 付款成功後回傳的 backend_notify_url 恰好讓我可以用同樣的方式開始建立訂單流程,但沒想到他的POST讓我的SESSION完全無效?
那我應該怎麼做才是正確的呢?

不曉得你的session是要傳送什麼東西呢?通常金流這種東西就是把訂單號碼、金額或者產品數量送到指定api,在透過api回傳交易訊息回來,會員的登入與否不會透過backend_notify_url 判斷。
小松菜奈 iT邦研究生 5 級 ‧ 2019-01-06 15:51:59 檢舉
我是想說當確認回傳付款成功時,我才開始建立訂單資訊,如果是他這個做法,就是要先建立訂單資訊,然後打去 backend_notify_url 帶orderID,回來時再拿這個 orderID 判斷成功或失敗,失敗則將訂單刪除?

尚未有邦友回答

立即登入回答