真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php如何實(shí)現(xiàn)話(huà)費(fèi)充值

這篇文章主要介紹“php如何實(shí)現(xiàn)話(huà)費(fèi)充值”,在日常操作中,相信很多人在php如何實(shí)現(xiàn)話(huà)費(fèi)充值問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”php如何實(shí)現(xiàn)話(huà)費(fèi)充值”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),鳳岡網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:鳳岡等地區(qū)。鳳岡做網(wǎng)站價(jià)格咨詢(xún):13518219792

php實(shí)現(xiàn)話(huà)費(fèi)充值的方法:1、開(kāi)通話(huà)費(fèi)充值接口;2、引入封裝好的代碼類(lèi);3、配置接口基本信息;4、提交話(huà)費(fèi)充值訂單;5、將狀態(tài)信息推送給相應(yīng)的URL;6、根據(jù)手機(jī)及面額查詢(xún)是否支持充值;7、通過(guò)“if ($local_sign == $sign) {...}”方式進(jìn)行業(yè)務(wù)邏輯處理即可。

php怎么實(shí)現(xiàn)話(huà)費(fèi)充值?

基于PHP的聚合話(huà)費(fèi)充值接口示例

一、接口申請(qǐng)開(kāi)通

本代碼是基于聚合數(shù)據(jù)的話(huà)費(fèi)充值A(chǔ)PI實(shí)現(xiàn)的話(huà)費(fèi)充值功能,使用前需要:

  • 通過(guò)https://www.juhe.cn/docs/api/id/85?s=cpphpcn申請(qǐng)開(kāi)通話(huà)費(fèi)接口服務(wù)。

  • 與聚合簽訂相關(guān)服務(wù)合同后,才能正式使用。前期您也可以申請(qǐng)開(kāi)通測(cè)試環(huán)境,進(jìn)行對(duì)接測(cè)試。

  • 詳細(xì)的接口說(shuō)明,可參考聚合官方文檔。

二、接口使用

2.1、引入封裝好的代碼類(lèi)

include "JuheHuaFei.class.php";

2.2、配置一些必須的參數(shù)

// 接口基本信息配置
$env = 1; // 接口環(huán)境類(lèi)型,1:正式環(huán)境接口 2:測(cè)試環(huán)境接口
$appKey = 'b842820xxxxxxxxxxxxxxxxxx'; //從聚合申請(qǐng)的話(huà)費(fèi)充值接口key
$openId = 'JHb0d92d94ce6axxxxxxxxxxx'; //注冊(cè)聚合賬號(hào)就會(huì)分配的openid,在個(gè)人中心可以查看
// 初始化
$juheHuaFei = new JuheHuaFei($appKey, $openId, $env);

2.3、提交話(huà)費(fèi)充值訂單

// 提交話(huà)費(fèi)充值訂單
$orderId = '111111111'; //自己定義一個(gè)訂單號(hào),需要保證唯一
$mobile = '189xxxxxxxx'; // 需要充值的手機(jī)號(hào)碼
$perValue = '1'; // 話(huà)費(fèi)面值,可以選擇的面額1、2、5、10、20、30、50、100、300
$submitOrderResult = $juheHuaFei->submitOrder($mobile, $perValue, $orderId);
if ($submitOrderResult) {
    if ($submitOrderResult['error_code'] == '0') {
        // 訂單提交成功,根據(jù)實(shí)際業(yè)務(wù)邏輯進(jìn)行處理
        echo "訂單提交成功,訂單號(hào):" . $submitOrderResult['result']['sporder_id'];
        print_r($submitOrderResult);
    } else {
        // 提交返回碼error_code非正常狀態(tài),依據(jù)官方文檔錯(cuò)誤碼說(shuō)明,進(jìn)行邏輯處理
        // 比如:10014,系統(tǒng)異常 / 208516,重復(fù)的訂單號(hào) 等,需要進(jìn)行二次查詢(xún)/人工確認(rèn)處理,不要直接失敗處理,避免造成不必要的損失
        print_r($submitOrderResult);
    }
} else {
    // 可能網(wǎng)絡(luò)異常等問(wèn)題,未獲得正確響應(yīng)結(jié)果,建議進(jìn)行二次查單/人工確認(rèn),不要直接失敗處理,避免造成不必要的損失
    // 依據(jù)自己的業(yè)務(wù)邏輯進(jìn)行處理
    echo "請(qǐng)求異常,請(qǐng)確認(rèn)";
}

請(qǐng)求結(jié)果:

Array
(
    [reason] => 訂單提交成功,等待充值
    [result] => Array
        (
            [cardid] => 10423
            [cardnum] => 1
            [ordercash] => 1.06
            [cardname] => 江蘇電信話(huà)費(fèi)1元
            [sporder_id] => J201125162114667xxxxxxxx
            [uorderid] => 111111111
            [game_userid] => 189xxxxxxxx
            [game_state] => 0
        )
    [error_code] => 0
)

2.4、訂單狀態(tài)查詢(xún)

除主動(dòng)查詢(xún)訂單狀態(tài),你還可以向聚合提供狀態(tài)回調(diào)通知URL,訂單狀態(tài)有變化,聚合將會(huì)主動(dòng)將狀態(tài)信息推送給相應(yīng)的URL。

// 話(huà)費(fèi)訂單充值狀態(tài)查詢(xún)
$orderId = '111111111'; // 需要查詢(xún)的訂單號(hào),即提交訂單時(shí)傳遞的orderId
$orderStatusResult = $juheHuaFei->queryOrderStatus($orderId);
if ($orderStatusResult) {
    // 打印返回結(jié)果
    print_r($orderStatusResult);
    // 根據(jù)實(shí)際業(yè)務(wù)邏輯進(jìn)行處理
    if ($orderStatusResult['error_code'] == '0') {
        //查詢(xún)成功
        if ($orderStatusResult['result']['game_state'] == '1') {
            // 訂單充值成功了
            echo "訂單充值成功";
        } elseif ($orderStatusResult['result']['game_state'] == '9') {
            // 訂單充值失敗
            echo "訂單充值失敗";
        } elseif ($orderStatusResult['result']['game_state'] == '0') {
            // 訂單充值中
            echo "訂單充值中";
        } elseif ($orderStatusResult['result']['game_state'] == '-1') {
            //訂單受理失敗,可能是如運(yùn)營(yíng)商維護(hù)、賬戶(hù)余額不足等情況
            echo "訂單受理失敗";
        }
    } else {
        //查詢(xún)狀態(tài)失敗,可能訂單號(hào)不存在等情況
        echo "查詢(xún)失敗:" . $orderStatusResult['reason'] . "(" . $orderStatusResult['error_code'] . ")";
    }
} else {
    // 可能網(wǎng)絡(luò)異常等問(wèn)題,未獲得正確響應(yīng)結(jié)果,建議進(jìn)行二次查詢(xún)
    // 依據(jù)自己的業(yè)務(wù)邏輯進(jìn)行處理
    echo "請(qǐng)求異常,請(qǐng)確認(rèn)";
}

返回結(jié)果:

Array
(
    [reason] => 查詢(xún)成功
    [result] => Array
        (
            [uordercash] => 1.060
            [sporder_id] => J2011251629516xxxxxxxxxx
            [game_state] => 9
        )
    [error_code] => 0
)

2.5、根據(jù)手機(jī)及面額查詢(xún)是否支持充值

主要通過(guò)號(hào)段進(jìn)行判斷是否支持充值,實(shí)際業(yè)務(wù)中可以不使用本小接口。

// 根據(jù)手機(jī)號(hào)碼及面額查詢(xún)是否支持充值
$mobile = '1342966xxxx'; // 手機(jī)號(hào)碼
$perValue = '10'; // 話(huà)費(fèi)面值
$telCheckResult = $juheHuaFei->telCheck($mobile, $perValue);
if ($telCheckResult) {
    if($telCheckResult['error_code'] == '0'){
        //說(shuō)明支持充值,可以繼續(xù)充值操作,以下可以根據(jù)實(shí)際需求修改
        echo "OK";
    }else{
        //暫不支持充值,以下可以根據(jù)實(shí)際需求修改
        echo "對(duì)不起,該面額暫不支持充值";
    }
} else {
    // 可能網(wǎng)絡(luò)異常等問(wèn)題,未獲得正確響應(yīng)結(jié)果,建議進(jìn)行二次查詢(xún)
    // 依據(jù)自己的業(yè)務(wù)邏輯進(jìn)行處理
    echo "請(qǐng)求異常,請(qǐng)確認(rèn)";
}

2.6、根據(jù)手機(jī)和面額獲取商品信息

實(shí)際業(yè)務(wù)中可以不使用本小接口。

// 根據(jù)手機(jī)號(hào)碼和面額獲取商品信息
$mobile = '1342966xxxx'; // 手機(jī)號(hào)碼
$perValue = '10'; // 話(huà)費(fèi)面值
$telQueryResult = $juheHuaFei->telQuery($mobile, $perValue);
if ($telQueryResult) {
    if($telQueryResult['error_code'] == '0'){
        // 查詢(xún)成功,可以根據(jù)實(shí)際邏輯修改
        print_r($telQueryResult);
    }else{
        // 查詢(xún)失敗,可以根據(jù)實(shí)際邏輯修改
        print_r($telQueryResult);
    }
} else {
    // 可能網(wǎng)絡(luò)異常等問(wèn)題,未獲得正確響應(yīng)結(jié)果,建議進(jìn)行二次查詢(xún)
    // 依據(jù)自己的業(yè)務(wù)邏輯進(jìn)行處理
    echo "請(qǐng)求異常,請(qǐng)確認(rèn)";
}

返回結(jié)果:

Array
(
    [reason] => 查詢(xún)成功
    [result] => Array
        (
            [cardid] => 10880
            [cardname] => 浙江移動(dòng)話(huà)費(fèi)10元
            [inprice] => 10.2
            [game_area] => 浙江杭州移動(dòng)
        )
    [error_code] => 0
)

2.7、訂單狀態(tài)通知

推送URL地址:自行提供給聚合進(jìn)行配置 (為了更安全,你也可以將聚合推送服務(wù)器的IP進(jìn)行加白名單處理)

推送方式:POST

推送參數(shù):

php如何實(shí)現(xiàn)話(huà)費(fèi)充值

PHP接收異步通知(回調(diào))參考代碼:

/**
 * 接受話(huà)費(fèi)\加油卡\流量充值業(yè)務(wù) 異步通知參數(shù) 參考示例
 */
$appkey = "b842820xxxxxxxxxxxxxxxxxx"; //您申請(qǐng)的數(shù)據(jù)的APIKey
 
$sporder_id = addslashes($_POST['sporder_id']); //聚合訂單號(hào)
$orderid = addslashes($_POST['orderid']); //商戶(hù)的單號(hào)
$sta = addslashes($_POST['sta']); //充值狀態(tài)
$sign = addslashes($_POST['sign']); //校驗(yàn)值
 
$local_sign = md5($appkey.$sporder_id.$orderid); //本地sign校驗(yàn)值
 
if ($local_sign == $sign) {
    if ($sta == '1') {
        //充值成功,根據(jù)自身業(yè)務(wù)邏輯進(jìn)行后續(xù)處理
    } elseif ($sta =='9') {
        //充值失敗,根據(jù)自身業(yè)務(wù)邏輯進(jìn)行后續(xù)處理
    }
}

登錄后復(fù)制

2.8、JuheHuaFei.class.php

JuheHuaFei.class.php 完整代碼

appkey = $appkey; // 申請(qǐng)到的話(huà)費(fèi)接口請(qǐng)求key
        $this->openid = $openid; // OpenID在聚合個(gè)人中心查詢(xún)
        if ($env == 1) {
            // 正式環(huán)境,接口地址
            $this->submitUrl = 'http://op.juhe.cn/ofpay/mobile/onlineorder'; // 提交訂單接口URL
            $this->orderStatusUrl = 'http://op.juhe.cn/ofpay/mobile/ordersta'; // 訂單狀態(tài)查詢(xún)接口URL
            $this->telCheckUrl = 'http://op.juhe.cn/ofpay/mobile/telcheck'; // 檢測(cè)手機(jī)號(hào)碼是否能充值URL
            $this->telQueryUrl = 'http://op.juhe.cn/ofpay/mobile/telquery'; // 根據(jù)手機(jī)號(hào)和面值查詢(xún)商品URL
        } else {
            // 測(cè)試環(huán)境,接口地址
            $this->submitUrl = 'http://test-v.juhe.cn/ofpay/mobile/onlineorder'; // 提交訂單接口URL
            $this->orderStatusUrl = 'http://test-v.juhe.cn/ofpay/mobile/ordersta'; // 訂單狀態(tài)查詢(xún)接口URL
            $this->telCheckUrl = 'http://test-v.juhe.cn/ofpay/mobile/telcheck'; // 檢測(cè)手機(jī)號(hào)碼是否能充值URL
            $this->telQueryUrl = 'http://test-v.juhe.cn/ofpay/mobile/telquery'; // 根據(jù)手機(jī)號(hào)和面值查詢(xún)商品URL
        }
    }
    /**
     * 提交話(huà)費(fèi)充值訂單
     * @param  [string] $mobile   [手機(jī)號(hào)碼]
     * @param  [int] $pervalue [充值面額]
     * @param  [string] $orderid  [自定義單號(hào)]
     * @return  [array]
     */
    public function submitOrder($mobile, $pervalue, $orderid)
    {
        $sign = md5($this->openid . $this->appkey . $mobile . $pervalue . $orderid);// 校驗(yàn)值計(jì)算
        $params = array(
            'key' => $this->appkey,
            'phoneno' => $mobile,
            'cardnum' => $pervalue,
            'orderid' => $orderid,
            'sign' => $sign
        );
        $content = $this->juheHttpRequest($this->submitUrl, $params, 1);
        return $this->_returnArray($content);
    }
    /**
     * 查詢(xún)訂單的充值狀態(tài)
     * @param  [string] $orderid [自定義單號(hào)]
     * @return  [array]
     */
    public function queryOrderStatus($orderid)
    {
        $params = 'key=' . $this->appkey . '&orderid=' . $orderid;
        $content = $this->juheHttpRequest($this->orderStatusUrl, $params);
        return $this->_returnArray($content);
    }
    /**
     * 根據(jù)手機(jī)號(hào)碼及面額查詢(xún)是否支持充值
     * @param string $mobile [手機(jī)號(hào)碼]
     * @param int $pervalue [充值金額]
     * @return  boolean
     */
    public function telCheck($mobile, $pervalue)
    {
        $params = 'key=' . $this->appkey . '&phoneno=' . $mobile . '&cardnum=' . $pervalue;
        $content = $this->juheHttpRequest($this->telCheckUrl, $params);
        return $this->_returnArray($content);
    }
    /**
     * 根據(jù)手機(jī)號(hào)碼和面額獲取商品信息
     * @param string $mobile [手機(jī)號(hào)碼]
     * @param int $pervalue [充值金額]
     * @return  array
     */
    public function telQuery($mobile, $pervalue)
    {
        $params = 'key=' . $this->appkey . '&phoneno=' . $mobile . '&cardnum=' . $pervalue;
        $content = $this->juheHttpRequest($this->telQueryUrl, $params);
        return $this->_returnArray($content);
    }
    /**
     * 將JSON內(nèi)容轉(zhuǎn)為數(shù)據(jù),并返回
     * @param string $content [內(nèi)容]
     * @return array
     */
    public function _returnArray($content)
    {
        return json_decode($content, true);
    }
    /**
     * 請(qǐng)求接口返回內(nèi)容
     * @param string $url [請(qǐng)求的URL地址]
     * @param string $params [請(qǐng)求的參數(shù)]
     * @param int $ipost [是否采用POST形式]
     * @return  string
     */
    public function juheHttpRequest($url, $params = false, $ispost = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'JuheData');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        $response = curl_exec($ch);
        if ($response === FALSE) {
            //echo "cURL Error: " . curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }

到此,關(guān)于“php如何實(shí)現(xiàn)話(huà)費(fèi)充值”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


本文名稱(chēng):php如何實(shí)現(xiàn)話(huà)費(fèi)充值
分享路徑:http://weahome.cn/article/pgcgpp.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部