开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
支付产品
当面付
app支付
接入指南
基础功能
扩展功能
集成工具
api 列表
相关资料
手机网站支付
电脑网站支付
刷脸付
预授权支付
商家扣款
订单码支付
私域产品
公域产品
营销产品
资金产品
会员产品
信用产品
安全产品
广告产品
其他通用产品
开发 > 服务端 > 支付产品 > app支付 > 接入指南 >  > 用户下单 ip 获取指引
已更新
文档更新记录 >
收藏
订阅更新
我的文档
设置
接入检测
即可查看检测结果)
若有未通过的接入检测项,接口将无法调通
1 背景
支付宝支付场景需要获取用户在商家侧下单 ip(mc_create_trade_ip),用于提高支付安全性。此指引用于帮助商家获取正确且真实的 mc_create_trade_ip 字段。
注意:商家侧下单 ip 指的是在发起支付宝支付流程之前,用户在商家侧发起下单操作生成商家订单时的客户端 ip,并非请求支付宝支付网关进入支付流程后的客户端 ip。
2 用户下单 ip 获取方式
不同商家由于部署网络环境不同,获取商家侧下单 ip 的方式也存在差异,商家可以根据自身情况获取真实的用户下单 ip。常见的场景有两种分为 有代理 无代理
2.1 无代理场景
商家的网络部署环境未使用代理服务器,用户直接与商家服务端通信。这种情况较为简单直接获取客户端 ip 即可。
2.1.1 示例代码
java
复制代码
public string getmccreatetradeip(httpservletrequest request) {
string mc_create_trade_ip = "/";
if(!request.getremoteaddr().equals("")){
mc_create_trade_ip = request.getremoteaddr();
};
return mc_create_trade_ip;
}
php
复制代码
function get_mccreatetradeip(){
mc_create_trade_ip = "/";
if ($_server['remote_addr']){
$mc_create_trade_ip = $_server['remote_addr']
}elseif (getenv("remote_addr")){
$mc_create_trade_ip = getenv("remote_addr");
}
return $mc_create_trade_ip;
}
2.1.2 注意事项
当您的服务器未经过代理,商家在获取用户创单ip时,不要去获取用户请求的 http 头中 x-forwarded-forclient-ip x-client-ip x-originating-ip x-real-ipx-remote-addrx-remote-ip 等字段,而是直接获取当前跟自己建连的 ip 地址。在许多三方库中,可能会自己获取 x-forwarded-for 中的地址用来代替建连地址,从而导致ip可以被任意伪造,引起防护失效。
2.2 有代理场景
由于商家的业务需求使用代理服务器,用户先与代理服务器通信,代理服务器再访问商家服务端。这种情况下直接获取客户端 ip 会获取到代理服务器的 ip,就会出现 127.0.0.1、localhost 或者内网 ip 等情况。服务端无法获取到用户的真实 ip,可以通过配置代理服务器来记录用户的真实 ip。

存在 cdn 的情况下,检查 cdn 的配置情况,确保 cdn 可以将客户端真实 ip 正确回传,同时防止 x-forwarded-for 等字段被伪造的情况发生。
2.2.1 配置示例
nginx有代理情况配置
根据需求修改nginx配置文件,向请求头添加字段用于记录客户端真实ip。
apache有代理情况配置
其它中间件可根据需求自行配置,记录通信过程。后端服务器代码根据代理服务器部署情况获取客户端真实 ip。
2.2.2 示例代码
注意当服务器经过代理,商户在获取创单 ip 时,可判断自己真实的代理服务器 ip 在请求头中的添加情况,获取与最外层代理服务器建立通信的真实客户端 ip。如果出现 x-forwarded-for 中 ip 列表与真实情况不同很大可能是伪造的请求头参数。
3 案例说明
案例中:
无代理的情况下,如果获取的 ip 地址是 120.24.169.223 或者 120.24.169.22 或者 8.8.8.8,则代表程序中存在 bug。
有代理的情况下,如果 x-forwarded-for: 120.24.169.223,8.8.8.8 与真实网络线路路由顺序不同,证明此请求存在伪造 ip,请谨慎获取,测试确保正确后再回传。
防火墙相关也可点击查看:
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图