iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
永豐金融APIs

試著讀懂與串接永豐金融APIs系列 第 10

Day 0xA - WebHook Api 建立( part 2 )

0x1 前言

昨天建立好 Sinopac controller,今天持續完成 receive_msg的部分

0x2 持續完成 WebHook Api

  1. 增加 Sinopac controller 的函數,要求 API 需要的一些參數

    // app/Http/Controllers/Sinopac.php
    ...
    public function requestDataset(string $service_name, array $dataset)
    {
        $nonce      = $this->getNonce();
        $hash_id    = $this->calcHashId();
        $iv         = $this->calculateIv($nonce);
        $sign       = $this->generateSign($dataset, $nonce, $hash_id);
        $message    = $this->encryptMessage($dataset, $hash_id, $iv);
    
        return [
            'Version'       => '1.0.0',
            'ShopNo'        => $this->shop_no,
            'APIService'    => $service_name,
            'Nonce'         => $nonce,
            'Sign'          => $sign,
            'Message'       => $message
        ];
    }
    ...
    
  2. 在 Controller 建立 Sinopac 的初始化函數,有使用到的函數再初始化就好了,所以不用放在 __construct

    • 這裡先寫死,日後有需求是多個商家的話再改成串資料庫,請記得要改成自己的商店代碼雜湊值(key)
    // app/Http/Controllers/Controller.php
    ...
    private function initSinopac()
    {
        return new Sinopac(
            'Shop_no',
            'key_a1',
            'key_a2',
            'key_b1',
            'key_b2');
    }
    ...
    
  3. 同樣修改 Controller 的 receive_msg 函數,確保好 Debug,每次要求都先記 log

    // app/Http/Controllers/Controller.php
    ...
    public function receive_msg(Request $request)
    {
        Log::alert('Receive message Content', $request->all());
        $PayToken = $request->get('PayToken');
    
        if (!$PayToken) {
            Log::alert('PayToken Not exist');
            return ['Status' => 'F'];
        }
    
        $sinopac = $this->initSinopac();
        $data = $sinopac->requestDataset('OrderPayQuery', $request->all());
        $message = $sinopac->callApi('https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order', $data);
    
        Log::info('Reply message', (array) $message);
        return ['Status' => 'S'];
    }
    ...
    
  4. 使用 postman 試看看正不正常,並用 powershell 監看 Log

    > Get-Content -Wait -Tail 10 -Encoding "utf8" .\storage\logs
    

    Postman:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141805JEEuQoIPVJ.png
    https://c.tenor.com/hnP8FWI5fB4AAAAC/joseph-joestar-nice.gif

    Log:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141805rskzQ99zox.png
    https://i.pinimg.com/originals/dc/39/bd/dc39bd97ff8583a9bf7ba85210160fe6.gif

    • debug de了老半天還是一樣 /images/emoticon/emoticon02.gif

0x3 今日小結

是的,崩潰的一天,一開始測試都正常,整個完成後直接報錯爆好爆滿...
明天先回頭嘗試建立訂單吧


上一篇
Day 0x9 - 插播 - 建立 Sinopac Controller
下一篇
Day 0xB - 建立訂單 & Debug 之 De 好 De 不完
系列文
試著讀懂與串接永豐金融APIs30

尚未有邦友留言

立即登入留言