iOS设备限制境外定位(支付交易风险控制策略)

简介: iOS设备限制境外定位(支付交易风险控制策略)

前言

本文重点:

  • 限制商户定位至大陆以外地区

通过经纬度进行判断。利用高德SDK进行判断。(如果是手动输入位置信息就进行逆地理编码获取经纬度再进行判断

  • 优化定位权限检查的处理逻辑:针对 kCLAuthorizationStatusNotDetermined  情况的处理

用户没有选择是否要使用定位服务(弹框没选择,或者根本没有弹框)[AMapLocationKit] 要在iOS 11及以上版本使用后台定位服务, 需要实现amapLocationManager:doRequireLocationAuth: 代理方法】

I、 限制境_外定位

原理:根据经纬度判断是否在大陆地区

1.1 根据经纬度判断是否在大陆地区

  • AMapLocationDataAvailableForCoordinate
/**
 根据经纬度判断 是否在大陆地区
 */
+ (BOOL)inChineseMainlandWithCLLocation:(CLLocation *)location regeocode:(AMapLocationReGeocode *)regeocode{
    if(AMapLocationDataAvailableForCoordinate(location.coordinate)){//当前位置在大陆、港澳地区
        //香港特别行政区
//        澳门特别行政区
        /////省/直辖市
//        @property (nonatomic, copy) NSString *province;
        if([regeocode.province isEqualToString:@"香港特别行政区"] || [regeocode.province isEqualToString:@"澳门特别行政区"]){
            return NO;
        }else{
            return YES;
        }
    }else{//其他地区
        return NO;
    }
    return YES;
}

用法

CLLocation *location = [[CLLocation alloc]initWithLatitude:[array.lastObject doubleValue] longitude:[array.firstObject doubleValue]];
                AMapLocationReGeocode* regeocode = [AMapLocationReGeocode mj_objectWithKeyValues:geocodesDto.mj_keyValues];
                if([ERPAMapLocationTool inChineseMainlandWithCLLocation:location regeocode:regeocode]){
                }else{
                    [SVProgressHUD showInfoWithStatus:@"您最新定位不在支持范围内!"];
                    return;
                }
                [weakSelf locotionRequestLat:[NSNumber numberWithDouble:location.coordinate.latitude].description Lon:[NSNumber numberWithDouble:location.coordinate.longitude].description adress:weakSelf.locationView.adressTextView.text];

1.2  通过逆地理编码进行判断定位是否在大_陆

  • 逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。

例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号

  • 通过逆地理编码进行判断是否在大陆的处理流程

1、 请求https://restapi.amap.com/v3/geocode/geo把用户输入的经营地址位置信息转为经纬度信息

2、根据获取的经纬度信息再进行判断是否在大陆

/**
 通过逆地理编码进行判断是否在大陆
 */
- (void)setupGeocode{
    __weak __typeof__(self) weakSelf = self;
    if (weakSelf.locationView.adressTextView.text.length > 0) {//1、 判断经营地址信息,不为空进行逆地理编码(请求`https://restapi.amap.com/v3/geocode/geo`把用户输入的经营地址位置信息转为经纬度信息)
        [SVProgressHUD showWithStatus:@"定位中.."];
        AFHTTPSessionManager *managers = [AFHTTPSessionManager manager];
        managers.requestSerializer = [AFHTTPRequestSerializer serializer];
        managers.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain",@"application/json",@"text/javascript",nil];
  // 完成代码请看原文:https://kunnan.blog.csdn.net/article/details/119685526      
 }

完整代码请看原文:https://kunnan.blog.csdn.net/article/details/119685526

II  修改位置信息进行测试验证

方法1:借助i4Tools修改真机地址

  • 借助i4Tools
安装命令行工具代码:xcode-select --install
自签命令代码:codesign -f -s - --deep /Applications/i4Tools.app

方法2:使用模拟器修改地址

image.png

image.png

  • 测试数据
// province=香港特别行政区
 latitude=22.26429541107516
 longitude=114.18135238995905
// province=澳门特别行政区
 latitude=22.135584619138957
 longitude=113.57214697205735
2020-04-09 15:39:54.504424+0800 retail[8369:4238323] reGeocode:AMapLocationReGeocode:{formattedAddress:澳门特别行政区圣方济各堂区靠近澳门青年挑战营; country:中国;province:澳门特别行政区; city:(null); district:圣方济各堂区; citycode:1853; adcode:820008; street:(null); number:(null); POIName:澳门青年挑战营; AOIName:(null);}
121.524582,25.028822
2020-04-09 16:02:47.411507+0800 retail[8369:4238323] reGeocode:AMapLocationReGeocode:{formattedAddress:台湾省(私)私立七田真超右脑教育托儿所; country:中国;province:台湾省; city:(null); district:(null); citycode:1886; adcode:710000; street:(null); number:(null); POIName:(私)私立七田真超右脑教育托儿所; AOIName:(null);}

【获取更多经纬度数据:https://lbs.amap.com/console/show/picker

方法3:通过GPX文件修改经纬度信息

iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)

III 、 优化定位权限检查的处理逻辑

  • 优化定位权限检查的处理逻辑:主要针对iOS13访问位置信息信息新增的【下次询问】的场景):iOS 13新增App地理位置访问“仅允许一次”

测试方法:先设置【使用app时允许】,再去系统的设置修改定位信息的权限为:【下次询问】。回到app去更新定位信息。

  • 定位之前,先检测权限,如果是kCLAuthorizationStatusNotDetermined的时候,需要实现这个方法amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager,来让用户进行选择。
- (void)amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager
{
    [locationManager requestAlwaysAuthorization];
}

IV、风险商户处理

  • 盗刷拒付风险
  • 疑似欺诈、电诈、套现风险
  • 赌博、异常大额、异常测试:
  • 跨境风险

image.png

image.png

see also


目录
相关文章
|
Android开发 iOS开发 UED
探索未来:Android与iOS在智能穿戴设备上的较量
随着科技的飞速进步,智能穿戴设备已经成为我们日常生活中不可或缺的一部分。本文将深入探讨两大操作系统——Android和iOS——在智能穿戴领域的竞争与发展,分析它们各自的优势与挑战,并预测未来的发展趋势。通过比较两者在设计哲学、生态系统、用户体验及创新技术的应用等方面的差异,揭示这场较量对消费者选择和市场格局的影响。 【7月更文挑战第31天】
196 0
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
安全 数据安全/隐私保护 Android开发
探索Android与iOS的隐私保护策略
在数字时代,智能手机已成为我们生活中不可或缺的一部分,而随之而来的则是对个人隐私和数据安全的日益关注。本文将深入探讨Android与iOS两大操作系统在隐私保护方面的策略和实践,分析它们如何应对日益严峻的隐私挑战,以及用户应如何保护自己的数据安全。通过对比分析,我们将揭示两大系统在隐私保护方面的优势和不足,为用户提供有价值的见解和建议。
|
缓存 监控 Android开发
探索iOS与安卓开发中的性能优化策略
在移动应用开发的竞技场上,iOS和安卓这两大操作系统不断推动着技术的边界。性能优化,作为提升用户体验的关键因素,已成为开发者们关注的焦点。本文将深入探讨两大平台上的性能优化实践,揭示如何通过工具、技术和策略来提升应用的响应速度和流畅度,同时考虑到电池寿命和内存管理等关键指标。
|
11月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
350 3
|
前端开发 Android开发 开发者
探索Android与iOS的跨平台开发策略
在当今多元化的移动设备市场中,开发者面临着为不同操作系统设计应用的挑战。本文深入探讨了Android和iOS两大主流平台的跨平台开发策略。我们将分析使用Flutter、React Native等框架进行跨平台开发的优劣,并讨论如何克服各平台间的差异性,以实现高效、一致的用户体验。此外,文章还将提供一些实用的技巧和最佳实践,帮助开发者优化跨平台应用的性能和兼容性。
257 4
|
前端开发 Android开发 iOS开发
探索Android与iOS的跨平台开发策略
在移动应用开发的多元化时代,跨平台开发已成为开发者追求效率和广泛覆盖的重要手段。本文深入探讨了Android与iOS两大主流平台下的跨平台开发策略,分析了各自的优势与挑战,并通过实际案例展示了如何有效实施跨平台解决方案,以期为开发者提供有价值的参考和启示。
|
安全 Android开发 iOS开发
深入探索iOS与Android系统的差异性及优化策略
在当今数字化时代,移动操作系统的竞争尤为激烈,其中iOS和Android作为市场上的两大巨头,各自拥有庞大的用户基础和独特的技术特点。本文旨在通过对比分析iOS与Android的核心差异,探讨各自的优势与局限,并提出针对性的优化策略,以期为用户提供更优质的使用体验和为开发者提供有价值的参考。
|
Android开发 数据安全/隐私保护 iOS开发
探索未来:安卓与iOS在智能穿戴设备领域的较量
随着科技的飞速发展,智能穿戴设备已逐渐成为我们日常生活的一部分。从健康监测到通讯交流,它们正以惊人的速度改变着我们的生活方式。本文将深入探讨安卓和iOS这两大操作系统在智能穿戴领域的现状、竞争以及未来发展趋势,揭示它们如何通过创新技术满足用户需求,并预测未来可能的发展方向。
200 27
|
安全 Android开发 iOS开发
安卓与iOS开发之道:探索移动应用的差异化策略
【8月更文挑战第21天】在移动应用开发的广阔天地中,安卓和iOS这两大操作系统平台各领风骚。本文将深入探讨这两个平台的差异化策略,帮助开发者理解如何根据不同平台的特性优化应用设计,提升用户体验,并最大化市场潜力。我们将从用户界面、性能优化、市场定位、安全性以及发布策略等多个维度进行比较分析,旨在为开发者提供一个全面的视角,以便在竞争激烈的应用市场中占据一席之地。

热门文章

最新文章

下一篇
oss云网关配置