支付宝微信支付时,需要配置支付的回调地址,但是更改运行环境的服务器的时候,都需要更改对应的DNS对应的IP地址,

这里做一个代理转发,第三方回调的路径不需要改变;

1.商户调用第三方接口的时候,把运行环境的地址信息(IP、端口)作为自定义参数传递给三方支付接口,第三方再拿这些参数回调的给定的url;

2.解析自定义参数中的运行服务器地址信息,做请求的转发

运行服务器的地址信息 $api.xxx.cn@101.101.101.101:8080$

<?php
$uri = $_SERVER['REQUEST_URI'];
$method = $_SERVER["REQUEST_METHOD"];
$data = file_get_contents('php://input');
$data_decode = urldecode($data);
$attach = '';
if(preg_match('/&ATTACH=([^&]*)&/', $data_decode, $match_attach) && !empty($match_attach[1])){    $attach = base64_decode($match_attach[1]);
}
if ( !preg_match('|\$(.*?)@(.*?)(?:\:(\d+))?\$|', $data, $matches)
    && !preg_match('|\$(.*?)@(.*?)(?:\:(\d+))?\$|', $data_decode, $matches)
    && !preg_match('|\$(.*?)@(.*?)(?:\:(\d+))?\$|', $attach, $matches)) {    file_put_contents('./exception.log',
        date('c')."\n"
        .$method.' '.$uri."\n"
        .$data."\n", FILE_APPEND);
    return;
}

list(,$domain, $host, $port) = $matches;

$headers = [
    "Host: $domain",
];
$headers_from_request = ['HTTP_HOST', 'HTTP_CONTENT_LENGTH'];
foreach( $_SERVER as $header => $value) {    if ( substr($header,0,5) == 'HTTP_' && !in_array($header, $headers_from_request) ) {        $header_words = explode('_', $header);
        array_shift($header_words);
        foreach($header_words as &$word) {            $word = ucfirst(strtolower($word));
        }
        $headers[] = implode('-', $header_words).': '.$value;
    }
}

file_put_contents('./request.log',
    date('c')."\n"
    .$method.' '.$uri."\n"
    .implode("\n", $headers)."\n\n"
    .$data."\n", FILE_APPEND);

$fp = fopen('./proxy.log', 'a+');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host.$uri);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;

fwrite($fp, $response);

第三方支付回调地址代理转发相关推荐

  1. QQ第三方登录回调地址的问题

    如题,维护以前的项目,发现原来QQ的第三方登录竟然失败了.回调地址的问题 原来是以前的规则变了.好吧,那就改,谁叫我不是改变规则的人. 中途浪费了点时间,项目很大,我一下也找不到项目里那个接口调用的, ...

  2. 微信支付回调地址 http https问题

    看这个帖子 https://bbs.csdn.net/topics/391937455?page=1#post-403658337 首先你得排除其他的问题 比如:地址错误,带参数,重定向了,内部报错这 ...

  3. 微信支付 回调地址哪里设置

    参考资料 JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现

  4. 支付宝微信支付回调地址访问不成功

    备忘备忘

  5. 关于支付回调的一些思考

    前段时间在工作中又一次接触到了公司关于支付相关的业务领域,于是又一次重新回顾了工作中使用的支付框架. 之前写过的很多篇文章都是先介绍整体背景,再深入到每一点去做分析,今天打算换种方式,尝试从 why ...

  6. 若依分离版整合IJpay实现第三方支付-(微信支付篇_v2)

    若依分离版整合IJpay实现第三方支付-(微信支付篇_v2) IJpay官网 https://javen205.gitee.io/ijpay/ 文章目录 若依分离版整合IJpay实现第三方支付-(微信 ...

  7. 支付宝支付回调不成功原因及解决

    问题: 1.在支付是配置了回调地址,支付成功后没有收到支付宝的回调. 定位: 1.首先访问了回调的地址,发现地址正常访问没有问题. 2.查看起调支付的日志,看到回调地址写入到支付参数中. 3.支付完成 ...

  8. 网联靴子将落地,银行将关闭第三方支付直接代扣通道

    延伸阅读:网联的前世今生 网联系统始建于2016年,是独立于现有银行间支付清算机构的新平台,该平台只有清算功能,不做支付,也不发卡.平台由各个参与方自主共建.除了央行和支付清算协会以外,其余股东股份最 ...

  9. php 微信支付 回调处理,TP微信支付(回调处理)

    1.微信支付回调 此方法从网上查找的 需要配置文件的支持 Paste_Image.png /* *微信支付 * 回调地址 notifyurl * */ public function notifyur ...

  10. 2020年第三方支付接口讲解流程分享

    一.网关支付 这是在线支付的最普遍形式. 大致支付过程:第三方支付公司作为代理(网关),接入一堆银行.用户在网关页面(可以在商户端,也可以第三方支付平台端)选择银行,页面跳转到第三方支付平台,然后重定 ...

最新文章

  1. 苹果修复iPhone漏洞突显手机安全隐忧
  2. 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
  3. win10系统U盘启动
  4. 小程序真机测试错误代码_测试不充分:知道您的代码是否真的可以投入生产的5种方法...
  5. 71.Ext.form.ComboBox 完整属性
  6. Tomcat下载安装配置详细过程
  7. java混淆工具zelix比较_Java逆向基础之混淆器
  8. php表格中的caption,HTML中的caption属性是什么意思?caption标签在HTML中的用法(附实例)...
  9. 【ECS】云服务器ECS是什么
  10. 如何理解P和NP问题
  11. 恒讯科技分析:海外云服务器的网络防火墙怎么设?
  12. C++解决一元多次不等式和多元一次不等式
  13. 【Derivation】Nyquist采样定理
  14. 码云新建仓库-代码上传
  15. 0018 求球的表面积和体积
  16. lighttpd隐藏index.php,lighttpd开启rewrite伪静态方法 - 老牛博客
  17. Ubuntu系统安装在移动固态硬盘,实现在不同电脑即插即用
  18. GhostXP_SP2电脑公司特别版_v8.5_island完美版
  19. FormData 类型
  20. 数据保护系列-敏感数据分类分级

热门文章

  1. 计量检定与计量校准证书的区别
  2. 社会学概论(本专)【1】
  3. ddr4 dqs 频率_ddr4
  4. 随便说说,我回来啦~
  5. 多列堆积柱形图怎么做_将Excel表格中数据做成多列堆积柱形图的操作步骤
  6. excel 按列拆分合并 表格操作及脚本
  7. java计算base64图片大小
  8. 淘宝刷单怎么刷?买手黑号为什么会成为黑号?
  9. win7下MyEclipse装Nutch1.7
  10. 夜神模拟器和虚拟机(docker) 在windows上设置不兼容