微信红包店小程序开发过程中遇到的问题 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获取附近周边商家 显示最近商家

上一篇:关于被微信屏蔽的说明以及对微信的建议


下一篇:用Kotlin破解Android版微信小游戏-跳一跳