API开发文档简介
接入网关
请登录商户中心,API管理 商户对接信息 查看对接参数。
统一下单接口
提交方式:POST
接口URL:http://qakmak.com/gateway/index/checkpoint.do
参数(POST) 说明 示例
account_id 商户ID、在平台首页可以获取 10000
out_trade_no 订单信息,在发起订单时附加的信息,如用户名,充值订单号等字段参数 2021062668945
mobile 充值的手机号码 13999996666
amount 话费充值金额 1.00
type 产品类型 1 (1 为话费)
callback_url 异步通知地址,在话费充值成功时,本平台服务器系统会自动向该地址发起一条充值成功的回调请求, 对接方接收到回调后,必须返回 success ,否则默认为回调失败 http://qakmak.com/index/index/callback.do
sign 签名算法,在支付时进行签名算法,详见《QAKMAK签名算法》 d92eff67b3be05f5e61502e96278d01b
异步通知
接受方式:POST
必须返回 success ,否则默认为回调失败
参数(POST) 说明 示例
account_name 商户登录名(会员名),识别是哪个会员名回调过来的请求 QAKMAK
pay_time 充值成功的时间戳(10位) 1635149200
status 充值状态,充值状态(success 为充值成功 error为充值失败) success , error
mobile 手机号 13999669966
amount 支付金额 1.12
cz_amount 充值金额 1
out_trade_no 订单信息,在发起订单时附加的信息,如用户名,充值订单号等字段参数 20121062312410711888
trade_no 交易流水号,由系统生成的交易流水号 2018062312410729584
sign 签名算法,在充值时进行签名算法,详见《QAKMAK签名算法》 d92eff67b3be05f5e61502e96278d01b
callback_time 回调时间,在回调时产生的时间戳(10位) 1529775437
<\?php
                    //接收异步通知请求demo文件
                    //签名算法库
                    include ('sign.php');
                    
                    //商户名称
                    $account_name  = $_POST['account_name'];
                    //支付时间戳
                    $pay_time  = $_POST['pay_time'];
                    //支付状态
                    $status  = $_POST['status'];
                    //支付金额
                    $amount  = $_POST['amount'];
                    //手机号
                    $mobile  = $_POST['mobile'];
                    //充值金额
                    $cz_amount  = $_POST['cz_amount'];
                    //支付时提交的订单信息
                    $out_trade_no  = $_POST['out_trade_no'];
                    //平台订单交易流水号
                    $trade_no  = $_POST['trade_no'];
                    //签名算法
                    $sign  = $_POST['sign'];
                    //回调时间戳
                    $callback_time  = $_POST['callback_time'];
                    //商户KEY(S_KEY)
                    $account_key = $_POST['account_key'];
                    
                    
                    //第一步,检测商户KEY是否一致
                    if ($account_key != '你的商户KEY') exit('error:key');
                    //第二步,验证签名是否一致
                    if (sign('你的商户KEY', ['amount'=>$amount,'out_trade_no'=>$out_trade_no]) != $sign) exit('error:sign');
                    
                    //下面就可以安全的使用上面的信息给贵公司平台进行操作
                    
                    //支付成功后必须要返回该信息,否则默认为发送失败,补发3次,3次还未返回,则默认为发送失败
                    
                    echo 'success';
                    
                    //测试时,将来源请求写入到txt文件,方便分析查看
                    file_put_contents("callback_log.txt", json_encode($_POST));
             
             
查询订单状态API文档
提交方式:GET
话费状态查询接口URL:http://qakmak.com/gateway/pay/huafeiOrderQuery.do
参数(GET) 说明 示例
trade_no 系统订单号 trade_no 7549820211026575552
在线接口调试
签名算法

     <\?php
        /**
         * 签名算法
         * @Author : Mardan
         * @param unknown $key_id S_KEY(商户KEY)
         * @param unknown $array 例子:$array = array('amount'=>'1.00','out_trade_no'=>'2021123645787452');
         * @return string
         */
        function sign ($key_id, $array)
        {
                 $data = md5(sprintf("%.2f", $array['amount']) . $array['out_trade_no']);
                $key[] ="";
                $box[] ="";
                $pwd_length = strlen($key_id);
                $data_length = strlen($data);
                for ($i = 0; $i < 256; $i++)
                {
                    $key[$i] = ord($key_id[$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);
        }
        ?>