乐趣区

关于微信:PHP项目微信提现功能代码详解

第一步:应用 composer 装置 EasyWeChat
https://www.easywechat.com/docs/3.x/installation
第二步:在后面咱们曾经讲过,初始化 SDK 的时候办法就是创立一个

 EasyWeChat\Foundation\Application 实例:use EasyWeChat\Foundation\Application;
$options = [// ...];
$app = new Application($options);
/**
* 如果想要在 Application 实例化实现之后, 批改某一个 options 的值,
* 比方服务商 + 子商户领取回调场景, 所有子商户订单领取信息都是通过同一个服务商的 $option 配置进来的,
* 当 oauth 在微信端验证实现之后, 能够通过动静设置 merchant_id 来辨别具体是哪个子商户
*/$app['config']->set('oauth.callback','wechat/oauthcallback/'. $sub_merchant_id->id);

那么配置的具体选项有哪些,上面是一个残缺的列表:

<?php
return [
    /**
     * 账号根本信息,请从微信公众平台 / 开放平台获取
     */
    'app_id'  => 'your-app-id',         // AppID
    'secret'  => 'your-app-secret',     // AppSecret
    'token'   => 'your-token',          // Token
    'aes_key' => '',                    // EncodingAESKey,平安模式与兼容模式下请肯定要填写!!!/**
     * OAuth 配置
     *
     * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
     * callback:OAuth 受权实现后的回调页地址
     */
    'oauth' => ['scopes'   => ['snsapi_userinfo'],
        'callback' => '/examples/oauth_callback.php',
    ],
    /**
     * 微信领取
     */
    'payment' => [
        'merchant_id'        => 'your-mch-id',
        'key'                => 'key-for-signature',
        'cert_path'          => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!'key_path'           => 'path/to/your/key',      // XXX: 绝对路径!!!!],
     * 更多请参考:http://docs.guzzlephp.org/en/latest/request-options.html
     */
    'guzzle' => ['timeout' => 3.0, // 超时工夫(秒)],];

第三步:应用 EasyWeChat 实现提现到零钱性能(企业付款到零钱)
你在浏览本文之前确认你曾经仔细阅读了:https://pay.weixin.qq.com/wik…。
与其余领取接口一样,企业领取接口也须要配置如下参数,须要特地留神的是,企业领取相干的全副接口 都须要应用 SSL 证书,因而 cert_path 以及 cert_key 必须正确配置。

<?php
use EasyWeChat\Foundation\Application;
$options = [
    'app_id' => 'your-app-id',
    // payment
    'payment' => [
        'merchant_id'        => 'your-mch-id',
        'key'                => 'key-for-signature',
        'cert_path'          => 'path/to/your/cert.pem',
        'key_path'           => 'path/to/your/key',
        // ...
    ],];
$app = new Application($options);
$merchantPay = $app->merchant_pay;

企业付款

企业付款应用的余额跟微信领取的收款并非同一账户,请留神充值。

<?php
$merchantPayData = ['partner_trade_no' => str_random(16), // 随机字符串作为订单号,跟红包和领取一个概念。'openid' => $openid, // 收款人的 openid
        'check_name' => 'NO_CHECK',  // 文档中有三种校验实名的办法 NO_CHECK OPTION_CHECK FORCE_CHECK
        're_user_name'=>'张三',     //OPTION_CHECK FORCE_CHECK 校验实名的时候必须提交
        'amount' => 100,  // 单位为分
        'desc' => '企业付款',
        'spbill_create_ip' => '192.168.0.1',  // 发动交易的 IP 地址
    ];
$result = $merchantPay->send($merchantPayData);

查问付款信息
用于商户对已发放的企业领取进行查问企业领取的具体信息。

$partnerTradeNo = “ 商户零碎外部的订单号(partner_trade_no)”;
$merchantPay->query($partnerTradeNo);
常识付费零碎的微信性能根本类 extend\service\WechatService;依照文档阐明咱们在 WechatService 类中增加企业付款的接口,接口名称为 merchantPayService,若是存在就不须要增加;

/**
 * 企业付款
 * @return \EasyWeChat\Material\Material
 */
public static function merchantPayService()
{return self::application()->merchant_pay;
}

那么咱们所须要的就是调用 merchantPayService 办法里的 send 办法,并且传入咱们转账的参数即可。
咱们须要把性能加到提现审核通过之后执行。admin\model\user\UserExtract;找到这个类中的 changeSuccess 办法,这个办法是审核通过后的相干操作。
(1). 先引入 WechatService;

use service\WechatService;

(2).changeSuccess 办法里加上面代码,并且依据最初的返回判断企业付款是否胜利。

$payData = ['partner_trade_no' => str_random(16), // 随机字符串作为订单号,跟红包和领取一个概念。'openid' => $openid, // 收款人的 openid
    'check_name' => 'NO_CHECK',  // 文档中有三种校验实名的办法 NO_CHECK OPTION_CHECK FORCE_CHECK
    're_user_name'=>'张三',     //OPTION_CHECK FORCE_CHECK 校验实名的时候必须提交
    'amount' => 100,  // 单位为分
    'desc' => '企业付款',
    'spbill_create_ip' => '192.168.0.1',  // 发动交易的 IP 地址
];
$result=WechatService::merchantPayService()->send($payData);

最初
如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点 star:http://github.crmeb.net/u/defu 不胜感激!

收费获取源码地址:http://www.crmeb.com

PHP 学习手册:https://doc.crmeb.com

技术交换论坛:https://q.crmeb.com

退出移动版