业务流程时序图

 image

仔细阅读并看懂 (不是看过,是看明白+看完 ) 微信官方文档 微信开放平台文档;

1.下载微信支付php demo 放在自己的线上服务器上,配置好ngixn(或者apache)网站根目录到php_sdk_v3.0.9/ 下面,将APPID等填入WxPay.Config.php 文件 配置好微信支付需要的信息。

2.商户号微信支付回调地址配成 www.xxx.com/;公众号配置好回调url (方便或者openid)。

3.demo已经准备就绪,浏览器访问www.xxx.com/jsapi.php 出现支付页面,点击支付,弹出输入密码界面,完美!demo已经运行成功,说明微信平台配置没有问题,有问题的请返回去看一下微信的官方文档。

4.接下来进入主题,准备好laravel(我用的是5.4),将php_sdk_v3.0.9/ 复制到app/下改名Wecaht/

 image

5.这几个文件都要改一下require的路径,改为绝对路径 例如:

require_once DIR."/../lib/WxPay.Config.Interface.php";

 image

6.复制jsapi.php 到resources/views/ 改名jsapi.blade.php

 image

7.jsapi.blade.php 源码如下<?php  require_once __DIR__.'/../../../app/Wecaht/lib/WxPay.Api.php';require_once __DIR__.'/../../../app/Wecaht/example/WxPay.JsApiPay.php';// require_once __DIR__.'/../../../app/Wecaht/example/log.php';// $logHandler= new CLogFileHandler(storage_path('logs').'wechat'.date('Y-m-d').'.log');// $log = Log::Init($logHandler, 15);//①、获取用户openid$tools = new JsApiPay(); $openId = $tools->GetOpenid("/pay/wechat?sn=".$orderInfo['sn']); //传参要这样传,还要改一下example/WxPay.JsApiPay.php文件//②、统一下单$input = new WxPayUnifiedOrder();$input->SetBody("微信支付");$input->SetAttach("微信支付");// $input->SetOut_trade_no('xxx'.date("YmdHis").rand(1,100));$input->SetOut_trade_no($orderInfo['sn']);$input->SetTotal_fee($orderInfo['payment']*100);$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis", time() + 600));$input->SetGoods_tag("一袋盐");$input->SetNotify_url("http://www.xxx.xyz/pay/notify");//这里填你的回调路径,是绝对路径,例如http://aaa.com/wechat/notify$input->SetTrade_type("JSAPI");$input->SetOpenid($openId);$config = new WxPayConfig();// $logHandler->write(json_encode($input));// print_r($input);die;$order = WxPayApi::unifiedOrder($config,$input);// echo '**统一下单支付单信息** ';$jsApiParameters = $tools->GetJsApiParameters($order); //获取共享收货地址js函数参数// $editAddress = $tools->GetEditAddressParameters(); //③、在支持成功回调通知中处理成功之后的事宜,见 notify.php/** * 注意: * 1、当你的回调地址不可访问的时候,回调通知会失败,可以通过查询订单来确认支付是否成功 * 2、jsapi支付时需要填入用户openid,WxPay.JsApiPay.php中有获取openid流程 (文档可以参考微信公众平台“网页授权接口”, * 参考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html) */  ?> **该笔订单支付金额为{{$sum}}元** 立即支付

WxPay.JsApiPay.php 还要改个东西public function GetOpenid($addUrl="") { //通过code获得openid if (!isset($_GET['code'])){ //触发微信返回code码 $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$addUrl); $url = $this->_CreateOauthUrlForCode($baseUrl); Header("Location: $url"); exit(); } else { //获取code码,以获取openid         $code = $_GET['code']; $openid = $this->getOpenidFromMp($code); return $openid; } }

8.新建AppControllerpublic function wechat(Request $request)     {         log::info("AppController wechat input",$request->all());         if(!$request->input('sn')){             return redirect()->back();         }         $orderInfo = object2array2(OMD::where('sn',$request->input('sn'))->first());         if(!$orderInfo){             return redirect()->back();         }         return view("jsapi")             ->with(['orderInfo'=>$orderInfo]);//把参数带到jsapi.blade.php     } public function notify(Request $request){         $all = $request->all();         Log::info('AppController notify input:', $all);     //你的回调业务逻辑     }

创建路由Route::group(['prefix' => 'pay' ,'namespace' => 'App'], function () { //微信支付     Route::any('wechat','AppController@wechat');      Route::any('notify','AppController@notify'); });

9.到此大功告成,下次更新一个基于EasyWacht的教程。

作者:刀鱼要到岛上掉

链接:https://www.jianshu.com/p/a25de96e9405

laravel+php+支付功能,laravel+微信支付源码相关推荐

  1. 微信小程序支付功能-服务器端实现(附源码)

    实现了小程序最新的V3版本支付功能, 包括:支付.支付通知.退款.退款通知. 服务器端使用java开发,springboot框架 源码链接在评论中 微信小程序支付功能-服务器端实现(附源码)_哔哩哔哩 ...

  2. GitHub开源的阿里支付宝支付功能和微信支付功能

    GitHub开源的阿里支付宝支付功能和微信支付功能,包括:阿里沙箱环境支付宝测试Demo,支付宝支付整合到spring+ springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需 ...

  3. 网站如何接入微信支付功能?微信支付详细教程它来了(建议收藏)

    2021/9/3/23:23 文章目录 一.微信支付流程分析 1.创建订单接口 1.1.创建订单业务逻辑分析 1.2.创建订单业务逻辑核心代码 2.待支付页面数据回显接口 2.1.待支付页面数据逻辑分 ...

  4. 基于spring-boot+uni-app实现app支付功能(微信/支付宝)服务端

    基于spring-boot+uni-app实现app支付功能(微信/支付宝)服务端 支付宝支付 1 准备工作 申请支付能力 接口加签方式 2代码 依赖 支付宝支付配置类 支付宝控制层 异步通知 微信支 ...

  5. vue功能之“微信支付“

    一.安装并引用依赖 cnpm i qrcode --save import QRCode from 'qrcode'//通过插件生成二维码 二.代码 <template><div c ...

  6. 西米支付:支付宝/微信支付/银联支付通道的接入介绍

    本文以电脑网站支付为例,着重对第三方支付通道的接入进行了分析,包括支付宝支付接入.微信支付接入及银联支付接入. 1.支付宝支付接入 支付宝支付能力主要有当面付.刷脸付.App支付.手机网站支付.电脑网 ...

  7. 2023彩虹易支付最新原版开源网站源码

    2023彩虹易支付最新原版开源网站源码,完整的易支付源码,无后门. 下载地址:https://www.djmale.cn/49.html 一.源码介绍 完整的易支付源码 全开源+批量生成商户+即时到账 ...

  8. 微信支付-java实现微信支付-后端篇

    微信支付系列文章 微信支付-java后端实现 微信支付-vue 前端实现 java demo: 下载地址文章底部 技术栈 Spring boot java XML (微信在http协议中数据传输方案) ...

  9. 微信jsapi支付获取code_微信支付之JSAPI公众号支付详解

    前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 服务号开通的微信支付的认证 腾讯给你的邮件中有商户登录的账号和密码 拥有一个可供上传代码和设置回调域名的网站或云服务 有一点点php知识 ...

  10. Java对接第三方支付渠道之微信支付APIV3版本

    提示:微信支付APIV3版本对接流程梳理,目前微信支付提供APIV3和APIV2两个版本,简而言之,V3版本的安全性比V2更高. Java对接第三方支付渠道之微信支付APIV3版本 一.接入指引 1. ...

最新文章

  1. 常用的 分布式事务 都有哪些?我该用哪个?
  2. 费马大定理:三百年数学圣杯的角逐
  3. SpringMVC_实现简单的增删改查
  4. ASP中的工具类函数收集
  5. 包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解
  6. Flutter:Stream.periodic 示例
  7. java设计模式_工厂方法
  8. 美女同事DL-624+A家庭办公无线路由的解决方案!
  9. linux主线程结束 子线程还能运行么,linux主线程和子线程
  10. 【Java】JShell工具上手即用
  11. 运行npm install命令后的执行过程
  12. 【Java开发规范】hashCode 和 equals 的处理规则
  13. 【转】VNode节点
  14. 解决Visual Studio 2022 python 中文乱码问题
  15. 选课系统服务器,选课系统概要设计
  16. IT大公司面试流程与总结
  17. Windows Server 2008 (IIS)
  18. MySQL入门笔记整理
  19. _kbhit函数详解
  20. 侏儒、精灵、巫师和国王

热门文章

  1. 数据库除关系运算符执行过程详解
  2. Kettle使用_30 作业里使用参数
  3. ip中继对接_IP软交换系统解决方案
  4. Linux下的RTC子系统
  5. input.get_shape()的用法
  6. 通道抠图--火焰,背景颜色统一为黑色
  7. 如何通俗易懂地向别人解释React生命周期方法?
  8. legend---十二、js中的js语句和函数和ready函数的关系是什么
  9. 前端基础12:递归调用,快速排序和简单DOM元素操作
  10. ES6-let和const命令