第一步:使用 composer 安装 EasyWeChathttps://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/wiki/doc/api/tools/mch_pay.php?chapter=14_1。与其他支付接口一样,企业支付接口也需要配置如下参数,需要特别注意的是,企业支付相关的全部接口 都需要使用 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
评论