【跟我做】简单两部使用laravel-easy-WeChat包快速实现微信企业付款到用户零钱包功能...

最近在使用laravel框架做一款小程序后台,要使用到微信用户提现到零钱包功能,在网上翻了一下大多都是用户下单支付给企业的教程,针对企业付款给用户的教程很少,特别是支付回调功能有个坑,浪费了不少时间。

第一步:

1.安装包文件:(如果使用更高版本,请查看easywechat文档)

composer require "overtrue/laravel-wechat:~4.0"

注册ServiceProvider:在config下的app.php中的 providers 数组中添加:

Overtrue\LaravelWechat\ServiceProvider::class,

创建配置文件:在命令行中执行

php artisan vendor:publish --provider="Overtrue\LaravelWechat\ServiceProvider"

第二步:

统一下单 没错,什么 H5 支付,公众号支付,扫码支付,全部都是用这个接口下单。

在控制器内引用

<?php
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use EasyWeChat\Factory;//引入支付门面类

class WithdrawController extends Controller {
public function transferToUser($id,Request $request){ 
	$config = [ // 必要配置 
	'app\_id' => 'XXXX',//微信appid 
	'mch\_id' =>'XXXX',//商户id 'key' => 'XXXX', // API 密钥
	    // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
	'cert_path'          => base_path().'/public/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
    'key_path'           => base_path().'/public/cert/apiclient_key.pem',      // XXX: 绝对路径!!!!
	];

	$app = Factory::payment($config);
	$result=$app->transfer->toBalance([
	'partner_trade_no' =>'SN12345678XXXXXXXXXX', //特别注意这里,参数跟用户支付给企业out_trade_no区分开来,这里可以使用随机字符串作为订单号,跟红包和支付一个概念。
    'openid' => 'XXXXX', //收款人的openid
    'check_name' => 'FORCE_CHECK',  //文档中有三种校验实名的方法 NO_CHECK不校验 OPTION_CHECK参数校验 FORCE_CHECK强制校验
    're_user_name'=>'',     //OPTION_CHECK FORCE_CHECK 校验实名的时候必须提交
    'amount' =>'XXXX',  //单位为分
    'desc' => '钱包提现',
    'spbill_create_ip' => '39.108.XXX.VVV',  //发起交易的服务器IP地址
]);
if($result['result_code']=='SUCCESS'){
	 //这里写支付成功相关逻辑,更新数据库订单状态为已付款,给用户推送到账模板消息,短信通知用户等
	}else{
        //支付失败相关回调处理
    }
}
}

至此整个企业付款到零钱的功能就实现了。

这里要注意的是企业付款到用户零钱是没有回调通知的,如果要二次确认款项是否到账可以调用下面方法

查询付款到零钱的订单

public function queryOrder(){
$config = [
	// 必要配置 
	'app\_id' => 'XXXX',//微信appid
	'mch\_id' =>'XXXX',//商户id
	'key' => 'XXXX', // API 密钥
	// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书) 
	'cert_path' => base_path().'/public/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
	'key\_path' => base\_path().'/public/cert/apiclient_key.pem', // XXX: 绝对路径!!!! 
	];
   $app = Factory::payment($config);
   $partnerTradeNo = 1233455;
 	$res= $app->transfer->queryBalanceOrder($partnerTradeNo);
}

转载于:https://my.oschina.net/babyanzichen/blog/2966541

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值