微信红包店小程序开发过程中遇到的问题 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 的能力 ...
随机推荐
- 拆分字符and读取properties文件
在方法里面建立properties对象 Properties pps = new Properties(); 调用.load()方法 pps.load(new FileInputStream(&quo ...
- 工程启动加载.properties/.xml配置文件
工程目录: demo.properties today=2017-06-10 PropertiesMap.java package com.dzpykj.common.utils; import ja ...
- php执行linux命令的6个函数
一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数.以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec.其实有很多的,结合手册内容 ...
- YiShop_商城网站建设应该注意什么
现在电子商务迅速发展,而专门搭建商城网站的第三方开发商也很多.现在搭建一个商城网站容易,如何运营一个商城网站才是重点.下面就由YiShop说说电子商城网站建设要思考什么呢(1)建设网站的目的是什么首先 ...
- 【NOIP2016提高组】换教室
https://www.luogu.org/problem/show?pid=1850 题面很长,实质很水的一道期望DP题.题面自带劝退效果. 首先用Floyd算出任意两点的最短路径.然后设f(i,j ...
- Java基础—标识符及命名规范
什么是标识符符? 凡是可以由自己命名的地方都称为修饰符. 例: 项目名 ,包名 ,类名 .方法名 2. 命名规范. ① 不可使用java关键字和保留字,但是可以包含关键字和保留字. ② ...
- 解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常
EJB本地调用方式:把Webclient和EJB服务端部署到同一个JBoss,client和server通过一个JVM进行通信. Web客户端本地调用时.需引用EJB服务端打包的jar,不需引用JBo ...
- Linux批量杀死包括某个keyword的进程
ps -ef|grep ./amplxe-gui|grep -v grep|cut -c 9-15|xargs kill -9 批量杀死包括keyword"./amplxe-gui" ...
- 解决 ASP.NET Core MySql varchar 字符串截取(长度 255)
ASP.NET Core 中使用 MySql,如果字段类型为varchar,不管设置多少长度,插入或更新数据的时候,会自动截断(截取 255 长度的字符). 出现问题的原因,就是使用了MySql.Da ...
- immutable.js 更新数组(mergeDeepWith)
使用情境: 技术栈为:react + redux + antd (reducer中处理数据使用了immutable.js). 问题:如下图,做一个搜索功能,form表单每改变一次,都会调用一个upda ...