Day 0x13 - 订单查询 (Part1 : Controller & Route)

0x1 前言

弄了这麽久的建立订单、讯息通知,终於要来处理第三个 API 订单查询

0x2 订单查询 (OrderQuery) API

(文件写的照贴)

  • Keyword OrderQuery
  • 使用时机
    • 收款纪录都可透过此 API 查询,若有交易迟未收到丰收款的主动通知,可透过本 API 介面,利用条件筛选,主动发起查询,减少掉单问题。
  • 注意事项
    1. 订单查询时至少要选择其一条件 (1)订单编号 (2)收款方式 (3)交易起迄 (4)付款状态。
    2. 每次查询笔数上限为 300 笔,建议条件范围不要设定过大。
  • 传递参数
    https://ithelp.ithome.com.tw/upload/images/20210927/20141805J9gt4zqWEe.png

另外要注意的是时间的要求是不带符号,用 date('YmdHis')大致上就可以了 (应该吧)
OK,决定一下今日目标,这里单纯追踪单笔订单状态,
但不免俗的还是用 Postman 测一下,看回传的结果是否要解密,基础只有一个必填 ShopNo 与需要查询的订单编号 OrderNo

{
    "ShopNo": "ShopNo",
    "OrderNo": "20210927072942"
}

https://ithelp.ithome.com.tw/upload/images/20210927/20141805tv5Pd9021K.png
喔对是 Order 的网址,要包 sign 等等的东西,所以解密也要处理,天啊我真的是金鱼脑 T_T,写完就忘了。
那就先写 Controller 的函数吧

// app/Http/Controllers/Controller.php
public function track_order()
{
    $sinopac = $this->initSinopac();
    $data = $sinopac->requestDataset('OrderQuery', [
        'ShopNo'    => 'NA0249_001',
        'OrderNo'   => '20210927072942'
    ]);
    $message = $sinopac->callApi('https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order', $data);

    $decrypt_message = $this->reply_message_decrypt($sinopac, $message);
    dd($decrypt_message);
    return $decrypt_message;
}

建立 api Route

// routes/api.php
Route::post('/track_order', [\App\Http\Controllers\Controller::class, 'track_order']);

serve 起来後,用 Postmen 看一下结果
https://ithelp.ithome.com.tw/upload/images/20210927/201418057zfPUn0jsN.png

这里要注意一下的就是 OrderList 为阵列
而每一笔订单的 PayType 会影响内容

[
    'A' => 'ATMParam', // ATM
    'C' => 'CardParam', // 信用卡
]

0x3 今日结语

今天就先这样,明天来建立订单查询的 view,针对回覆内容来微调今天建立的 track_order
明天见


<<:  【设计+切版30天实作】|Day15 - 来个完美的简约风Footer结束这回合

>>:  Cotex-M55 首篇

Day 26 : Tkinter实战,配合pillow制作简易的处理照片程序(下)

今天继续把上一篇文的程序做完,没看过的记得要去看喔! 图片转向 那再来就先来做转向的部分: from...

#29-网站Tips动起来!用Tailwind自订动画&Hover动画~

今天玩玩时下最夯的Tailwind啦~ 把这30天的文章&Demo收集起来变成一个30天的汇整网站!...

Day_25 Samba

许多高级的无线路由器都具有USB孔,不外乎可以达成几个功能:挂载成网路共用资料夹、共享印表机、透过智...

Day 21 Password Attacks - 密码攻击(hash-identifier, john)

前言 昨天我们用sqlmap突破了防守,取得了一些看起来像是帐号密码的东西 user_id user...

【Day 18】Complexity & Graphs

接下来我们要针对复杂度做介绍,首先要说的就是高手们常常说的「Big O」! 但是到底什麽是 big ...