Skip to content

Payment Completed

Description

付款完成。

Resource

PATCH /v1/order/payment_completed

Authorization

採用 OAuth 2.0 Bearer Token,詳細使用流程請參考 Auth Login

Request Body Parameters

Name Type Description
id string 訂單編號
store_id string 門市代碼
payments Payment[] 付款資訊
receipt Receipt 發票資訊
kiosk_id string KIOSK的機號
(optional)

Request Body Parameters - Payment

Name Type Description
type Payment 付款方式
payment_amount integer 支付金額
transaction_id integer 交易代碼
(optional)
relate_id integer 其他代碼
(optional)
customize Customize 自定義金流
(optional) *若 type 為 CUSTOMIZE 需必填

Request Body Parameters - Customize

name type
id 自定義金流代碼
name 自定義金流名稱

Request Body Parameters - Payment Instruction

type name
LINE_PAY LINE Pay
PI_PAY Pi Pay
CREDIT_CARD 信用卡
EASY_CARD 悠遊卡
CASH 臨櫃結帳
MWD_PAY 麥味登Pay
Easy_Wallet 悠遊付
APPLE_PAY Apple Pay
GOOGLE_PAY Google Pay
NCCC_EASY_CARD NCCC悠遊卡
NCCC_IPASS NCCC一卡通
NCCC_ICASH NCCC iCash
NCCC_HAPPY_CASH NCCC有錢卡
CASH_CAR 現金
CHARGE_CARD 簽帳
MOTORCADE 車隊
CREDIT_CARD_CAR 信用卡
CTBC_CARD 中信卡
BARCODE_PAY 條碼支付
TAIWAN_PAY 台灣 Pay
JkoPay 街口支付
CUSTOMIZE 自定義金流
TK01 門票折抵
HAO_SPEED 全家外送自取
EC EC
HSA_EXTRA 異質POS
PX_PAY 全支付
CASH_ON_DELIVERY 貨到付款
NEWEB_PAY 藍新金流
CASH_MODULE 現金模組
I_CASH_PAY 愛金卡支付
DD_PAY 信用卡(DD_PAY)

Request Body Parameters - Receipt

Name Type Description
type string
(enum)
發票類型
ALLOWED VALUES:
  • PAPER
  • ELECTRONIC

(optional)
tax_ID_number string 統一編號
(optional)
npoban string 捐贈碼
(https://i.imgur.com/5LAsOF4.jpg)
(optional)
carrier_type string 買方載具類別
(optional)
carrier string 買方載具
(optional)
take_number bool 是否開立發票
use_member_carrier bool 使用會員載具
(optional)

Request Example

{
  "id": "STORE2005010001",
  "store_id": "A01",
  "payments": [
    {
      "type": "CASH_MODULE",
      "payment_amount": 100
    }
  ],
  "kiosk_id": "k01",
  "receipt": {
    "type": "PAPER",
    "tax_ID_number": "24436074",
    "npoban": "",
    "carrier_type": "",
    "carrier": "",
    "take_number": true,
    "use_member_carrier": false
  }
}

Response

Status-Code: 204 No Content

Payment Completed API Workflow

sequenceDiagram %%{init: {'securityLevel': 'loose', 'theme': 'base'}}%% autonumber participant C as Client participant OP as OmniPlatform participant R as repository C ->> OP: Request [PATCH] /v1/order/payment_completed OP ->> OP: Call self.check_params_process(params) alt 請求參數缺少必填欄位 OP -->> C: Return(400, f"{column} 不可為空") end OP ->> OP: auth_data = get_auth_info(bearer) OP ->> OP: company_id = get_company_id(auth_data) Note over OP, R: 檢查 order00 的 status 是否合法 (1:待審核、2:POS已接單、A:店長APP已接單) OP ->> R: Call get_order00_status(company_id, shop_id, order_id) R -->> OP: order_status alt order_status not in allow_order_status OP -->> C: Return Response(400, {'message': '訂單狀態錯誤,無法更新訂單'}) end Note over OP, R: 更新 order00 的 payments_term = 1、receipt_type = 1 及其他選填參數 OP ->> R: Call update_order00_for_cash_kiosk(update_params) Note over OP, R: 新增 order02 pay_id、isinv = 1、is_paid = 1、counter_to_online_payment = 1 與其他選填參數 OP ->> OP: client_device = self.get_client_device_by_orderid(self.company_id, params['order_id']) OP ->> OP: pay_id = PayID().get_pay_id(client_device, payments['type']) OP ->> OP: order02_df = handle_order02_data(payments) OP ->> R: Call insert_order02(order02_df) Note over OP, R: 若 params['receipt']['take_number'] = True 則進行 OrderCreate 的開立發票流程 alt params['receipt']['take_number'] OP ->> R: Call repository.get_order00_info(self.company_id, params['store_id'], params['id']) R -->> OP: order00 OP ->> OP: handle_receipt(params, order00) end Note over OP, R: 若未設定 UniPOS 網址 且訂單狀態等於 2 則與 POS 進行訂單同步 alt external_pos_url == '' and order_status == '2' OP ->> OP: status_code, response_data = payment_completed_sync_order() Note over OP, R: 若POS訂單同步成功,更新全通路訂單狀態 = 4 alt status_code == 200 and response_data.get('code', '') == '0' OP ->> OP:update_order_status() end end Note over OP, R: 若有設定 UniPOS 網址,則發送 order_change 的 webhook alt external_pos_url != '' OP ->> OP: send_order_change_webhook() OP ->> OP:update_order_status() end OP -->> C: Return Response(204)