本人小白,刚接触thinkphp,做了一个微信公众号,重点是前后端分离的,带支付的内种,官方给的接口文档好麻烦,问了好多人终于做出来的,还有一件事,为什么这个东西上传不了文件,我一上传就把我之前的写的全变没了,烦,下面给你们代码


<?php
/*** 订单* Created by 谁写的我也不知道,反正下面是我改的* User: Hcz* Date: 2018/7/25* Time: 19:06*/
namespace app\index\controller;
use app\index\controller\Base;
use think\Controller;
use think\Db;
use think\Loader;
use think\Cookie;
use think\Config;
use app\index\model\User;
class Wxpeng extends Controller{//下单//支付/*** @param string $order_no  订单号* @param string $total  支付金额你写个订单表,订单表里要有价格,购买人的id,以及订单id和时间,,把订单表的订单号传进来叫做order_no,用order_no去查找其他信息,我的订单表叫vip_viporder   用户id叫uid  价格我是另外查询的,你可以自己在订单表里拿*/public function pay(){$order_no=input('order_no');Loader::import('wxpay.lib.WxPayApi', VENDOR_PATH);Loader::import('wxpay.example.WxPayJsApiPay', VENDOR_PATH);//$openid = $orderinfo['openid'];$res=Db::table('xc_viporder')->where('order_id',$order_no)->find();$openid=$res['uid'];$vip=$res['vip'];$pric=Db::table('xc_huiyuan')->where('vid',$vip)->find();//准备数据$tools = new \JsApiPay();//②、统一下单$input = new \WxPayUnifiedOrder();//$input->SetBody('购买'.$ordergoodinfo['goods_name']);$input->SetBody('购买'.'会员卡');$input->SetOut_trade_no($order_no);//价格$input->SetTotal_fee($pric['money']*100);$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis", time() + 600));//自己的$input->SetNotify_url("http://yfj.sharexwd.top/Index/Wxpeng/asynNotify");$input->SetTrade_type("JSAPI");$input->SetOpenid($openid);$order = \WxPayApi::unifiedOrder($input);$jsApiParameters = $tools->GetJsApiParameters($order);$this->assign('jsApiParameters',$jsApiParameters);return $this->fetch();}//支付异步回调public function asynNotify() {$result = file_get_contents('php://input', 'r');$result = (array)simplexml_load_string($result, null, LIBXML_NOCDATA);//$result=input();$num=rand(10000,99999);file_put_contents('alipctest_aa'.$num.'.log', print_r($result,true).PHP_EOL,FILE_APPEND);Loader::import('wxpay.example.WxPayJsApiPay', VENDOR_PATH);$wxpay = new \JsApiPay();$orders_no = $result['out_trade_no'];//这重点重点上面ordersno是订单号,在这里就意味着你已经支付成功了在这里写上自己的操作,就比如让扎个订单发货或者更改订单表的状态,就看你自己了$config = Config::get('wechat');//验证参数(($result['result_code'] !== 'SUCCESS') || ($result['mch_id'] !== $config['mch_id']) || ($result['appid'] !== $config['appid'])) && $this->wechatResult('FAIL', 'invalid param');//验证签名$this->createSign($result, $config['key']) !== $result['sign'] && $this->wechatResult('FAIL', 'invalid sign');//修改状态$this->wechatResult('SUCCESS', 'OK');  }/*** 生成签名* @author Steed* @param array $data* @param $key* @return string*/function createSign($data = [], $key) {unset($data['sign']);//按ASCII字典序排序ksort($data);$str = '';foreach ($data as $k => $val) {$str .= $k . '=' . $val . '&';}$str .= 'key=' . $key;return strtoupper(md5($str));}//微信回调格式化信息输出function wechatResult($code, $msg){$xml = '<xml>';$xml .= '<return_code><![CDATA[' . $code . ']]></return_code>';$xml .= '<return_msg><![CDATA[' . $msg . ']]></return_msg>';$xml .= '</xml>';echo $xml;die;}
}

重点
上面的代码放在app\index\controller里,作为控制器,但你会发现她调不起来输入密码页面,诶当时就卡在这了
你把下面代码放在对应的view下,就比如上面文件我叫wxpay,我就在app\index\view\wxpay\index.html
下面是html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title>
</head>
<body>
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>callpay();//调用微信JS api 支付function jsApiCall(){WeixinJSBridge.invoke('getBrandWCPayRequest', {$jsApiParameters}, function(res){//这里换成你自己的dist文件位置window.location.href = "http://yfj.sharexwd.top/dist";
//          if (res.err_msg == 'get_brand_wcpay_request:ok'){//
//          }else {
//              WeixinJSBridge.log(res.err_msg);
//              alert(res.err_code+res.err_desc+res.err_msg);
//         }});}function callpay(){if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', jsApiCall);document.attachEvent('onWeixinJSBridgeReady', jsApiCall);}}else{jsApiCall();}}
</script>
</html>

奉劝大家,微信公众号别用前后端分离,接接口的方式,要做就前段写jquery,给后端,所有数据后端自己做,要不然还有个openid等着你呢

thhinkphp5前后端分离微信公众号支付相关推荐

  1. 微信公众号支付java前后端分离开发

    微信公众号支付java前后端分离开发 微信公众号支付java前后端分离开发 我们开发的是基于河北银行的支付,支付宝微信都做了,这里就介绍一下微信公众号支付,这个公众号支付需要配置的东西太多了,官方文档 ...

  2. php公众号支付后的微信通知,关于微信公众号支付细数我踩过的坑

    微信公众号支付流程 项目背景: 1.前后端分离,前端是jquery 获取后端接口 (php) 开发流程: 1.配置 进入微信公众平台,申请开通微信支付,不开通就别进行下一步了.开通后,进入左侧的微信支 ...

  3. 微信公众号支付开发手记(node)

    微信支付 前言 总结一下最近业务开发中对微信公众号支付的开发过程,微信支付的开发前提是已经具备可上线微信公众号开发的基础上进行的,如果你的开发阶段目前停留在起步,建议参考这篇文章开始. 好了,来聊一聊 ...

  4. 微信小程序后端框架|微信公众号后端框架(C# WebAPI)

    微信小程序后端框架|微信公众号后端框架(C# WebAPI) 微信小程序 简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的 ...

  5. 微信公众号支付的坑,我已经帮你踩过了(JAVA)

    简单介绍微信公众号支付的申请.接入.使用.支付等相关流程,具体会调到微信的授权登录.支付以及关单等api,里面会着重提到需要注意的坑. 1. 准备阶段: 申请 申请步骤请直接查看微信公众平台官方文档 ...

  6. 微信公众号页面支付接口java,[Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付...

    [Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付 0 2015-09-15 15:00:30 一.调用微信的JS文件 1.首先要绑定[JS接口安全域名],"公众号设置&q ...

  7. js如何调用h5的日期控价_微信公众号支付H5调用支付解析

    最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一.配置公众号微信支付 ...

  8. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付

    本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...

  9. h5通过php微信支付宝支付,用H5调用支付微信公众号支付的解析

    这篇文章主要为大家详细介绍了微信公众号支付H5调用支付,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时 ...

最新文章

  1. Python中“is”和“==”的区别
  2. 2019.2.14 t3 车辆销售
  3. 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
  4. JavaOne正在重建动力
  5. 谷歌开源的 GAN 库--TFGAN
  6. Python协程--生成器(通过异常来判断生成器已经结束)
  7. promise allrace
  8. Linux下 RabbitMQ的安装与配置
  9. 让自律成为你2019年的新名片,快来看这24种建议
  10. MySQL命令行登录
  11. 火狐主页被360导航篡改(360安全卫士中的主页防护导致的)
  12. 交替性注意力_如何培养共同注意力(Joint Attention)——社会性发展基石
  13. 借贷记账法--借贷记账法 (Debit and Credit)
  14. 《数》孙溟㠭先生篆刻
  15. 计算机专业程序员必备的几大技术栈:计算机历史,CPU,操作系统
  16. DO DTO BO AO VO POJO
  17. 3.31-batch和momentum
  18. VisualGDB+Visual Studio 2019+CubeMX构建STM32工程问题记录(持续更新)
  19. java版魔力世纪,魔力世纪下载_魔力世纪Java版下载 - U盘量产网
  20. 走着走着就散了,回忆都淡了,看着看着就倦了,星光也暗了

热门文章

  1. 第一天:罗马房间记忆法(定桩记忆法)
  2. 如何找到适合自己的副业?亲身经历!
  3. 插图表格清单自动生成
  4. 插件 原生js 省市区 三级联动 源码
  5. 高校教材征订系统(Java+Web+MySQL)
  6. 【博学谷学习记录】超强总结,用心分享|产品经理PEST分析方法简析
  7. U盘杀毒与防毒小技巧
  8. mysql什么是外循环和内循环_内循环与外循环
  9. LPR车牌识别系统搭建
  10. CentOS 7 安装 Percona XtraDB Cluster 5.7