tp3.2中企业向个人微信钱包零钱付款
第一步:去商户平台账户中心->API安全下载证书会得到一个包cert.
第二步:将cert放入项目根目录下Static/Common/
第三步:将第三方企业向个人付款类库包Weixin放入Application/Common/Libs,类库包Weixin里面目录结构如下图:
第四步:打开lib里面的WxPay.Config.php文件,证书路径如下所示:
//=======【证书路径设置】=====================================
/**
* TODO:设置商户证书路径
* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,
* API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)
* @var path
*/
const SSLCERT_PATH = './Static/Common/cert/apiclient_cert.pem';//SSLCERT_PATH;
const SSLKEY_PATH = './Static/Common/cert/apiclient_key.pem';//SSLKEY_PATH;
第五步:所在的控制器里面上面引入相关类:
use \Common\Libs\Weixin\WechatAuth;//JSSDK 需要用到accessToken
use \Common\Libs\Weixin\JSSDK;//JSSDK
use \Common\Libs\Weixin\ComPay;//红包与企业支付
第五步:类里开始定义构造方法:
//初始化
public function __construct(){
parent::__construct();
define("APPID", 'wx19a64824b7e720c1');//微信公众号APPID
define("MCHID","1375278702");//微信商户号
define("KEY","Ze0Bai1Tong2Qi3Jian4Dian5Gaoshan");//微信商户自定义32为KEY
define("APPSECRET",'d9b2ac41c635e9fbcc3c6085d5cfae5b');//微信公众号appsecret
}
第六步:所用到的方法里面:
//个人现金账户提现
public function getmoney(){
$id=$_GET['id'];//当前登录用户id
$ordercode=$_POST['ordercode'];//订单号
$value=$_POST['money'];//提现的金额
$userdata=M('user')->where(array("id"=>$id))->find();
$xianjin=$userdata['xianjin'];
if($value>$xianjin){
$this->error('提现金额不能超过现金账户余额,且为整数');
}
$fandata=M('fans')->where(array("uid"=>$id))->find();
$openid=$fandata['openid'];
// //生成预订单
$data=[
"user_id"=>$id,
"change"=>-$value,
"ctype"=>"3",
"cmethod"=>"7",
"changetime"=>time(),
"yue_before"=>$xianjin,
"yue_after"=>$xianjin-$value,
"ocode"=>$ordercode,
"status"=>0,
];
//存入记录表log
$reslog=M('log')->add($data);
//企业付款(第一种方法)
$rb = new ComPay();
$fee = $value*100;
$body = '企业支付';
$rb->setOpenid($openid);
$rb->setAmount($fee);
$rb->setMchid(MCHID);
$rb->setApiKey(KEY);
$rb->setMchAppid(APPID);
$rb->setDesc($body);
$res = $rb->ComPay();
if($res){
$new_xianjin=$xianjin-$value;
$data=[
"xianjin"=>$new_xianjin,
];
$res=M('user')->where(array("id"=>$id))->save($data);
$da=[
"status"=>1,
];
$relogs=M('log')->where(array("ocode"=>$ordercode))->save($da);
$this->success('提现成功');
}else{
$this->error($rb->error());
}
//第二种方法(未测试)
// $params["desc"]="现金账户提现";
// $params["openid"]=$openid;
// $params["mch_appid"]=APPID;
// $params["mchid"]=MCHID;
// $key= KEY;
// $params["amount"]=$value;
// $apicent_cert='./Static/Common/cert/apiclient_cert.pem';
// $apiclient_key='./Static/Common/cert/apiclient_key.pem';
// Wxpay::payToUser($params, $key, $apicent_cert, $apiclient_key);
// $appId = "wx19a64824b7e720c1";
// $mchid = "1375278702";
// $nonce_str=date('YmdHis',time()).rand(10000,99999);
// $sign=md5($appId);
// $partner_trade_no=date('YmdHis',time()).rand(10000,99999);
// $check_name="NO_CHECK";
// $amount=$value;
// $desc="现金账户提现";
// $spbill_create_ip="47.94.44.189";
// $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers&mch_appid=".$appId."&mchid=".$mchid."&nonce_str=".$nonce_str."&sign=".$sign."&partner_trade_no=".$partner_trade_no."&check_name=".$check_name."&amount=".$amount."&desc=".$desc."&spbill_create_ip=".$spbill_create_ip;
// //初始化curl
// $ch = curl_init($url);
// //3.设置参数
// curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过证书验证
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
// //4.调用接口
// $res = curl_exec($ch);
// if(curl_errno($ch)){
// var_dump(curl_error($ch));
// }
// $resArr = json_decode($res,true);
// //5.关闭curl
// curl_close($ch);
// var_dump($resArr);
}