精华内容
下载资源
问答
  • 基于Laravel5.5 的小程序开发 部分页面效果展示 ..... 为了让团队开发更加顺利,这里对一些基础功能统一做了封装,让大家直接使用。避免重复开发、提高效率,也是做了一个统一规范。 公共部分 指所有模块,包含后台...
  • 主要介绍了Laravel 微信小程序后端搭建步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • RXThinkCMF_LV5.8_PRO旗舰版 基于 Laravel5.8+Layui2.5.6 开发权限(RBAC)及内容管理框架,框架中集成了权限管理、模块管理、插件管理、钩子管理、数据库管理、富文本编辑器(已集成ueditor,kindeditor),后台支持多...

    RXThinkCMF_LV5.8_PRO旗舰版 基于 Laravel5.8+Layui2.5.6 开发权限(RBAC)及内容管理框架,框架中集成了权限管理、模块管理、插件管理、钩子管理、数据库管理、富文本编辑器(已集成ueditor,kindeditor),后台支持多主题切换、布局管理、广告管理、配置管理、字典管理、切图管理、CMS内容管理等常用功能模块,以方便开发者快速构建自己的应用。框架专注于为中小企业提供最佳的行业基础后台框架解决方案,执行效率、扩展性、稳定性值得信赖,操作体验流畅,使用非常优化,欢迎大家使用及进行二次开发。

    后台演示(用户名:admin 密码:123456)

    技术支持

    技术支持QQ:1175401194

    效果图展示

    • 系统登录
      在这里插入图片描述
    • 系统主页
      在这里插入图片描述
    • 人员管理
      在这里插入图片描述
    • 人员编辑
      在这里插入图片描述
    • 角色设置
      在这里插入图片描述
    • 职级管理
      在这里插入图片描述
    • 岗位管理
      在这里插入图片描述
    • 部门管理
      在这里插入图片描述
    • 菜单管理
      在这里插入图片描述
    • 菜单编辑
      在这里插入图片描述
    • 操作日志
      在这里插入图片描述
    • 登录日志
      在这里插入图片描述
    • 广告管理
      在这里插入图片描述
    • 推荐管理
      在这里插入图片描述
    • 配置管理
      在这里插入图片描述
    • 字典管理
      在这里插入图片描述
    • 友链管理
      在这里插入图片描述
    • 定时任务
      在这里插入图片描述
    • 通知公告
      在这里插入图片描述
    • 网站设置
      在这里插入图片描述
    • 代码生成器
      在这里插入图片描述
    • 代码生成模块演示
      在这里插入图片描述
    • 数据库管理
      在这里插入图片描述
    • CMS管理
      在这里插入图片描述
    • 统计报表
      在这里插入图片描述
    • 会员管理
      在这里插入图片描述
    展开全文
  • Laravel租房小程序项目实战开发

    千次阅读 2020-05-07 21:20:28
    本课程用laravel5.8开发的一个关于租房的微信小程序项目。 地址:https://www.piaodoo.com/9422.html 菜鸟教程https://www.piaodoo.com 项目设计内容比较广,内容丰富,会充分的用到laravel实现RBAC权限功能,无刷新...

    〖课程介绍〗
    本课程用laravel5.8开发的一个关于租房的微信小程序项目。
    地址:https://www.piaodoo.com/9422.html
    菜鸟教程https://www.piaodoo.com
    项目设计内容比较广,内容丰富,会充分的用到laravel实现RBAC权限功能,无刷新技术,还有restfulAPI等,本课程已经更新完整,总共12天课程,206节视频,完整代码,完整详细笔记以及完整课件。

    展开全文
  • 微信小程序商城 + APP商城 + 公众号商城 + PC商城系统前后端代码全部开源) Laravel + vue开发
  • 同时:果酱小店小程序,我们作为真实的项目在运营,产品会不断更新迭代。 果酱小店是一个免费的开源电子商务解决方案,使用PHP基于Laravel框架进行编写。基于深度开发,易扩展,可基于个性需求快速实现定制化需求,...
  • 基于 Laravel + JWT 的投票小程序接口 接口文档 安装及快速开始 $ composer install $ php artisan migrate 特性 实现无痛刷新 Token Restful 风格接口 Token 刷新机制说明 过期的 Token 可请求一次接口,正常返回...
  • Laravel 微信小程序支付

    千次阅读 2018-04-04 16:12:56
    近期项目,有一个涉及到微信小程序支付功能,踩了不少坑,记录一哈子。开发环境:php 7.0.12 + Apache框架:Laravel5.3微信官方的流程示意图:作为phper,要做的部分就是用前端传递过来的code换取openid,生成商户...

    近期项目,有一个涉及到微信小程序支付功能,踩了不少坑,记录一哈子。

    开发环境:php 7.0.12 + Apache
    框架:Laravel5.3
    微信官方的流程示意图:

    小程序支付流程示意

    作为phper,要做的部分就是用前端传递过来的code换取openid,生成商户订单,再调用支付统一下单API换取预付单信息,将预付单信息再次签名后返回给前端。

    code换取openid:

    /**
     * code换取openid
     * @param $code
     * @return bool
     */
    function getOpenID($code)
    {
        //从配置文件读取小程序的appid&secret
        $appid = config('miniapp_id');
        $secret = config('mini_secret');
    
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
    
        $weixin = file_get_contents($url);//通过code换取网页授权access_token
        $jsondecode = json_decode($weixin); //对JSON格式的字符串进行编码
        $array = get_object_vars($jsondecode);//转换成数组
        if (!isset($array['openid'])) {
             throw new \Exception('code错误T^T');
        }
        $openid = $array['openid'];//输出openid
    
        return $openid;
    }
    

    获取随机字符串:

     /**
      * 产生随机字符串,不长于32位
      * @param int $length
      * @return string 产生的随机字符串
      */
    function getNonceStr($length = 32)
    {
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = '';
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }

    xml与array转换:

    /**
     * 将一个数组转换为 XML 结构的字符串
     * @param array $arr 要转换的数组
     * @param int $level 节点层级, 1 为 Root.
     * @return string XML 结构的字符串
     */
    function arraytoXml($arr, $level = 1)
    {
        $s = $level == 1 ? "<xml>" : '';
        foreach ($arr as $tagname => $value) {
            if (is_numeric($tagname)) {
                $tagname = $value['TagName'];
                unset($value['TagName']);
            }
            if (!is_array($value)) {
                $s .= "<{$tagname}>" . (!is_numeric($value) ? '<![CDATA[' : '') . $value . (!is_numeric($value) ? ']]>' : '') . "</{$tagname}>";
            } else {
                $s .= "<{$tagname}>" . $this->arraytoXml($value, $level + 1) . "</{$tagname}>";
            }
        }
        $s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s);
        return $level == 1 ? $s . "</xml>" : $s;
    }
    
    
    /**
     * 将xml转为array
     * @param  string $xml xml字符串
     * @return array    转换得到的数组
     */
    function xmltoArray($xml)
    {
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $result = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
        return $result;
    }

    生成签名:

    /**
     * 生成签名
     * @param $data
     * @return string
     */
    function makeSign($data)
    {
        //获取微信支付秘钥
        $key = config('key');
    
        //去空
        $data = array_filter($data);
    
        //签名步骤一:按字典序排序参数
        ksort($data);
        $string_a = http_build_query($data);
        $string_a = urldecode($string_a);
    
        //签名步骤二:在string后加入KEY
        $string_sign_temp = $string_a . "&key=$key";
    
        //签名步骤三:MD5加密
        $sign = md5($string_sign_temp);
    
        //签名步骤四:所有字符转为大写
        return strtoupper($sign);
    }

    curl发送请求:

    /**
     * 微信支付发起请求
     * @param $url
     * @param $xmldata
     * @param int $second
     * @param array $aHeader
     * @return bool|mixed
     */
    protected function curl_post_ssl($url, $xmldata, $second = 30, $aHeader = array())
    {
        $ch = curl_init();
        //超时时间
        curl_setopt($ch, CURLOPT_TIMEOUT, $second);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //这里设置代理,如果有的话
        //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
        //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        if (count($aHeader) >= 1) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
        }
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);
        $data = curl_exec($ch);
        if ($data) {
            curl_close($ch);
            return $data;
        } else {
            $error = curl_errno($ch);
            echo "call faild, errorCode:$error\n";
            curl_close($ch);
            return false;
        }
    }

    预支付:

    /**
     * @param $unifiedorder
     * @return array
     * @throws \Exception
     */
    function prepay($unifiedorder)
    {
        $unifiedorder['sign'] = $this->makeSign($unifiedorder);
        $xmldata = $this->arraytoXml($unifiedorder);
    
        $url = config('pay_url');
    
        $res = $this->curl_post_ssl($url, $xmldata);
        if (!$res) {
            throw new \Exception('链接Wechat服务器失败 (キ`゚Д゚´)');
        }
    
        $content = $this->xmltoArray($res);
        if (strval($content['return_code']) == 'FAIL') {
            throw new \Exception('生成签名数据失败 ( ̄□ ̄;)');
        }
    
        //拼接小程序的接口数据
        $result = [
            'appId' => strval($content['appid']),
            'timeStamp' => time(),
            'nonceStr' => $this->getNonceStr(),
            'package' => 'prepay_id=' . strval($content['prepay_id']),
            'signType' => 'MD5',
        ];
    
        //加密签名
        $result['paySign'] = $this->makeSign($resData);
    
        return $result;
    }

    业务逻辑部分:

    function WeChatOrder(Request $request)
    {
        $code = $request->get('code');
    
        $payHelper = new WechatHelper();
        $openId = $payHelper->getOpenID($code);
    
        try {
            DB::beginTransaction();
    
            //生成业务订单
            $order = [
                'orderNum' => 123456789,
                'price' => 2333,
                ...
            ];
    
            Order::create($order);
    
            $unifiedorder = [
                'openid' => $openId,
                'appid' => config('miniapp_id'),
                'mch_id' => config('mch_id'),
                'nonce_str' => $payHelper->getNonceStr(),//获取随机字符串
                'body' => '商品讯息',
                'out_trade_no' => $order['orderNum'],
                'total_fee' => $order['price'],//单位为"分"
                'spbill_create_ip' => $request->ip(),
                'notify_url' => config('notify_url'),
                'trade_type' => 'JSAPI',//小程序均为"JSAPI"
            ];
    
            //再次签名返回
            $signature = $payHelper->prepay($unifiedorder);
    
            DB::commit();
        } catch (QueryException $e) {
            DB::rollback();
            throw new \Exception('提交订单失败 T^T');
        } catch (\Exception $e) {
            DB::rollback();
            throw new \Exception('出错了 T^T');
        }
    
        //返回$signature给前端
    
    }

    PS:
    小程序的appid与secret与公众号的是不同的;
    请确保各项配置无误,我会说因为需求方给的key错误耽误了一天时间ヽ(`Д´)ノ︵ ┻━┻ ┻━┻;
    一般错误都会告知原因,个人猜测因为key比较私密所以因为key错误,返回的讯息一直都是 “签名错误”,并未给出具体原因;
    微信提供了签名校验,可以设置好参数去校验下自己的签名生成算法是否OK;
    生成预支付订单后,返回给前端的时候需要再次签名,切记.

    参考链接:
    微信小程序支付流程
    统一支付下单API参数

    展开全文
  • 小程序支付的文档地址见 (小程序微信支付 API)以及 小程序支付业务流程 在业务流程里我们可以看到几个基础的步骤。 首先要获取到用户的 openid 调用微信的统一下单 API 来生成订单 服务器再次进行签名 接收支付...

    小程序微信支付基本介绍
    小程序支付的文档地址见 (小程序微信支付 API)以及 小程序支付业务流程

    在业务流程里我们可以看到几个基础的步骤。

    首先要获取到用户的 openid
    调用微信的统一下单 API 来生成订单
    服务器再次进行签名
    接收支付通知
    查询支付结果
    我在开发过程中碰到的主要问题就是服务器进行再次签名,这里主要是微信的文档写着比较模糊。导致在这里浪费了比较多的精力。

    服务器端代码
    首先引入 @安正超 大大的 overtrue/laravel-wechat composer 包。当然引入 overtrue/wechat 也是可以的。基础的配置文件就不说了。按照说明配置好就可以了。

    获取小程序用户的 openid
    在小程序中调用 wx.login() 会返回一个 code,将 code 参数传给我们的 API 中进行处理就可以得到 openid 了。 示例代码如下

    $mini = \EasyWeChat::miniProgram();

    $result = m i n i − > a u t h − > s e s s i o n ( mini->auth->session( mini>auth>session(code); // $code 为wx.login里的code

    // 如果code正确的话,那么此时$result 里就会包含openid, session_key等信息。
    // 此时可以将openid存储到自己需要的数据库中

    // $result[‘openid’] = ‘your-openid’;
    统一下单 && 二次签名
    通过使用安正超大大封装的包,我们可以很方便的进行统一下单,不过与 easywechat 里的文档示例不太一样的是我们要传的参数要多一些。以及配置文件里的 ‘notify_url’ 一定要配置正确。 具体代码如下

    use function EasyWeChat\Kernel\Support\generate_sign;

    $payment = \EasyWeChat::payment(); // 微信支付

    $result = $payment->order->unify([
    ‘body’ => ‘你自己想写的名称’,
    ‘out_trade_no’ => ‘你自己定义的订单号’,
    ‘trade_type’ => ‘JSAPI’, // 必须为JSAPI
    ‘openid’ => ‘在上一步中获取到的openid’, // 这里的openid为付款人的openid
    ‘total_fee’ => 1, // 总价
    ]);

    // 如果成功生成统一下单的订单,那么进行二次签名
    if ($result[‘return_code’] === ‘SUCCESS’) {
    // 二次签名的参数必须与下面相同
    $params = [
    ‘appId’ => ‘你的小程序的appid’,
    ‘timeStamp’ => time(),
    ‘nonceStr’ => $result[‘nonce_str’],
    ‘package’ => ‘prepay_id=’ . $result[‘prepay_id’],
    ‘signType’ => ‘MD5’,
    ];

    // config('wechat.payment.default.key')为商户的key
    $params['paySign'] = generate_sign($params, config('wechat.payment.default.key'));
    
    return $params;
    

    } else {
    return $result;
    }

    // 如果成功二次签名,返回的结果与下面的类似
    // $params = {
    // “appId”: “wxedsadwvsager343df5”,
    // “timeStamp”: 1520515252,
    // “nonceStr”: “wGs9JOpqKQcJYf7m”,
    // “package”: “prepay_id=wx201803cdsqa2ae1e202110689669353”,
    // “signType”: “MD5”,
    // “paySign”: “398729A0461F5A825DA169CA29721038”
    // }
    在小程序支付文档中可能对二次签名加密说了很多的步骤,不过我在翻阅了 overtrue/wechat 包之后,发现已经将二次签名方法封装了,所以直接引入
    use function EasyWeChat\Kernel\Support\generate_sign; 后进行调用即可。

    最后付款 API 返回上面的 $params 供小程序端调用即可,当然,还有回调里的 notify_url 需要进行处理,可以参照 这里 进行处理。

    小程序端代码实现

    // 首先使用wx.request来调用上面的Laravel API 返回 data。
    // 然后将获取到的参数传入到付款API里面就可以了。
    // 如果一切顺利的话,微信小程序支付就成功的跑通了?

    wepy.requestPayment({
    timeStamp: data.timeStamp.toString(),
    nonceStr: data.nonceStr,
    package: data.package,
    signType: data.signType,
    paySign: data.paySign,
    success: function(res) {
    console.log(‘付款成功’)
    console.log(res)
    },
    fail: function(res) {
    console.log(‘付款失败’)
    console.log(res)
    }
    })
    本作品采用《CC 协议》,转载必须注明作者和本文链接

    ————————————————
    原文作者:Epona
    转自链接:https://learnku.com/articles/8613/wechat-small-programs-pay-api-configuration-under-laravel
    版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

    展开全文
  • 1.安装laravel5.7 composer create-project --prefer-dist laravel/laravel wechat 5.7.*。 2.laravel5.7安装easywechat扩展 composer require overtrue/wechat:~4.0 ...
  • 基于Laravel5.5小T商城(微信小程序端) 说明 是小程序电商项目,因为鄙视人不懂UI和审美,效果配图选不够专业还请见谅##项目概述 基于Laravel5.5开发 产品名称:小店 项目代码: : 运行环境 Nginx 1.8以上 PHP 7.2...
  • 基于Laravel5.5 小T商城(微信小程序端)项目地址:https://github.com/sqc157400661/XiaoTShop后台基于Laravel5.5开发前端资源来源于nideshop功能和数据库参考ecshop注意:当前版本功能还在完善中,暂时请勿商用。...
  • 前端程序员,小程序学习者 体验 源码 Laravel API 源码: https://github.com/ibrandcc/e... 小程序源码: https://github.com/ibrandcc/m... 觉得对你有帮助的请 start 鼓励一下,谢谢大家的支持...
  • RXThinkCMF_LV5.8_PRO旗舰版 基于 Laravel5.8+Layui2.5.6 开发权限(RBAC)及内容管理框架,框架中集成了权限管理、模块管理、插件管理、钩子管理、数据库管理、富文本编辑器(已集成ueditor,kindeditor),后台支持多...
  • 1 Laravel最佳开发环境介绍.mp4 2 安装Laravel并配置Homestead.mp4 3 配置虚拟域名访问Laravel项目.mp4 4 Laravel与数据库管理工具连接Mysql.mp4 5 Laravel高可用模块化思想.mp4 6 使用组件快速构建模块设计架构.mp4...
  • Laravel Slack Inviter这是一个Laravel应用程序,允许您邀请用户加入Slack团队。 它还会生成一个徽章,以显示您的Slack团队的在线人数/总人数。 想要看到它的实际效果吗? Laravel Slack Inviter这是一个的...
  • 下面这里是后台列表,详情页展示,以及秒杀的实现 这里要用到两个表一个是商品(goods表) 另一个是(artivity_goods表) 需要进行... } } } 以上就是小程序实现秒杀的全过程了,有不对的不懂的欢迎来交流探讨 谢谢!
  • 微信小程序的消息推送简单的说就是发送一条微信通知给用户,用户点开消息可以查看消息内容,可以链接进入到小程序的指定页面。 微信小程序消息推送需要用户触发动作才能发送消息,比如用户提交订单、支付成功。一次...
  • laravel引用微信小程序加密解密算法

    千次阅读 2018-07-04 11:41:08
    PHP 7.1 微信小程序加密解密算法PHP 7.1 微信小程序加密解密算法安装包composer require frowhy/mini-program-aes调用方法,在需要调用的控制器中添加use Leto\MiniProgramAES\WXBizDataCrypt;使用方法$appid = 'wx...
  • Laravel开发-novasize

    2019-08-27 12:55:13
    Laravel开发-novasize 用于Laravel的命令行图像大小调整实用程序
  • 微信支付的接入,如果不使用成熟的开发包,将是巨大的工作量。 依赖 EasyWechat 先在 laravel 项目中依赖 easywechat 这个包 composer require "overtr...
  • 前端程序员,小程序学习者 体验 源码 Laravel API 源码: https://github.com/guojiangclub/ecommerce-open-api 小程序源码: https://github.com/guojiangclub/miniprogram-ecommerce-open-source ...
  • 本次项目在使用Laravel5.8的基础上结合微信小程序实现一个无人货架的售卖系统。具体的技术逻辑如下: 1、后端接口认证使用Jwt-auth,通过接口认证拿到用户id。参考文档:...
  • 因为我的项目用到的是easyWeChat这个插件 所以附上部分代码 /** * 获取小程序二维码 */ public function loginQrcode(){ // 生成票据 $ticket = md5(uniqid(time())); // 获取小程序二维码 $app = Factory::...
  • Laravel开发-laravel-multiselect 用于创建具有多个选择的HTML选择元素的小程序
  • PAGE 6 PAGE 2 微信小程序教学大纲 课程编码 制订人 制订日期 ...课程的任务通过本课程的学习学生应能熟练使用微信开发者工具熟练开发微信小程序在后台方面理解后台的开发流程以及微信小程序是如何与后台交互的 二教
  • Laravel通过减轻许多Web项目中使用的常见任务来减轻开发工作的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,强大的...
  • 下载安装 charles 关于charles 抓包小程序接口的之前有写,有兴趣可以查看 https://liaosp.blog.csdn.net/article/details/90170048 打开Laravel 服务 我试了下,用8000端口,没用,所以Laravel就用80端口 ...
  • 微信-laravel-lavas系统【WLLS】 主要目的是在微信小程序系统的构建初期,方便快速整合,...另外,希望你是知道什么是laravel,熔岩,微信小程序的基本开发过程。等,或者知道一些开源框架的基本使用。 (详细编写中..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,323
精华内容 2,129
关键字:

laravel小程序开发