IVR 開發:整合 Authorize.net Payment Gateway

    版本為 12:03, 15 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    簡介

    本篇紀錄如何開發一個 IVR 整合 Authorize.net 使用電話作刷卡付款的系統。

    文章索引

    開發 PHP 連結 Authorize.net

    步驟流程:
    (https://developer.authorize.net/inte...inutes/#custom)

    1. 從官方新增一個測試帳號
    2. 下載 SDK
    3. 編寫 PHP 程式
    4. 電子交易測試及驗證

     

    申請測試帳號

    (https://developer.authorize.net/testaccount)

    • 帳號類型有分 Card Present 與 Card Not Present 兩種,兩種開發的程式會有不同,請選擇前者。
    • 申請完成後,會取得幾個重要資訊
      • Web Login/PAss
      • API LoginID
      • Transaction key
      • Visa Test Card
      • Second Visa Test Card

     

    下載 SDK

    (http://developer.authorize.net/downloads/)

    SDK for PHP 是一個包含許多 Class 的目錄。

    編寫 PHP 程式

    make_payment.php:

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    另一個較完整的開發案例:
    http://community.developer.authorize...ing/ba-p/10768

    Tips:

    * 如果使用的是測試帳號,請增加第三個參數 true
    $payment = new AuthnetAIM('myapilogin', 'mYtRaNsaCTiOnKEy', true);

    電子交易測試及驗證

    執行 PHP 交易程式後,如果輸出訊息:

    Success! The test credit card has been charged!
    Transaction ID: 2160634394
    

    看到這樣訊息表示,信用卡交易完成,請前往官方網頁:https://test.authorize.net/,登入帳號密碼後,選擇
    Home > REPORTS > Transaction Detail > Unsettled Transactions

    報表內應該要出現剛剛完成的交易項目。

    FAQ

    Q:執行 PHP 後總是出現錯誤:response reason code: 87?

    Ans: 測試用的帳號有分兩種類型:Card Not Present(CNP) 與 Card Present(CP),開發 PHP 時,必須使用不同的函數:

    // for CNP account, 本篇教學以此類型為主
    $transaction = new AuthorizeNetAIM('YOUR_API_LOGIN_ID', 'YOUR_TRANSACTION_KEY');
    $transaction->amount = '9.99';
    $transaction->card_num = '4007000000027';
    $transaction->exp_date = '10/16';
    
    // for CP account
    $transaction = new AuthorizeNetCP('YOUR_API_LOGIN_ID', 'YOUR_TRANSACTION_KEY');
    $transaction->amount = '9.99';
    $transaction->setTrack1Data('%B4111111111111111^CARDUSER/JOHN^1803101000000000020000831000000?');
    $transaction->device_type = '4'; 
    Q:如何辨識帳號類型為 CP 或 CNP?

    Ans:

    Powered by MindTouch Core