PHP做支付接口时常用到的函数代码

更新时间:2020年05月08日 11:08:33
人气:109
分类: PHP
PHP做支付接口时常用到的函数代码
1、getsign签名时经常要用到的字符串按A-Z的排序
 function getSign($secret, $data) {
    $data = array_filter($data);
    ksort($data);
    $string_a = http_build_query($data);
    $string_a = urldecode($string_a);
    $string_sign_temp = $string_a . "&key=" . $secret;
    $sign = md5($string_sign_temp);
    $result = strtoupper($sign);
    return $result;
}
2、verifysign签名时经常要用到回调验签
function verifySign($data, $secret) {
    // 验证参数中是否有签名
    if (!isset($data['sign']) || !$data['sign']) {
        return false;
    }
    // 要验证的签名串
    $sign = $data['sign'];
    unset($data['sign']);
    // 生成新的签名、验证传过来的签名
    $sign2 = getSign($secret, $data);
    if ($sign != $sign2) {
        return false;
    }
    return true;
}
3.CURL JSON数据格式提交
function curlPost($payApi, $json) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $payApi);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST,true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Content-Length: ' . strlen(json_encode($json,true))
        ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json,true));
    $result = curl_exec($ch);
    if(curl_errno($ch)) {
        echo 'Curl error: ', curl_error($ch), "\n";
    }
    curl_close($ch);
    return $result;
}
/* CURL请求函数 */
function http_post_data($url, $data_string) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Content-Type: application/json; charset=utf-8",
            "Content-Length: " . strlen($data_string))
        );
    ob_start();
    curl_exec($ch);
    $return_content = ob_get_contents();
    ob_end_clean();
    $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    return array($return_code, $return_content);
}
获取IP
function getIp() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
            $ip = getenv("HTTP_CLIENT_IP"); else
            if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                $ip = getenv("HTTP_X_FORWARDED_FOR"); else
                if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                    $ip = getenv("REMOTE_ADDR"); else
                    if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                        $ip = $_SERVER['REMOTE_ADDR']; else
                        $ip = "unknown";
    return ($ip);
}
随机手机号码
function randomMobile($n) {
    $tel_arr = array(
                '130','131','132','133','134','135','136','137','138','139','144','147','150','151','152','153','155','156','157','158','159','176','177','178','180','181','182','183','184','185','186','187','188','189',
            );
    for ($i = 0; $i < $n; $i++) {
        $tmp[] = $tel_arr[array_rand($tel_arr)].mt_rand(1000,9999).mt_rand(1000,9999);
        // $tmp[] = $tel_arr[array_rand($tel_arr)].'xxxx'.mt_rand(1000,9999);
    }
    return array_unique($tmp);
}
表单正在跳转付款页
 function createForm($url, $data,$method) {
    $str = '<!doctype html>
            <html>
                <head>
                    <meta charset="utf8">
                    <title>正在跳转付款页</title>
                </head>
                <body onLoad="document.pay.submit()">
                <form method="'.$method.'" action="' . $url . '" name="pay">';
    foreach ($data as $k => $vo) {
        $str .= '<input type="hidden" name="' . $k . '" value="' . $vo . '">';
    }
    $str .= '</form>
                <body>
            </html>';
    return $str;
}


【版权声明】

本文仅代表作者观点,不代表本站立场。本文系作者授权发表,未经许可,不得转载。

相关文章
# 在线留言