【支付系统】java springboot 通过ip获取所在地城市信息

11 篇文章 ¥159.90 ¥299.90

         如果只是想知道如何通过ip获取所在地城市信息,可直接看第三步.

        如果搭建自己的支付平台,异地支付限制是必不可少的一环.因为市面上一些非法份子,会使用我们平台生成的付款码进行欺诈行为.这也是我们必须杜绝的一种现象.因此限制异地支付就是其中一种手段.

        在上一篇文章【三方支付】java如何获取请求的来源ip 我们可以获取到用户发起支付时的ip,我们只需要再获取到用户扫码时的ip进行对比,即可知道当前是否为异地支付.当然我们不能直接对比ip,因为用户通常使用pc端发起支付获取付款码,而支付时采用的是移动端.两端未必处于同一个网络,因此ip也是不同的.

  •         第一步,如果我们接入是三方支付,通常三方支付会返回给我们一个二维码地址,或者收银台地址,这时候用户扫码时进入的就是三方支付的支付页面,我们是无法获取到用户ip的,这时候我们需要做的便是生成自己的二维码,用户扫描二维码进入是我们自己的页面(也可以是接口,获取ip之后直
Spring Boot获取响应头中的IP地址可以通过以下方式实现。首先,您可以使用`HttpServletRequest`对象来获取请求的IP地址。在Spring Boot中,可以通过注入`HttpServletRequest`对象来获取它。然后,您可以使用`getHeader`方法来获取请求头中的IP地址。例如,以下代码片段展示了如何获取响应头中的IP地址: ```java @Autowired private HttpServletRequest request; public String getIpAddress() { String ipAddress = request.getHeader("X-Forwarded-For"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_CLIENT_IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); } return ipAddress; } ``` 请注意,由于代理服务器的存在,请求头中的IP地址可能会被修改或隐藏。因此,上述代码中的`getIpAddress`方法尝试从多个请求头中获取IP地址,以确保获取到正确的IP地址。 引用\[1\]中的代码片段展示了如何使用`IpUtil`和`Ip2Region`来获取IP地址对应的省份信息。您可以根据实际情况进行调整和使用。 引用\[2\]中提到了一种使用网络API来查询IP地址归属地的方法。您可以使用淘宝的IP地址库API或纯真IP地址库API来查询IP地址的归属地。这些API提供了查询IP地址归属地的接口,您可以使用HTTP协议来调用这些接口,并从响应中解析出IP地址的归属地。 引用\[3\]中提到了对比IP所在城市信息的步骤。通过获取发起支付时的IP和扫码时的IP,您可以使用IP对应的城市进行对比。目前市面上有很多通过IP获取城市的开放接口,您可以选择使用收费的接口,如百度地图、高德地图,或者购买阿里云市场上的IP库来获取IP地址对应的城市信息。 综上所述,您可以使用上述方法来在Spring Boot获取响应头中的IP地址,并根据需要进行IP地址归属地的查询和对比。 #### 引用[.reference_title] - *1* *3* [【支付系统java springboot 通过ip获取所在地城市信息](https://blog.youkuaiyun.com/qq_39078783/article/details/131123898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [springboot获取IP归属地](https://blog.youkuaiyun.com/weixin_35756690/article/details/129453664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸渔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值