微信红包店小程序开发过程中遇到的问题 php获取附近周边商家 显示最近商家
最近公司在做一个项目就是微信红包店。仿照的是微信官方在做的那个红包店的模式。客户抢红包,抢到以后到店消费,消费以后就可以拿到商家的红包了。
项目中的两个难点:
1通过小程序来发红包 这个之前在开发语音红包的时候已经遇到这些坑了,已经成功的踩过了。在这里也总结下,因为最近还是有不少人加我微信咨询这个。在这里我再给大家总结下。
小程序发红包接口使用的是微信支付文档里的, 企业付款到零钱的功能, 只要不用红包接口就行了, 改成企业付款到零钱的接口, 一切就迎刃而解了, 然后注意 接口里的appid就填写小程序的appid, 接口里的openid就填写小程序抓取到的用户的openid就可以了
具体的说明参考他的文档https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1
上面是发放红包的坑,希望对大家有帮助。接着我们谈第二点,就是每个商家入驻以后,客户打开小程序需要显示最近的商家。而且尽量显示最近周边的商家。比如你在深圳就不需要把北京的商家红包列出来了。 这就是我们说的第二点问题了,如何显示最近商家。
2、显示红包店最近商家,距离排序问题。
这个问题首先是商家在入驻的时候,记得获取到商家的经纬度,将商家的经纬度存在数据库里。以便显示最近商家的时候,需要这些数据。
综合了网上的几种方法,最后我使用的是,计算一个圆形,然后将圆形放在一个四方形里,获取这个四方形上下左右四个点的经纬度,然后使用sql代码 获取这周围的商家数据
下面直接贴代码了。
- /**
- * 计算某个经纬度的周围某段距离的正方形的四个点
- * 地球半径,平均半径为6371km
- * @param lng float 经度
- * @param lat float 纬度
- * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
- * @return array 正方形的四个点的经纬度坐标
- */
- function getAroundCoordinate($lng, $lat,$distance = 0.5){
- $dlng = 2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat)));
- $dlng = rad2deg($dlng);
- $dlat = $distance/6371;
- $dlat = rad2deg($dlat);
- return array(
- 'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),
- 'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),
- 'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),
- 'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)
- );
- }
我们是使用的小程序前端获取的经纬度,你如果不使用前端获取,那就可以使用ip地址来获取,使用百度的api接口来获取,只是好像位置不是很精确。
- //根据客户当前的ip地址来获取 经纬度
- function getlatlngbyip(){
- $getIp=$_SERVER["REMOTE_ADDR"];
- $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=百度申请api填写在这里就可以了&ip={$getIp}&coor=bd09ll");
- $json = json_decode($content);
- $ary['lat']=$json->{'content'}->{'point'}->{'y'};//按层级关系提取纬度数据
- $ary['lng']=$json->{'content'}->{'point'}->{'x'};//按层级关系提取经度数据
- $ary['status']=1;$ary['info']='操作成功'; return $ary;
- }
下面就是使用sql语句去查询商家了
- $search['lat']=array(array('gt',$fourpoint['right-bottom']['lat']),array('lt',$fourpoint['left-top']['lat']));
- $search['lng']=array(array('lt',$fourpoint['left-top']['lng']),array('gt',$fourpoint['right-bottom']['lng']));
同时也参考了下其他的一些网站的方法,大家可以看看,使用这些方法就可以成功开发出一个红包店小程序了。
我,秋峰,phper,目前创业,做项目系统开发 相互学习 共同提高 微信号:qiufeng2983
以下这些网址对大家有所帮助,大家可以看看。
PHP代码获取客户端IP地址经纬度及所在城市 - 小小强学习网 - 博客园
https://www.cnblogs.com/xqschool/p/6259558.html
tpshop商城根据用户坐标,向数据库查找附近的商家 - donaldbase - 博客园
https://www.cnblogs.com/donaldworld/p/6711329.html
PHP附近地理位置搜索实现详解_百度文库
https://wenku.baidu.com/view/1feb0d9c33d4b14e852468b7.html
微信红包店小程序开发过程中遇到的问题 php获取附近周边商家 显示最近商家的更多相关文章
- 微信小程序开发过程中tabbar页面显示的相关问题及解决办法!
在微信小程序的开发过程中如果有使用过tabbar的同学,我相信一定会遇到一些困扰.为什么有些时候代码中明明已经在app.json里面增加了tabbar,可以页面中就是不显示呢?可不可以有些页面显示ta ...
- 微信小程序开发过程中一些经验总结
1.微信开发者工具报错,微信小程序最低需支持tls1.2版本的问题 原因是服务器不支持ssl的高版本,解决方法: 在/etc/nginx/conf.d文件下,把"ssl_protocols ...
- 小程序开发过程中常见问题[微信小程序、支付宝小程序]
目录 一.样式中如何使用background-image呢? 二.使用自适应单位rpx类似于rem,布局尽量使用flex布局 三.万能的{{双大括号,用于在模版中输出变量 四.你想要的基础组件和API ...
- 微信小程序 开发过程中遇到的坑(一)
2124 1.我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 的时候在pages中写注释的时候回报错. 例如: { &quo ...
- 微信小程序开发过程中出现问题及解答
1.wx.uploadFile上传图片,控制台抛出错误"uploadFile:fail Error:Hostname/IP doesn't match certificate's altna ...
- 微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的
微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的 最近公司在开发一个小程序红包系统,客户抢到红包需要提现.也就是通过小程序来给用户发红包. 小程序如何来发红包呢?于是我想 ...
- 微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的
最近公司在开发一个小程序红包系统,客户抢到红包需要提现.也就是通过小程序来给用户发红包. 小程序如何来发红包呢?于是我想到两个方法. 之前公众号开发一直用了的.一个是红包接口,一个是企业支付接口.一开 ...
- 总结微信小程序开发中遇到的坑
总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...
- 微信小程序开发中的二三事之网易云信IMSDK DEMO
本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...
随机推荐
- Netty4.0.24.Final 版本中 IdleStateHandler 使用时的局限性
使用Netty在客户端和服务端建立通讯通道,一般来说,一个连接可能很久没有访问,由于各种各样的网络问题导致连接已经失效,客户端再次发送请求时会产生连接异常. 基于这个原因,需要在客户端和服务端之间建立 ...
- UWP 共享文件——发送者
这一节,顾名思义,即使你要共享数据给别人,你是数据的提供者.分两步即可1.直接复制代码 protected override void OnNavigatedTo(NavigationEventArg ...
- ZBX_NOTSUPPORTED: Item does not allow parameters.
搞mongo监控的时候,zabbix报错:ZBX_NOTSUPPORTED: Item does not allow parameters. 想了半天,不知道原因,最后经过大神指点,原来是zabb ...
- Java二分法
public class Dichotomy { //定义查找次数 static int count = 0; public static void main(Str ...
- AspNet Core 程序写入配置信息并再次读取配置信息
1.首先创见Core控制台应用程序 并且引入 AspNetCore.All 首先我们写入配置信息:直接代码如下 //配置信息的根对象 public static IConfigurationRoo ...
- C#真的过时了吗?
现在有一种言论:C#过时了!!! 有人说现在是BS的时代,C#开发BS网站的那一套,相对于Java.PHP来说,效率太低了! 有人说现在是移动互联网时代,C#作为微软主推的语言,无法开发移动应用成为其 ...
- EF(EntityFramework)与mysql使用,乱码问题
1.中文乱码问题 利用ef更新数据到mysql数据库中,中文就会变成乱码"???",就算把mysql的数据库的编码设置为"utf8"也会变成乱码,从网上查询了下 ...
- ajax请求处理和views处理函数的优先级
当采用ajax处理请求的时候,在views函数中使用 return render(request,'XXX.html',{'error':form.get_error()}) 返回渲染模板时,会优先处 ...
- 怎样将word文件转化为Latex文件:word-to-latex-2.56具体解释
首先推荐大家读一读这篇博文:http://blog.csdn.net/ibingow/article/details/8613556 --------------------------------- ...
- wps 操作
wps选择视图-->文档结构图