美文网首页
【跟我做】简单两部使用laravel-easy-WeChat包快

【跟我做】简单两部使用laravel-easy-WeChat包快

作者: 安子尘 | 来源:发表于2018-12-02 21:16 被阅读0次

    最近在使用laravel框架做一款小程序后台,要使用到微信用户提现到零钱包功能,在网上翻了一下大多都是用户下单支付给企业的教程,针对企业付款给用户的教程很少,特别是支付回调功能有个坑,浪费了不少时间。

    第一步:

    1.安装包文件:(如果使用更高版本,请查看easywechat文档)

    ```

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

    ```

    注册ServiceProvider:在config下的app.php中的 providers 数组中添加:

    ```

    Overtrue\LaravelWechat\ServiceProvider::class,

    ```

    创建配置文件:在命令行中执行

    ```

    php artisan vendor:publish --provider="Overtrue\LaravelWechat\ServiceProvider"

    ```

    第二步:

    统一下单

    没错,什么 H5 支付,公众号支付,扫码支付,全部都是用这个接口下单。

    在控制器内引用

    ```

    <?php

    namespace App\Http\Controllers\Dashboard;

    use App\Http\Controllers\Controller;

    use Illuminate\Http\Request;

    use EasyWeChat\Factory;//引入支付门面类

    use DB;

    class WithdrawController extends Controller {

        public function transferToUser($id,Request $request){

            $config = [

        // 必要配置

        'app_id'            => 'XXXX',//微信appid

        'mch_id'            =>'XXXX',//商户id

        'key'                => 'XXXX',  // API 密钥

        // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)

        'cert_path'          => base_path().'/public/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!

                'key_path'          => base_path().'/public/cert/apiclient_key.pem',      // XXX: 绝对路径!!!!

    ];

    $app = Factory::payment($config);

    $result=$app->transfer->toBalance([

        'partner_trade_no' =>'SN12345678XXXXXXXXXX', //特别注意这里,参数跟用户支付给企业out_trade_no区分开来,这里可以使用随机字符串作为订单号,跟红包和支付一个概念。

            'openid' => 'XXXXX', //收款人的openid

            'check_name' => 'FORCE_CHECK',  //文档中有三种校验实名的方法 NO_CHECK不校验 OPTION_CHECK参数校验 FORCE_CHECK强制校验

            're_user_name'=>'',    //OPTION_CHECK FORCE_CHECK 校验实名的时候必须提交

            'amount' =>'XXXX',  //单位为分

            'desc' => '钱包提现',

            'spbill_create_ip' => '39.108.XXX.VVV',  //发起交易的服务器IP地址

    ]);

        if($result['result_code']=='SUCCESS'){

        //这里写支付成功相关逻辑,更新数据库订单状态为已付款,给用户推送到账模板消息,短信通知用户等

        }else{

                //支付失败相关回调处理

            }

        }

    }

    ```

    至此整个企业付款到零钱的功能就实现了。

    这里要注意的是企业付款到用户零钱是没有回调通知的,如果要二次确认款项是否到账可以调用下面方法

    ```

    //查询付款到零钱的订单

    public function queryOrder(){

    $config = [

        // 必要配置

        'app_id'            => 'XXXX',//微信appid

        'mch_id'            =>'XXXX',//商户id

        'key'                => 'XXXX',  // API 密钥

        // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)

      'cert_path'          => base_path().'/public/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!

        'key_path'          => base_path().'/public/cert/apiclient_key.pem',      // XXX: 绝对路径!!!!

    ];

          $app = Factory::payment($config);

          $partnerTradeNo = 1233455;

          $app->transfer->queryBalanceOrder($partnerTradeNo);

    }

    ```

    相关文章

      网友评论

          本文标题:【跟我做】简单两部使用laravel-easy-WeChat包快

          本文链接:https://www.haomeiwen.com/subject/hruscqtx.html