微信企业付款到零钱
- 须在微信支付平台申请开通相应资格
https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1
2、设置支付平台密钥和下载安全证书
https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=4_3
3、对照官方文档,传递相应字段,根据官方提供的其他支付DEMO改写代码
/**
* 企业付款
*/
public function transfer($id)
{
$orderData = ShopOrder::get($id);//获取订单
trace($orderData,'wxpayorder');
$mp_id = '******';//区分后台公众号标识;
$appinfo = get_mpid_appinfo ( $mp_id ); //获取公众号信息
$cfg = array(
'APPID' => $appinfo['appid'],
'MCHID' => $appinfo['mchid'],
'KEY' => $appinfo['mchkey'],
'APPSECRET' => $appinfo['secret'],
'NOTIFY_URL' => $appinfo['notify_url'],
);
WxPayConfig::setConfig($cfg);//设置公众号信息
if (isset($id) && $id != 0) {
//商户订单
$outid = $orderData->id.date("YmdHis",time()).rand(0,9);
$price = intval($orderData->goods_price*100);
//调用封装类
$input = new WxPayTransfer();
$input->setDesc('商家结算入账');
$input->setPartnerTradeNo($outid); //建议默认的预支付交易单商户订单号由date("YmdHis").'_'.order_id组成
$input->setAmount(100);
$input->setOpenid($orderData->owner_openid);
// $input->setCheckName('FORCE_CHECK');
$input->setCheckName('NO_CHECK');
// $input->setReUserName();
$order = WxPayApi::transfer($input);//传递对象到相应的处理方法
if ($order['return_code'] == 'SUCCESS'){
$orderData->is_checkout =1;
$orderData->check_time = $order['payment_time'];
$orderData->save();
return true;
}else{
trace($order,'企业付款input');
return false;
}
}
}
/**
* 企业付款,WxPayTransfer中好多参数必填必填。文档 https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
* appid、mchid、spbill_create_ip、nonce_str不需要填入
* @param \com\wxpay\database\WxPayTransfer $inputObj
* @param int $timeOut
* @throws WxPayException
* @return array 成功时返回,其他抛异常
* @throws \com\wxpay\WxPayException
*/
public static function transfer($inputObj, $timeOut = 6)
{
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
//检测必填参数
if (!$inputObj->isPartnerTradeNoSet()) {
throw new WxPayException("缺少统一支付接口必填参数PartnerTradeNoSet!");
} else if (!$inputObj->isDescSet()) {
throw new WxPayException("缺少统一支付接口必填参数desc!");
} else if (!$inputObj->isAmountSet()) {
throw new WxPayException("缺少统一支付接口必填参数金钱amount!");
} else if (!$inputObj->isOpenidSet()) {
throw new WxPayException("缺少统一支付接口必填参数openid!");
}
//还有很多,不写了,传够就好
$inputObj->setMchAppid(WxPayConfig::getConfig('APPID'));//公众账号ID
$inputObj->setMchId(WxPayConfig::getConfig('MCHID'));//商户号
$inputObj->setSpbillCreateIp($_SERVER['REMOTE_ADDR']);//终端ip
$inputObj->setNonceStr(self::getNonceStr());//随机字符串
//签名
$inputObj->setSign();
$xml = $inputObj->toXml();
$startTimeStamp = self::getMillisecond();//请求开始时间
$response = self::postXmlCurl($xml, $url, true, $timeOut);//发送请求
// trace($response,'返回');
$result = $inputObj->fromXml($response);
// trace($result,'返回结果');
self::reportCostTime($url, $startTimeStamp, $result);//上报请求花费时间
return $result;
}
注意:
1、下载的证书后,代码设置的证书路径为绝对路径。
2、如果不懂哪里出现了问题,可以抓取微信服务器返回的信息,提示一目了然

浙公网安备 33010602011771号