前言
在微信公众号/小程序商城项目中,经常会遇到佣金、余额提现的需求,那么在微信商城项目中,怎么实现让用户微信提现到零钱这个功能?相信很多同学都遇到了这个问题,具体开发过程中怎么解决这个问题,请看小编给大家带来的微信提现方法介绍,希望对您有所帮助!
第一步:使用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);
那么配置的具体选项有哪些,下面是一个完整的列表:
 '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完成提现到零钱功能(企业付款到零钱)
你在阅读本文之前确认你已经仔细阅读了:微信支付 | 企业付款文档 。
与其他支付接口一样,企业支付接口也需要配置如下参数,需要特别注意的是,企业支付相关的全部接口 都需要使用 SSL 证书,因此 cert_path 以及 cert_key 必须正确配置。
 '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;企业付款
企业付款使用的余额跟微信支付的收款并非同一账户,请注意充值。
 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);
 
                         
                         
                     
                         
                     
                     
                     
                     
                     
                             
                                    
 
                     
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                     
                 
                         
                     
                 
         
         
             
         
         
         
		