支付宝的企业用户是很方便的,收款后可转到我的支付宝,而后就进入我的卡了。微信支付默认都是须要对公帐号,T+x结算,那怎么能像支付宝同样提现到我的卡,知足咱们这些小老板那?这就有了"企业付款到零钱"接口,它可能更可能是一个策略。php
看看下面的三个图(好不容易让一个草榴网友在国外找到的)web
2017年会更多....在小马哥和小龙哥的带领下,微信小伙伴充分发扬龙马精神,尤为支付市场,步步蚕食,好不痛快。编程
这也是工兵连在讲支付的时候先说微信的缘由,好了,很少说废话,毕竟我这是严肃的原创技术文章。api
先贴一个官网说明:“企业付款提供由商户直接付钱至用户微信零钱的能力,支持平台操做及接口调用两种方式,资金到帐速度快,使用及查询方便。主要用来解决合理的商户对用户付款需求,好比:保险理赔、彩票兑换等等。”安全
对于上述定义,北哥用大白话作下诠释服务器
这个接口能够编程。微信
钱最后进入了会员的微信零钱包。yii2
基于公众号配置,须要填写appId和会员的openid。app
因而一个特别好的需求就诞生了,咱们如今就作一个后台会员的打款功能。微信公众平台
首先你必须开通微信支付且拥有“企业付款到零钱”的权限,进入微信支付 ➭ 产品中心,看看有没有企业付款到零钱,有就开通它,没有那就歇菜了~
如今开通这个也愈来愈难了,之前企业帐号都是默认有,如今须要 一、商户号已入驻90日 二、商户号有30天连续正常交易。
因此说干啥都要尽快,要不吃屎都赶不上热乎的。
咱们须要3个参数和2个证书。
appId & mchid & key (参数能够在公众号后台找到)
cert & key 证书 (微信支付平台 ➭ 帐户中心 ➭ API安全 ➭ 下载证书)
下载后证书目录以下
咱们是PHP环境,因此须要使用其中的apiclient_cert.pem、apiclient_key.pem以及rootca.pem这3个,将这些证书文件保存到你服务器上,最好不要放到web下,放到@app下比较安全。
能够如我所作。
// 配置文件conf/params.php return [ 'WECHAT'=>[ /** * Debug 模式,bool 值:true/false * * 当值为 false 时,全部的日志都不会记录 */ 'debug' => true, /** * 帐号基本信息,请从微信公众平台/开放平台获取 */ 'app_id' => '必需要', // AppID 'secret' => '不是必须的', // AppSecret 'token' => '不是必须的', // Token 'aes_key' => '', ... 'payment' => [ 'merchant_id' => '必需要', 'key' => '必需要', 'cert_path' => 'path/to/your/cert.pem'//必须 'key_path' => 'path/to/your/key'//必须 ], ], ];
app_id、merchant_id、key、cert_path、key_path都是必须填写的,其中cert_path和key_path须要有效的物理路径。
我将证书放到了yii2程序根目录 /cert文件夹。所以如上路径配置。
咱们假设指定一个action来作打款的事情,使用EasyWeChat后代码变的更加简单。
// index.php?r=admin/user/send-money namespace app\modules\admin\controllers; use yii\web\Controller; use EasyWeChat\Foundation\Application; use Yii; class UserController extends Controller { .... /** * 给id会员微信打款 * $params $money */ public function actionSendMoney($id,$money){ $user = User::findOne($id); // 配置支付参数 $conf = Yii::$app->params['WECHAT']; $wxApp = new Application($config); // 初始化微信企业支付对象 $merchantPay = $wxApp->merchant_pay; // 初始化支付到零钱包订单信息 $merchantPayData = [ //随机字符串做为订单号,跟红包和支付一个概念。 'partner_trade_no' => str_random(16), 'openid' => $user->open_id, 'check_name' => 'NO_CHECK', 'amount' => $money*100, //单位为分 'desc' => "打款秒杀", 'spbill_create_ip' =>$_SERVER['REMOTE_ADDR'] ]; $result = $merchantPay->send($merchantPayData); //$result['result_code']是否为SUCCESS 来判断是否成功,若是失败则信息再$result['err_code_des']内。 } ... }
咱们看到了,通过EasyWeChat封装后的企业付款到零钱包变的很是简洁,配置一些必填项,而后传给 $merchantPay->send 便可。
返回的 $result 和官方文档一致。开启穿越
固然仍是要有些注意的地方
spbill_create_ip 不少时候你本地调试发现不成功都是由于这个致使的
amount 企业付款金额最少为1元,就是说amount最少是100,微信支付里金额的单位都是分。
desc 这个字段不要乱写,在接收者微信零钱明细列表中会是 “企业付款:你的desc”
咱们还能够经过EasyWechat来查询到零钱包的记录信息,留给你们本身思考,若是不会请留言。
最后为什么开篇说对战支付宝那,这要追溯下“企业付款到零钱”的历史了,最开始它是必须先充值才能使用,可是去年年底出了一个运营帐号的概念,你能够把和客户交易的钱直接转到企业付款里来。
这点改动也许对于微信是想让你的钱不要出去,仍然在我微信里玩。但是对于不少好比饭店、小企业而言,这个功能等价因而 公到私,和支付宝殊途同归,大大的方便了。
阿北曾经给一个饭店老板作自助订餐,眼看他天天一、2万的经过企业付款转帐到我的微信上来,有机会也给你们讲讲YII2实现的订餐系统以及20w数据表的优化技巧。
好了,就到这里,有啥不懂的请留言。
(完)