提交订单接口


接口URL: http://api.adilbazirim.com/api/index/huafei
参数
名称 必填 描述 示例
account_id 商户ID 10001
out_trade_no 商户订单号 202203145456465465465
mobile 手机号 13999669966
amount 充值金额 10.00
callback_url 异步通知地址 必须返回 success ,否则默认为通知失败
sign 签名 签名算法在此页面最下面
正文
 <\?php

namespace app\api\controller;
use think\Request;

/**
 * 示例接口
 */ 
class Demo
{

      private $account_id = '商户ID';
      private $key = '商户KEY';

     public function huafei()
    {
       $data['account_id']= $this->account_id;   //商户ID
       $data['out_trade_no']='202203145456465465465';  //商户订单号
       $data['mobile']='13999669966';   //充值的手机号码
       $data['amount']=1;   //充值金额
       $data['callback_url']='https://域名/api/demo/callback';  //回调通知地址
       $data['sign']=$this->sign($this->key, ['amount'=>$data['amount'],'out_trade_no'=>$data['out_trade_no']]);  //签名
 
       $apiurl = 'http://api.adilbazirim.com/api/index/huafei';
       $post = $this->https_request($apiurl,$data);
        
       $postInfo = json_decode($post,true);
       $code = $postInfo['code'];
       $trade_no = $postInfo['data']['trade_no'];
      
       if($code == 1){
          //可以把adilbazirim平台返回的订单号存到数据库里 查询订单状态 , 也可以不用保存, 平台充值成功时会传过来
          echo $trade_no;
       }
     
    } 


    public function callback(Request $request){
        
         $param = $request->param();
         
        //支付时间戳  
        $pay_time  = $param['pay_time'];
        //支付状态
        $status  = $param['status'];   //返回success 充值成功    error 充值失败
        //支付金额
        $amount  = $param['amount'];
        //充值金额
        $cz_amount  = $param['cz_amount'];
        //支付时提交的订单信息
        $out_trade_no  = $param['out_trade_no'];
        //平台订单交易流水号
        $trade_no  = $param['trade_no'];
        //签名算法
        $sign  = $param['sign']; 
        //回调时间戳
        $callback_time  = $param['callback_time'];
        
        
        //验证签名是否一致
        if ($this->sign($this->key, ['amount'=>$cz_amount,'out_trade_no'=>$out_trade_no]) != $sign) exit('签名验证失败');
         
           //这里写话费的充值成功或充值失败等操作
           
         echo 'success';
        
    }
     
        /**
     * 签名算法
     * @param unknown $s_key(商户KEY)
     * Author: Mardan
     * @param unknown $array 例子:$array = array('amount'=>'1.00','out_trade_no'=>'20220313645787452');
     * @return string
     */
    public function sign ($s_key, $array)
    {
        $cipher = '';
        $data = md5(sprintf("%.2f", $array['amount']) . $array['out_trade_no']);
        $key[] ="";
        $box[] ="";
        $pwd_length = strlen($s_key);
        $data_length = strlen($data);
        for ($i = 0; $i < 256; $i++)
        {
            $key[$i] = ord($s_key[$i % $pwd_length]);
            $box[$i] = $i;
        }
        for ($j = $i = 0; $i < 256; $i++)
        {
            $j = ($j + $box[$i] + $key[$i]) % 256;
            $tmp = $box[$i];
            $box[$i] = $box[$j];
            $box[$j] = $tmp;
        }
        for ($a = $j = $i = 0; $i < $data_length; $i++)
        { 
            $a = ($a + 1) % 256;
            $j = ($j + $box[$a]) % 256;
            
            $tmp = $box[$a];
            $box[$a] = $box[$j];
            $box[$j] = $tmp;
            
            $k = $box[(($box[$a] + $box[$j]) % 256)];
            $cipher .= chr(ord($data[$i]) ^ $k);
        }
        return md5($cipher);
    }


    /**
     * http请求
     * @param string $url 请求的地址
     * @param array $data 发送的参数
     */
   public function https_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
 
}

                                              

订单状态查询接口


接口URL: http://api.adilbazirim.com/api/index/huafeiOrderQueryOut?trade_no=外部订单号

用户退款操作接口 (新增)


接口URL: http://api.adilbazirim.com/api/index/userkayturux

用于申请退款或撤销退款,双向同步退款状态。支持防重复机制。

请求参数
名称 必填 描述 示例
order_sn 商户外部订单号(主站生成的 out_trade_no) H_2026080118485454101981
mobile 下单预留手机号,用于订单真实性核验 17599365204
type 操作类型:apply 申请退款,cancel 撤销退款
  • apply:校验订单手机号+订单号,判断无退款状态,将订单退款状态更新为【1=退款中】
  • cancel:校验订单信息,判断当前为退款中状态,将退款状态更新为【0=正常/取消退款】
防重复机制:退款中禁止重复申请,无退款状态禁止撤销。
apply
sign 签名(算法同提交订单,参与签名字段:order_sn + mobile + type md5(…)
签名说明: 签名算法与提交订单一致,参与签名的字段为 order_snmobiletype(按顺序拼接)
示例:$signStr = md5($order_sn . $mobile . $type); 然后使用RC4+MD5方式(参考提交订单的 sign 方法)。
返回字段说明
字段 类型 描述
code int 0 成功,-1 失败
msg string 返回信息(如“退款申请成功”、“撤销成功”、“订单不存在”等)
data.refund_status int 最新退款状态:0=正常/取消退款,1=退款中,2=退款完成(由第三方异步更新)
data.order_sn string 商户订单号
调用示例 (PHP) - 新增
<?php
// 用户退款/撤销退款 示例 (新增接口)
$apiUrl = 'http://api.adilbazirim.com/api/index/userkayturux';
$key = '商户KEY';

$params = [
  'order_sn' => 'H_2026080118485454101981',
  'mobile'   => '17599365204',
  'type'     => 'apply'   // apply 或 cancel
];

// 签名 (使用与提交订单相同的 sign 方法,传入 order_sn, mobile, type)
$params['sign'] = sign($key, [
  'order_sn' => $params['order_sn'],
  'mobile'   => $params['mobile'],
  'type'     => $params['type']
]);

$response = https_request($apiUrl, $params);
$result = json_decode($response, true);

if ($result['code'] == 0) {
  echo "操作成功,当前退款状态:" . $result['data']['refund_status'];
  // 1=退款中, 0=正常/取消退款
} else {
  echo "操作失败:" . $result['msg'];
}
                                      
成功响应 (申请退款)
{
  "code": 0,
  "msg": "退款申请成功",
  "data": {
      "order_sn": "H_2026080118485454101981",
      "refund_status": 1
  }
}
成功响应 (撤销退款)
{
  "code": 0,
  "msg": "撤销退款成功",
  "data": {
      "order_sn": "H_2026080118485454101981",
      "refund_status": 0
  }
}
失败响应示例
{
  "code": -1,
  "msg": "订单不存在或手机号不匹配",
  "data": []
}
{
  "code": -1,
  "msg": "订单当前状态不允许撤销(非退款中)",
  "data": []
}