最近公司在做一个项目就是微信红包店。仿照的是微信官方在做的那个红包店的模式。客户抢红包,抢到以后到店消费,消费以后就可以拿到商家的红包了。

项目中的两个难点:

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获取附近周边商家 显示最近商家的更多相关文章

  1. 微信小程序开发过程中tabbar页面显示的相关问题及解决办法!

    在微信小程序的开发过程中如果有使用过tabbar的同学,我相信一定会遇到一些困扰.为什么有些时候代码中明明已经在app.json里面增加了tabbar,可以页面中就是不显示呢?可不可以有些页面显示ta ...

  2. 微信小程序开发过程中一些经验总结

    1.微信开发者工具报错,微信小程序最低需支持tls1.2版本的问题 原因是服务器不支持ssl的高版本,解决方法: 在/etc/nginx/conf.d文件下,把"ssl_protocols  ...

  3. 小程序开发过程中常见问题[微信小程序、支付宝小程序]

    目录 一.样式中如何使用background-image呢? 二.使用自适应单位rpx类似于rem,布局尽量使用flex布局 三.万能的{{双大括号,用于在模版中输出变量 四.你想要的基础组件和API ...

  4. 微信小程序 开发过程中遇到的坑(一)

      2124 1.我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 的时候在pages中写注释的时候回报错. 例如: { &quo ...

  5. 微信小程序开发过程中出现问题及解答

    1.wx.uploadFile上传图片,控制台抛出错误"uploadFile:fail Error:Hostname/IP doesn't match certificate's altna ...

  6. 微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的

    微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的   最近公司在开发一个小程序红包系统,客户抢到红包需要提现.也就是通过小程序来给用户发红包. 小程序如何来发红包呢?于是我想 ...

  7. 微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的

    最近公司在开发一个小程序红包系统,客户抢到红包需要提现.也就是通过小程序来给用户发红包. 小程序如何来发红包呢?于是我想到两个方法. 之前公众号开发一直用了的.一个是红包接口,一个是企业支付接口.一开 ...

  8. 总结微信小程序开发中遇到的坑

    总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...

  9. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

随机推荐

  1. Springmvc ModelAndView踩过的坑之HttpServletResponse response

    先抛出问题.以下两个方法声明有毛区别: @RequestMapping(value = "/rg") public void rg(@PathVariable Long pageI ...

  2. PHPstorm 函数时间注释的修改

    正常的PHPstorm里面函数方法的注释是没有动态时间设置的,但是看了PHP file里面有时间日期的注释,而PHP Function Doc Comment 却没有,让很多PHPer很头疼,今天在搜 ...

  3. 安卓图片加载框架之Glide框架

    Glide框架加载有两种,第一,是加载图片,第二是加载布局背景.首先我来说说第一种情况加载图片. Glide.with(getActivity()).load(lists.get(position). ...

  4. 【Keras】从两个实际任务掌握图像分类

    我们一般用深度学习做图片分类的入门教材都是MNIST或者CIFAR-10,因为数据都是别人准备好的,有的甚至是一个函数就把所有数据都load进来了,所以跑起来都很简单,但是跑完了,好像自己还没掌握图片 ...

  5. froms中判断数据长度自定义提示

    class NumberForm(BaseForm): querynumber = forms.CharField(error_messages={'required':u'请输入手机号'}) def ...

  6. Linux----CentOS-7搭建免流服务器

    本次实验采用腾讯云服务器:https://cloud.tencent.com/ 大学生身份的可以看看有没有什么活动购买 其他身份的78一个月 关于腾讯云服务器的使用可以看看腾讯云的使用手册 本博客涉及 ...

  7. PHP-学习之路1

    相信入职快有5个月了,目前项目做过HIS,zySystem,ComStoreSystem当然今天不是来介绍的,后期直到第四个月后APP护身宝经理拍板今后也就是明年正式交于我们团队接手与扩展,运维.虽然 ...

  8. Machine Learning - XV. Anomaly Detection异常检測 (Week 9)

    http://blog.csdn.net/pipisorry/article/details/44783647 机器学习Machine Learning - Andrew NG courses学习笔记 ...

  9. [Sqoop]利用sqoop对mysql运行DML操作

    业务背景 利用sqoop对mysql进行查询.加入.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...

  10. ABP入门系列(21)——切换MySQL数据库

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 Abp支持MySql已经不是什么新鲜事了,但按照官方文档:Entity Framewo ...