支付回调代理转发

3 篇文章 0 订阅
3 篇文章 0 订阅

某些客户为了安全  不对外完全开放域名   但支付回调需要外网可以访问   可以在不完全开放的情况下  仅开放一个端口  Nginx里配置下端口  开放端口指向的目录下新建个转发文件  文件名和原回调文件名相同即可 回调url用这个开放的端口的  下面这个是为某个客户解决这个情况时做的  客户仅使用支付宝   支付可以实现成功回调

<?php
error_log(date("c") . "\t" . 'curl请求:' . "\t" . var_export(array($_SERVER, $_GET, $_POST), 1) . "\n", 3, 'logs/curl_'.date('Y-m-d').'.log');

$domain = 'http://'.$_SERVER['SERVER_NAME'];
$uri = $_SERVER["REQUEST_URI"];
$method = $_SERVER["REQUEST_METHOD"];
$data = file_get_contents('php://input');
// echo("<pre>");print_r(array($domain.$uri, $method, $data, $headers));exit();
error_log(date("c") . "\t" . 'curl请求:' . "\t" . print_r(array($domain.$uri, $method, $data), 1) . "\n", 3, 'logs/curl_'.date('Y-m-d').'.log');
$response = curl_request($domain.$uri, $method, $data);
echo($response);

/**
 * CURL Request
 */
function curl_request($api, $method = 'GET', $params = array(), $headers = [])
{
    $curl = curl_init();

    switch (strtoupper($method)) {
        case 'GET':
            if (!empty($params)) {
                $api .= (strpos($api, '?') ? '&' : '?') . http_build_query($params);
            }
            curl_setopt($curl, CURLOPT_HTTPGET, true);
            break;
        case 'POST':
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);

            break;
        case 'PUT':
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
            break;
        case 'DELETE':
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
            break;
    }

    curl_setopt($curl, CURLOPT_URL, $api);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_HEADER, 0);

    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

    $response = curl_exec($curl);

    if ($response === false) {
        $error = curl_error($curl);
        error_log(date("c")."\t".'curl请求失败' . json_encode($error)."\n", 3, 'logs/curl_error_'.date('Y-m-d').'.log');
        curl_close($curl);
        return false;
    }

    curl_close($curl);

    return $response;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值