文档章节

laravel 微信支付

vio小黑
 vio小黑
发布于 10/16 18:13
字数 642
阅读 8
收藏 0

1.composer加载laravel微信支付第三方文件

composer require "overtrue/laravel-wechat:~4.0"

composer require simplesoftwareio/simple-qrcode 1.3.*  //composer生成二维码文件

 

2.改config\app.php文件
'providers' => [
    // ...
    Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
    // ...
    'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],

在 config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)

 

3.写微信支付控制器

<?php

namespace App\Http\Api;


use App\Model\Order;
use App\Model\OrderGoods;
use EasyWeChat\Factory;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use SimpleSoftwareIO\QrCode\Facades\QrCode;


class WeChatController extends Controller
{
    //
    private function get()
    {
        $config = [
            'app_id' => 'your app_id',
            'mch_id' => 'your mch_id',
            'key' => 'your key',
            // 'token' => 'TestToken',
            //'response_type' => 'array',
            //'notify_url' => '',
            // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
            //'cert_path'          => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!
            //'key_path'           => 'path/to/your/key',      // XXX: 绝对路径!!!!
            'log' => [
                'level' => 'debug',
               'permission' => 0777,
                'file' => base_path().'\wechat.log',
            ],
        ];
        //$app = app('wechat.payment');
        $app = Factory::payment($config);
        return $app;
    }

    public function code(Request $request)
    {

        $app = $this->get();

       //dd(unserialize(file_get_contents(base_path().'\massage.txt')));
//        $order = Order::find($request->order_id);
        //dd($app->order->queryByOutTradeNumber($order->sn));
        $result = $app->order->unify([
            'body' => '购买产品',
           'out_trade_no' => 's545a64',//$order->sn,
           // 'total_fee' => $order->total_price*100,
            'total_fee' => 0.01*100,
            //'spbill_create_ip' => '127.0.0.1', // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
            'notify_url' => 'http://9a58e240.ngrok.io/api/success', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
            //'notify_url' => 'http://www.yzyp.com/api/success', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
            'trade_type' => 'NATIVE', // 请对应换成你的支付方式对应的值类型
            'product_id' => 'wx4706a9fcbbca10f2',
            //'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o',
        ]);
        if($result['result_code'] === 'FAIL'){
            return [
                'code'=>0,
                'message'=>$result['err_code_des'],
            ];
        }
        if($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS'){
            $re = QrCode::format('svg')->size(100)->errorCorrection("L")->generate($result['code_url']);
            return $re;
        }
    }


    public function success()
    {
        $app = $this->get();
        $response = $app->handlePaidNotify(function($message, $fail) use($app){
            //判断订单状态
            $order = Order::where('sn',$message['out_trade_no'])->first();
            if(!$order || $order->status ==1){
                return true;
              }
              //判断用户支付状态
            if ($message['return_code'] === 'SUCCESS') {
                // 用户是否支付成功
                if ($message['result_code'] === 'SUCCESS') {
                    //修改订单状态
                    $order->update([
                        'status' => 1,
                    ]);
                }
            } else {
                return $fail('通信失败,请稍后再通知我');
            }
            return true;
;        });
        return $response;
    }


    public function test()
    {
        $message = unserialize(file_get_contents(base_path().'\massage.txt'));
        file_put_contents(storage_path().'\logs\WeChat.txt',serialize($message).PHP_EOL,FILE_APPEND);

    }

}

4.调用code接口

 

PS:错误一

GuzzleHttp \ Exception \ RequestException
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

回答:这是由于是在本地测试,不是安全路径,所以需要添加文件cacert.pem到WWW同级目录,

     例:如果使用的是phpstudy,则目录为phpStudy\PHPTutorial\cacert.pem

在php.ini中任意位置添加    curl.cainfo = "D:\phpStudy\PHPTutorial\cacert.pem"

重启phpStudy,访问code接口,扫码完成支付

© 著作权归作者所有

共有 人打赏支持
上一篇: laravel删除图片
下一篇: laravel 微信支付
vio小黑
粉丝 0
博文 39
码字总数 20883
作品 0
成都
私信 提问
Notadd v1.0-Beta6 fix3 发布——基于 Laravel 的模块化开发框架

Notadd v1.0-Beta6 fix3 发布了,详细的改进内容包括: 修复&优化 合并 static 与 public 目录,与 laravel 相同。 修复 mac 下因系统信息显示导致无法登陆后台的 BUG 修复 windows 下显示乱...

左华栋
2017/11/27
506
0
lumen PHP7 APP支付 原生微信支付 微信异步回调问题

用的lumen写的接口,APP支付。 PHP 7 。微信支付。按照微信官网文档写的。能正常生成prepayid给客户端,但是客户端支付成功后,微信异步回调接口一直没有接收到数据。网上查了好多原因: 1、...

努力的C
06/29
0
0
EasyWeChat初体验

环境需求 PHP >= 5.5.9 openssl 拓展 fileinfo 拓展(素材管理模块需要用到) 安装 使用 composer(注意:他会自动检索该目录下的composer.json,请确认好安装目录): 在框架中使用 EasyWeCh...

NateHuang
2016/08/23
2.2K
0
Notadd Beta5_fix1 优化性能,支持树莓派安装

修复&优化 添加底层缓存机制,优化并提升性能(约 5 倍) 修复安装检测 public 及 pdo_mysql 问题 修复模块和插件加载的问题 修复树莓派下不能正常安装的问题 后台添加 Redis 版本的显示 后台...

左华栋
2017/09/28
579
10
Laravel 不权威导航

Laravel不权威导航 Hi 这里是Roy整理的Laravel相关索引,希望能帮到大家 ,目前只是一小部分,正在努力整理中... Laravel 文档 Laravel 官方文档 —— 英文 Laravel 中文文档 —— laravel-...

weixingo
2016/02/05
180
0

没有更多内容

加载失败,请刷新页面

加载更多

并行执行器

工作中出现某些代码需要并行执行以提高程序运算速度的情况,所以写了一个小工具。 public class Main {public static void main(String[] args) {// 你可以通过注释下面的部分代码来探索...

wanxiangming
24分钟前
0
0
AI赋能一键自动检测:页面异常、控件异常、文本异常

摘要: 1.前言 闲鱼质量团队一直致力于交付高质量的app给用户,当前随着AI技术不断发展,TensorFlow大热,也给测试手段带来了更多种可能,本文接下来给大家介绍AI在闲鱼测试的一点实践:如何...

阿里云官方博客
32分钟前
2
0
Microsoft Remote Desktop For Mac

地址:https://rink.hockeyapp.net/apps/5e0c144289a51fca2d3bfa39ce7f2b06/ 解决国内App store不能下载的问题。

Cheuker
43分钟前
1
0
原地打印刷新(倒计时)

原地打印刷新(倒计时) 代码如下 from time import sleepfor i in reversed(range(1, 11)): print("\r倒计时:{}秒".format(i), end="") sleep(1)...

_Change_
55分钟前
1
0
php,vue,vue-ssr 做出来的页面有什么区别?

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由shirishiyue发表于云+社区专栏 目前我这边的web页面,都是采用php+smarty模板生成的,是一种比较早期的开发模式。好处是没...

腾讯云加社区
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部