微信红包店小程序开发过程中遇到的问题 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 的能力 ...
随机推荐
- Android Studio问题汇总
1) Android Studio重命名工程名称: 1. 关闭Android Studio 2. 修改project所在路径的文件夹名字为[NewName] 3. 修改根目录下的.iml文件名为[Ne ...
- 数据库索引------Btree索引的使用限制
1.如果不是按照索引最左列开始查找,则无法使用索引. 比如说id+name 那么是name+id 的话 ,这个索引则无法使用. 2.使用索引时不能跳过索引中的列. 如果是id+name+ag ...
- 学习python登录demo
要求编写登录接口 : 1. 输入用户名和密码 2.认证成功后显示欢迎信息 3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序) 4.用户名正确,密码错误,提示密码错误,重新 ...
- git以及github的初级入门(一)
本身学习git的操作是没什么兴趣的,毕竟原本是win平台学的java开发,git下那么多复制的命令行操作确实比较让人头疼,直到昨天我打开计算机的时候,我放置项目的E盘,以及F盘,G盘盘符都不见了!!我 ...
- 逐步搭建Lamp环境之rpm软件包管理
Linux中的rpm软件包管理类似于windows下的"xxx软件管家"."xxx电脑管家",其作用主要用于查询软件的安装情况.安装软件.卸载软件. 以下针对这 ...
- Java爬虫——网易云热评爬取
爬取目标网址 : http://music.163.com/#/song?id=409649818 需要爬取信息 : 网易云top13热评 使用之前的 HttpURLConnection 获取 ...
- vim 命令整理(自己经常使用)
vimm(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器. vimm分为两种状态,即命令状态和编辑状态.在命令状态下.所键入的字符系统均作命令来处理.如:q代表退出,而编辑状态则是用 ...
- 剑指Offer面试题39(Java版):二叉树的深度
题目:输入一棵二叉树的根节点,求该数的深度. 从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度. 比如.例如以下图的二叉树的深度为4.由于它从根节点到叶结点的最 ...
- codeforces 558 E A Simple Task
题目大意就是给一个字符串,然后多个操作.每次操作能够把每一段区间的字符进行升序或者降序排序,问终于的字符串是如何的. 做法的话就是用线段树维护区间和 一開始仅仅考虑字符串中字符'a'的情况.如果操作区 ...
- itextpdf添加非自带字体(例如微软雅黑)
找到需要的字体,例如 在windows系统中找到需要字体,本例使用微软雅黑,使用C:\\Windows\\Fonts\\msyh.ttf. 代码如下: /** * 创建pdf,使用微软雅黑字体 * * ...