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

<?php
errorlog(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)) {

    1. case 'GET':
    2. if (!empty($params)) {
    3. $api .= (strpos($api, '?') ? '&' : '?') . http_build_query($params);
    4. }
    5. curl_setopt($curl, CURLOPT_HTTPGET, true);
    6. break;
    7. case 'POST':
    8. curl_setopt($curl, CURLOPT_POST, true);
    9. curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
    10. break;
    11. case 'PUT':
    12. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
    13. curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
    14. break;
    15. case 'DELETE':
    16. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
    17. curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
    18. 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) {

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

    }

    curl_close($curl);

    return $response;
    }

更多相关文章

  1. ubuntu 15.04下mysql开放远程3306端口
  2. linux下mysql开启远程访问权限 防火墙开放3306端口
  3. ubuntu 16.04下mysql5.7.17开放远程3306端口
  4. Android(安卓)Studio无法单点调试Connected to the target VM, a
  5. Appium - Android(安卓)对比 iOS
  6. MySQL 启动成功但未监听端口的解决方法
  7. 解决MYSQL连接端口被占引入文件路径错误的问题
  8. adb错误:Failed to execute android command 'adb devices'.
  9. mysql本地登录无法使用端口号登录的解决方法

随机推荐

  1. Android中解决手机屏幕横竖屏切换问题
  2. android SDK与ADT版本更新问题
  3. 基于 eclipse 的 android 工程如何使用 j
  4. Android系统启动流程(四)Launcher启动过程
  5. Android 自动编译、打包生成apk文件 4 -
  6. android String
  7. Android笔记 - Android启动之Launcher启
  8. android启动画面
  9. Android(安卓)textview实现删除线
  10. [置顶] Android View系统学习文章汇总