不知道有沒有人串過 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 卻都變成無效的呢?(在同一個子域名上)還是我的作法錯了?
確定沒問題的是
這是前端取到 $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完全無效?
那我應該怎麼做才是正確的呢?