关于微信: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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理