說明

    A2Billing 的 Callback 除了 CID Callback, Web Callback 以外,還有一種透過 API 方式的 Callback,可應用於 3rd party 軟體的整合。

    系統需求

    • PHP 模組 SOAP
    • Pear SOAP package

    安裝必要套件

    yum install php-soap
    pear install -f -o SOAP
    

    安裝網頁檔案

    cd /usr/src/a2billing/
    cp -r webservice /var/www/html/a2b_api 
    cd /var/www/html/a2b_api
    

    網頁檔架構:

    a2b_api/SOAP/

    • soap-callback-server.php - SOAP Server
    • test-callback-server.php - SOAP Client

     

    編輯 SOAP/test-callback-server.php

    預設的 PHP 檔是關閉 API 的,編輯 test-callback-server.php,將它打開:
    修改 SOAP Server 的 URL

    $endpoint = 'http://this.is.server.ip/a2b_api/SOAP/soap-callback-server.php';
    

    將上下的註解符號刪除

    ...
    /* <== 刪除
    echo "<hr>#############   Request CallBack   ############# <br/><hr/>";
    $method = 'Request';
    
    $params = array('security_key' => md5($security_key),
                    'pn_calledparty' => '0034650784355', 'pn_destination' => '00341111122444', 'callerid' => '0034650555555', 'callback_time' => '', 'uniqueid' => '', 'accountnumber' => '6098593343');
    $ans = $callback -> call($method, $params);
    
    print_r($ans);
    
    $insert_id_callback = $ans[0];
    */ <== 刪除
    ...
    

    Tips:

    test-callback-server.php 這是一個 SOAP用戶端程式,可以與 SOAP Server(A2Billing) 分開不同主機,為了加強 API 的安全性,可以在用戶端程式,最前端加上

    define ("API_SECURITY_KEY", 'ThisISYOurApiSeCUriTY_kEy');

    而且這個 key 必須與 A2B 的參數相同,A2B Admin UI > STSTEM SETTINGS > Global List > webui >

    api_security_key

    測試 API

    編輯 SOAP/test-callback-server.php

    ...
    $params = array('security_key' => md5($security_key),
                    'pn_calledparty' => '0034650784355', 'pn_destination' => '00341111122444', 'callerid' => '0034650555555', 'callback_time' => '', 'uniqueid' => '', 'accountnumber' => '6098593343');
    ...
    

    Tips:

    • pn_calledparty : 撥號者的回撥電話號碼 (必要)
    • pn_destination : 目的端電話號碼 (必要)
    • callerid : 顯示的來電號碼 (必要)
    • callback_time : 回撥電話的時間,若為空白,則立即回撥。
    • uniqueid : 識別ID,若為空白,系統會自動產生。
    • accountnumber : Cutomer 帳戶號碼 (必要),注意:帳戶內必須有足夠餘額。

     

    使用另一部電腦,開啟瀏覽器輸入 http://this.is.server.ip/a2b_api/SOAP/test-callback-server.php,若一切正常,系統會依照參數啟動 callback,網頁會輸出訊息如下:

    ############# Request CallBack #############
    Array ( [0] => 103 [1] => result=Success [2] => Success - Callback request has been accepted )
    ############# Check Status #############
    Array ( [0] => rp3t9-1352346433 [1] => result=PENDING [2] => - Callback request found SELECT status, uniqueid FROM cc_callback_spool WHERE id='103' )
    

    Tips:

    • rp3t9-1352346433 這是系統產生的 uniqueid。

    FAQ

    Q:找不到 SOAP/Server.php, SOAP/Disco.php, SOAP/Client.php 這幾個檔案?

    Ans: 請使用 pear 安裝 SOAP 套件。

    Q:如何修改 Callback 的預設 context: a2billing-back?

    Ans: A2B Admin UI > SYSTEM SETTINGS > Global List > Select Group: callback

    context_callback = a2billing-callback

    心得總結

    • 這 API 容易與 3rd party 軟體作整合 Callback + Billing。
    • Callback 不會 retry,如果對方未接時。
    • API 被呼叫執行後,會 return 回撥的 uniqueid,以用來需要進一步查詢回撥狀態之用。
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core