福禄开放平台PHP接入封装SDK

一、福禄平台介绍

产品介绍

开放平台提供专业的数字权益商品标准化接口和免费接入服务,数字权益商品涵盖话费、流量、游戏、Q币、视频会员、加油卡、礼品卡等多种品类,可满足使用者多方面的业务需求,丰富企业的产品内容、提升竞争优势。

产品功能

  • 商品管理:提供API商户可以进行对接的商品类目和编号。
  • 订单管理:订单明细查询、充值记录核对等。
  • 应用配置:密钥管理、账号绑定、IP白名单添加、参数配置。

使用场景

拥有一定技术团队的企业,接入充值API,用于手机App、PC客户端、微信公众号、小程序、支付宝生活号等多种场景,为自己的用户提供在线充值服务,丰富服务内容,促进流量变现。

产品优势

  • 接口稳定性高,充值秒到账:专业技术团队保证接口安全、稳定,用户从下单到充值成功仅需3秒。
  • 货源丰富,涵盖全品类:多达千种数字权益商品,全品类覆盖,可满足不同行业、不同场景需求。
  • 强势资源,保障低价:凭借雄厚资金实力,整合行业优势资源,与超过20个总代品牌合作,保障产品优质低价。

业务场景

    • 在线直充
      通过直储充值的方式,为客户提供文娱会员等数字权益,可用于即时获取权益的场景。
    • 话费充值
      高质量的话费充值渠道,稳定到账,为客户提供满意的话费充值体验。
    • 卡密采购
      通过卡密充值的方式,为客户提供数字权益。

手册地址

    • 文档地址:

      https://docs.open.fulu.com/home

    • 接入说明:

      https://docs.open.fulu.com/apiDocument?productSolutionId=86ce7354-c80f-42df-8043-7aaf4b1d7d68&id=30bc78e4-1d39-4496-8cbc-d6ca840926c3

    • 沙箱测试:

      https://docs.open.fulu.com/apitest?catalogueId=52615a59-7362-4f17-86b4-7fbccd310c7d&menuClass=%E5%95%86%E5%93%81API

 

二、 PHP代码封装

<?php
/**
 * Created by PhpStrom
 * @author: 刘阳<liucysun@163.com>
 * User: LiuYang
 * Date: 2023/8/24
 * Time: 14:39
 */

/**
 * Class ThirdPartyService
 * 调用第三方服务
 * 使用方式:
 *  (new ThirdPartyService)
 *      ->setApiUrl("https://www.baidu.com") // 设置地址
 *      ->setMethod() // 设置请求方式
 *      ->setHeaders() // 设置header头
 *      ->sendRequest(); // 发送请求
*
* 或者使用以下方法调用
* $obj = new ThirdPartyService();
* $obj->setApiUrl("https://www.baidu.com")
* $obj->sendRequest(); // 发送请求
*/ class ThirdPartyService { private $apiUrl; private $method = 'POST'; private $headers = []; private $proxy; public function __construct() {} /** * 设置第三方请求地址 * @param string $apiUrl */ public function setApiUrl(string $apiUrl){ $this->apiUrl = $apiUrl; } /** * 设置请求方式 * @param string $method */ public function setMethod(string $method){ if(in_array($method,['GET', 'POST', 'PUT', 'DELETE'])){ $this->method = $method; } } /** * 设置请求头 * @param array $headers array( 'Content-Type: application/json', 'Authorization: Bearer your-token' ) */ public function setHeaders(array $headers){ $this->headers = $headers; } /** * 设置请求代理地址 * @param string $proxy */ public function setProxy(string $proxy){ $this->proxy = $proxy; } /** * 请求第三方服务 * @param array $requestData * @param object $obj * @param string $fun * @return mixed */ public function sendRequest(array $requestData, object $obj, string $fun = 'commonParam') { // 构建请求参数 $requestParams = ($obj)->$fun($requestData); // 发送请求 $response = $this->makeRequest($this->apiUrl, $requestParams); // 处理响应 $responseData = $this->processResponse($response); return $responseData; } /** * 发起请求 * @param string $url * @param array $params * @return bool|string */ private function makeRequest(string $url, array $params) { // 发送 HTTP 请求,可以使用 cURL 或其他 HTTP 请求库 // 假设使用 cURL 发送请求 $ch = curl_init(); if ($this->headers) { // 若 $headers 存在,则设置为请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); // 添加请求地址 if ($this->method == 'GET') { $urlParamStr = $this->getParamStr($params, 1); } elseif ($this->method == 'POST') { $urlParamStr = $this->getParamStr($params, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 3); // 设置3秒超时限制防止死循环 }else{ $urlParamStr = $params; } curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $this->method);// 请求方式 'GET', 'POST', 'PUT', 'DELETE' // curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $urlParamStr); // 提交的数据包 if($this->proxy){ curl_setopt($ch, CURLOPT_PROXY, $this->proxy);// 请求代理 'http://proxy.example.com:8080' } $response = curl_exec($ch); // 请求执行 // 处理请求中的错误 if (curl_errno($ch)) { return json_encode(['code' => curl_errno($ch), 'msg' => curl_error($ch), 'data' => $response], JSON_UNESCAPED_UNICODE); } curl_close($ch); // 关闭cURL请求 return $response; } /** * 处理响应数据 * @param $response * @return mixed */ private function processResponse($response) { // 处理响应数据,根据实际情况解析 JSON、XML 等格式的数据 // 假设响应数据是 JSON 格式 $responseData = json_decode($response, true); return $responseData; } /** * @param array $params 参数数组 * @param int $type 参数构造类型:1:queryString 2:json * @return string */ private function getParamStr(array $params, int $type = 1):string { if (!$params) { return ''; } $paramStr = ''; if ($type == 1) { $paramArr = []; foreach ($params as $filed => $val) { $paramArr[] = $filed . '=' . $val; } $paramStr = implode('&', $paramArr); } elseif ($type == 2) { $paramStr = json_encode($params, true); } return $paramStr; } } /** * Class Common * 定义公共参数 */ class Common{ // 福禄网络-AppKey const FU_LU_APP_KEY = 'i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB'; // 福禄网络-AppSecret const FU_LU_APP_SECRET = '0a091b3aa4324435aab703142518a8f7'; // 福禄网络-MemberCode const FU_LU_MEMBER_CODE = '9000358'; // 测试/生产环境IP:47.110.196.112、118.31.170.160 const FU_LU_URL = 'https://pre-openapi.fulu.com/api/getway'; // 福禄网路-错误码-自定义错误码替换福禄平台状态吗 const FU_LU_RET_DIC = [ 0 => ['code' => 0, 'msg' => '接口调用成功',], 1000 => ['code' => 100071000, 'msg' => '必须传入API接口名称',], 1001 => ['code' => 100071001, 'msg' => '无效的API接口名称',], 1002 => ['code' => 100071002, 'msg' => '必须传入时间戳',], 1003 => ['code' => 100071003, 'msg' => '时间戳格式错误',], 1004 => ['code' => 100071004, 'msg' => '时间戳已超过有效期',], 1005 => ['code' => 100071005, 'msg' => '必须传入app_key',], 1006 => ['code' => 100071006, 'msg' => '无效的app_key',], 1007 => ['code' => 100071007, 'msg' => '必须传入版本号',], 1008 => ['code' => 100071008, 'msg' => '版本号错误',], 1009 => ['code' => 100071009, 'msg' => '必须传入format格式',], 1010 => ['code' => 100071010, 'msg' => 'format格式错误',], 1011 => ['code' => 100071011, 'msg' => '必须传入编码格式',], 1012 => ['code' => 100071012, 'msg' => '编码格式错误',], 1013 => ['code' => 100071013, 'msg' => '必须传入签名加密类型',], 1014 => ['code' => 100071014, 'msg' => '签名加密类型错误',], 1015 => ['code' => 100071015, 'msg' => '必须传入签名',], 1016 => ['code' => 100071016, 'msg' => '签名错误',], 1017 => ['code' => 100071017, 'msg' => '必须传入请求参数集合',], 1018 => ['code' => 100071018, 'msg' => '缺少必要参数',], 1019 => ['code' => 100071019, 'msg' => '访问IP不在IP白名单内',], 2000 => ['code' => 100072000, 'msg' => '商户不存在',], 2001 => ['code' => 100072001, 'msg' => '商户已被禁用',], 2002 => ['code' => 100072002, 'msg' => '无效的商户或应用',], 2003 => ['code' => 100072003, 'msg' => '商户或应用配置异常',], 2004 => ['code' => 100072004, 'msg' => '商户余额不足',], 2114 => ['code' => 100072114, 'msg' => '必须传入对账单获取单号',], 2115 => ['code' => 100072115, 'msg' => '必须传入对账单主题',], 2116 => ['code' => 100072116, 'msg' => '对账单主题格式错误',], 2117 => ['code' => 100072117, 'msg' => '必须传入账单类型',], 2118 => ['code' => 100072118, 'msg' => '账单类型错误',], 2119 => ['code' => 100072119, 'msg' => '对账单excel列头错误',], 2120 => ['code' => 100072120, 'msg' => '必须传入开始时间和结束时间',], 2121 => ['code' => 100072121, 'msg' => '开始时间或结束时间错误',], 3000 => ['code' => 100073000, 'msg' => '必须传入商品编号',], 3001 => ['code' => 100073001, 'msg' => '商品不存在或无法购买',], 3002 => ['code' => 100073002, 'msg' => '商品已下架',], 3003 => ['code' => 100073003, 'msg' => '商品维护中',], 3004 => ['code' => 100073004, 'msg' => '商品在维护期内',], 3005 => ['code' => 100073005, 'msg' => '商品库存不足',], 3006 => ['code' => 100073006, 'msg' => '必须传入商品模板编号',], 3007 => ['code' => 100073007, 'msg' => '商品模板不存在',], 3008 => ['code' => 100073008, 'msg' => '商品类型错误',], 3009 => ['code' => 100073009, 'msg' => '商品异常,商品库存状态无法查询',], 4000 => ['code' => 100074000, 'msg' => '必须传入外部订单号',], 4001 => ['code' => 100074001, 'msg' => '购买数量必须大于0',], 4002 => ['code' => 100074002, 'msg' => '必须传入充值账号',], 4003 => ['code' => 100074003, 'msg' => '充值账号不是手机号',], 4004 => ['code' => 100074004, 'msg' => '充值账号在黑名单中',], 4005 => ['code' => 100074005, 'msg' => '充值面值(数额)必须大于0',], 4008 => ['code' => 100074008, 'msg' => '添加订单失败',], 4009 => ['code' => 100074009, 'msg' => '执行下单超时,请查单确认下单结果',], 4010 => ['code' => 100074010, 'msg' => '外部订单号已存在',], 4011 => ['code' => 100074011, 'msg' => '订单不存在',], 4012 => ['code' => 100074012, 'msg' => '查询异常,请重试',], 5000 => ['code' => 100075000, 'msg' => '系统异常,订单可疑',], 5001 => ['code' => 100075001, 'msg' => '系统异常',], ]; // 福禄网路-API接口地址 const FU_LU_REQUEST_URI = [ 101 => 'fulu.user.info.get', //获取用户信息接口 201 => 'fulu.goods.list.get', //获取商品列表接口 202 => 'fulu.goods.info.get', //获取商品信息接口 203 => 'fulu.goods.template.get', //获取商品模板接口 204 => 'fulu.goods.stock.check', //商品库存校验接口 301 => 'fulu.order.direct.add', //直充下单接口 302 => 'fulu.order.card.add', //卡密下单接口 303 => 'fulu.order.mobile.add', //话费下单接口 304 => 'fulu.order.info.get', //订单查询接口 305 => 'fulu.order.extend.get', //订单扩展信息查询接口 306 => 'fulu.order.record.get', //对账单申请接口 401 => 'fulu.alipay.applet.pay', //支付宝小程序支付接口 402 => 'fulu.alipay.app.pay', //支付宝App支付接口 403 => 'fulu.alipay.h5.pay', //支付宝H5支付接口 404 => 'fulu.alipay.h5.query', //支付宝查单接口 405 => 'fulu.alipay.h5.refund', //支付宝退款接口 406 => 'fulu.alipay.refund.query', //支付宝退款查询接口 411 => 'fulu.wechatpay.applet.pay', //微信小程序支付接口 412 => 'fulu.wechatpay.h5.pay', //微信H5支付接口 413 => 'fulu.wechatpay.h5.query', //微信查单接口 414 => 'fulu.wechatpay.h5.refund', //微信退款接口 415 => 'fulu.wechatpay.refund.query', //微信退款查询接口 501 => 'fulu.market.qqnickname.get', //QQ昵称查询接口 502 => 'fulu.aiqiyi.user.check', //爱奇艺用户身份校验接口 503 => 'fulu.mobile.maintain.check', //话费维护状态检查接口 504 => 'fulu.mobile.info.get', //手机号归属地接口 ]; } /** * Class FuLuAPi * 福禄网路接口类封装 */ class FuLuAPi{ private $methodUri; /** * 设置接口地址 * @param string $methodUri 'fulu.goods.list.get' */ public function setMethodUri(string $methodUri){ $this->methodUri = $methodUri; } /** * 福禄网络签名 * @param $params * @return string */ private function getSign(array $params):string { //签名步骤一:把字典json序列化 $json = json_encode( $params, 320 ); //签名步骤二:转化为数组 $jsonArr = $this->mb_str_split( $json ); //签名步骤三:排序 sort( $jsonArr ); //签名步骤四:转化为字符串 $string = implode( '', $jsonArr ); //签名步骤五:在string后加入secret $string = $string . Common::FU_LU_APP_SECRET; //签名步骤六:MD5加密 $result_ = strtolower( md5( $string ) ); return $result_; } /** * 可将字符串中中文拆分成字符数组 */ private function mb_str_split($str){ return preg_split('/(?<!^)(?!$)/u', $str ); } /** * 获取福禄请求参数 * @param array $bizContentArr * @return string[] */ public function commonParam( array $bizContentArr){ $bizContent = $bizContentArr ? json_encode($bizContentArr, true) : '{}'; $data = [ // @todo 福禄网络 'app_key' => Common::FU_LU_APP_KEY, 'method' => $this->methodUri,//'fulu.goods.list.get' 'timestamp' => date('Y-m-d H:i:s', time()), 'version' => '2.0', 'format' => 'json', 'charset' => 'utf-8', 'sign_type' => 'md5', 'app_auth_token' => '', 'biz_content' => $bizContent, ]; $data['sign'] = $this->getSign($data); return $data; } } /** * Class FuLu * 使用福禄网络方法的调用 */ class FuLu{ /** * @var ThirdPartyService 基础数据 AppKey:i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB AppSecret:0a091b3aa4324435aab703142518a8f7 MemberCode:9000358 商户名称:OpenApi2.0对接专用商户 测试/生产环境IP:47.110.196.112、118.31.170.160 直充接口相关 测试商品: 1、10000586 视频/文娱直充测试商品-返回充值成功 2、10000585 视频/文娱直充测试商品-返回充值失败 3、10000586 网游直充测试商品(不带区服)-返回充值成功 4、10000585 网游直充测试商品(不带区服)-返回充值失败 5、10000589 网游直充测试商品(带区服)-返回充值成功 6、10000588 网游直充测试商品(带区服)-返回充值失败 7、10000000 视频/文娱直充测试商品-接口请求失败 错误码:3001(商品不存在或无法购买) 8、12080016 视频/文娱直充测试商品-接口请求失败 错误码:3002(商品已下架) 注意:直充类订单需按照对应商品才能返回“充值成功”、“充值失败”状态。 卡密接口相关 测试商品: 1、10000587 卡密测试商品-返回卡号、字符串卡密 2、11865227 卡密测试商品-返回卡号、链接卡密 3、15325315 卡密测试商品-返回无卡号、字符串卡密 4、11209851 卡密测试商品-返回无卡号、链接卡密 话费接口相关 手机账号:15972368779 面值:100 注:此账号+面值下单,订单状态默认返回“充值成功”状态。 手机账号:15972368779 面值:50 注:此账号+面值下单,订单状态默认返回“充值失败”状态。 流量接口相关 手机账号:15972368779 流量大小:1024 流量性质:4 注:此账号+流量大小+流量性质下单,订单状态默认返回“充值成功”状态。 手机账号:13971553804 流量大小:1024 流量性质:4 注:此账号+流量大小+流量性质下单,订单状态默认返回“充值失败”状态。 文档地址:https://docs.open.fulu.com/home * 产品介绍:https://docs.open.fulu.com/apiDocument?productSolutionId=86ce7354-c80f-42df-8043-7aaf4b1d7d68&id=276259e0-7508-4721-a51b-a0de43998966 * */ private $thirdObj; private $thisObj; const RET_ORDER_STATUS = [ 'failed' => [ 'code' => 0, 'msg' => "充值失败", // 充值失败 'state' => "failed", ], 'untreated' => [ 'code' => 101, 'msg' => "未处理", // 未处理 'state' => "untreated", ], 'success' => [ 'code' => 0, 'msg' => "充值成功", // 充值成功 'state' => "success", ], 'processing' => [ 'code' => 102, 'msg' => "处理中", // 处理中 'state' => "processing", ], ]; public function __construct(){ // 设置当前时区 ini_set('date.timezone','PRC'); // 创建 ThirdPartyService 实例 $this->thirdObj = new ThirdPartyService(); // 设置请求地址 $this->thirdObj->setApiUrl(Common::FU_LU_URL); // 设置请求头 $this->thirdObj->setHeaders(['Content-Type: application/json']); // 设置福禄网络请求 $this->thisObj = new FuLuAPi; } /** * 获取用户信息 * @return array|mixed */ public function user_info_get(){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[101]); // 发送请求并获取响应 $requestData = array( // 请求数据 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理响应数据 return $responseData; } /** * 获取商品列表 * @return array|mixed */ public function goods_list_get(){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[201]); // 发送请求并获取响应 $requestData = array( // 请求数据 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理响应数据 return $responseData; } /** * 获取商品详情 * @param int $productId 10000415 * 测试成功的商品:10000413,10000415,10000416,10000420,10000422,10000423,10000426,10000430 * 10000000 视频/文娱直充测试商品-接口请求失败 错误码:3001(商品不存在或无法购买) * 12080016 视频/文娱直充测试商品-接口请求失败 错误码:3002(商品已下架) * @return array|mixed * stock_status 库存状态:断货、警报、充足(商品接口显示的商品都是非断货状态的商品,断货商品会自动下架) * sales_status 销售状态:下架、上架、维护中、库存维护(商品信息接口显示的商品都是上架状态的商品) */ public function goods_info_get(int $productId){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[202]); // 发送请求并获取响应 $requestData = array( // 请求数据 "product_id" => $productId,//商品编号 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理响应数据 return $responseData; } /** * 查询商品库存 * @param int $productId * @param int $num * @return array|mixed * stock_status 库存状态:断货、充足(商品接口显示的商品都是非断货状态的商品,断货商品会自动下架) */ public function goods_stock_check(int $productId, int $num = 1){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[204]); // 发送请求并获取响应 $requestData = array( // 请求数据 "buy_num" => $num,//购买数量 "product_id" => $productId,//商品编号 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理响应数据 return $responseData; } /** * 直冲下单接口 * @param int $productId //福禄平台订单号,可以从商品列表中获取 * @param string $orderId // 外部订单号 * @param string $mobile // 充值手机号 * @return array|mixed * order_state 订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理) */ public function order_direct_add(int $productId, string $orderId, string $mobile){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[301]); // 发送请求并获取响应 $requestData = array( // 请求数据 "product_id" => $productId,//商品编号 "customer_order_no" => $orderId,//外部订单号 "charge_account" => $mobile,//充值账号 "buy_num" => "1",//购买数量 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // // 处理订单状态,如果失败返回订单失败错误码 // if(self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]){ // return self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]; // } // 处理响应数据 return $responseData; } /** * 卡密下单接口 * 测试商品: 1、10000587 卡密测试商品-返回卡号、字符串卡密 2、11865227 卡密测试商品-返回卡号、链接卡密 3、15325315 卡密测试商品-返回无卡号、字符串卡密 4、11209851 卡密测试商品-返回无卡号、链接卡密 * @param int $productId //福禄平台订单号,可以从商品列表中获取 * @param string $orderId // 外部订单号 * @return array|mixed * order_state 订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理) */ public function order_card_add(int $productId, string $orderId){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[302]); // 发送请求并获取响应 $requestData = array( // 请求数据 "product_id" => $productId,//商品编号 "customer_order_no" => $orderId,//外部订单号 "buy_num" => "1",//购买数量 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // // 处理订单状态,如果失败返回订单失败错误码 // if(self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]){ // return self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]; // } // 处理响应数据 return $responseData; } /** * 话费下单接口 * 测试手机号 手机账号:15972368779 面值:100 注:此账号+面值下单,订单状态默认返回“充值成功”状态。 * ------------------------------------------------ 手机账号:15972368779 面值:50 注:此账号+面值下单,订单状态默认返回“充值失败”状态。 * @param string $orderId * @param string $mobile * @param float $price * @return array|mixed * order_state 订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理) */ public function order_mobile_add(string $orderId, string $mobile, float $price){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[303]); // 发送请求并获取响应 $requestData = array( // 请求数据 "charge_phone" => $mobile,//充值手机号 "charge_value" => $price,//充值金额 "customer_order_no" => $orderId,//外部订单号 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // // 处理订单状态,如果失败返回订单失败错误码 // if(self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]){ // return self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]; // } // 处理响应数据 return $responseData; } /** * 查询订单处理状态 * @param string $orderId // 外部订单号 * @return array|mixed * order_state 订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理) */ public function order_info_get(string $orderId){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[304]); // 发送请求并获取响应 $requestData = array( // 请求数据 "customer_order_no" => $orderId,//商品编号,外部订单号 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理订单状态,如果失败返回订单失败错误码 if(self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]){ return self::RET_ORDER_STATUS[$responseData["result"]["order_state"]]; } // 处理响应数据 return $responseData; } /** * 查询手机号归属地 * @param $phone * @return array|mixed */ public function mobile_info_get($phone){ // 设置接口地址 $this->thisObj->setMethodUri(Common::FU_LU_REQUEST_URI[504]); // 发送请求并获取响应 $requestData = array( // 请求数据 "phone" => $phone, // 手机号 ); $responseData = $this->thirdObj->sendRequest($requestData, $this->thisObj); // 校验错误码,如果存在错误信息,抛出自定义信息 if($responseData["code"]){ return Common::FU_LU_RET_DIC[$responseData["code"]]; } //如果返回成功,处理返回的数据result字段 $responseData["result"] = json_decode($responseData["result"], true); // 处理响应数据 return $responseData; } } /** * 执行使用类包进行测试 */ // 获取用户信息 //$retData = (new FuLu())->user_info_get(); //var_dump($retData);die; // 获取商品列表 //$retData = (new FuLu())->goods_list_get(); //var_dump($retData); // 获取商品列表 // 10000413,10000415,10000416,10000420,10000422,10000423,10000426,10000430 // 10000000(商品不存在),12080016(商品下架) //$retData = (new FuLu())->goods_info_get(12080016); //var_dump($retData); //// 获取商品库存 //$retData = (new FuLu())->goods_stock_check(10000413, 1); //var_dump($retData); // 直冲下单 //$retData = (new FuLu())->order_direct_add(10000413, '12345', '15600779070'); //var_dump($retData); // 卡密下单 //$retData = (new FuLu())->order_card_add(10000587, '202308251001'); //var_dump($retData); // 话费下单 10000532, //$retData = (new FuLu())->order_mobile_add('202308251003', '15972368779', '50'); //var_dump($retData); // 订单状态查询 while(1){ $retData = (new FuLu())->order_info_get('202308251003'); if(!$retData["code"]) die($retData["msg"]); sleep(3); // 执行完毕睡眠3秒,降低访问压力 var_dump($retData); } // 手机号归属地查询 //$retData = (new FuLu())->mobile_info_get('18737306903'); //var_dump($retData);

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-08-25 16:27  四季青年  阅读(188)  评论(0编辑  收藏  举报