微信企业零钱支付功能接口记录 laravel运行

1.开通微信商户平台
2,申请微信企业零钱支付
条件要达到才可以开通
在这里插入图片描述
3.开通后申请api密钥
在这里插入图片描述
下面是代码

namespace App\Http\Controllers\Vapi;use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;//企业付款到微信零钱,PHP接口调用方法
define("APPID", "商户账号appid"); // 商户账号appid
define("MCHID", "商户号");      // 商户号
define("SECRECT_KEY", "支付密钥签名 ");  //支付密钥签名 这个就是个API密码。MD5 32位。
define("IP", "服务器IP");   //服务器IP
class BusinesschangeController extends Controller
{public function businesschange(){self::sendMoney(1,'oEG8_w2-pSuN4Xh3xShj9lD3V1pM','直播间红包提现','xiaoman');}/*** [sendMoney 企业付款到零钱]* @param  [type] $amount     [发送的金额(分)目前发送金额不能少于1元]* @param  [type] $re_openid  [发送人的 openid]* @param  string $desc       [企业付款描述信息 (必填)]* @param  string $check_name [收款用户姓名 (选填)]* @return [type]             [description]*/function sendMoney($amount,$re_openid,$desc='测试',$check_name=''){$total_amount = (100) * $amount;$data=array('mch_appid'=>APPID,//商户账号appid'mchid'=> MCHID,//商户号'nonce_str'=>self::createNoncestr(),//随机字符串'partner_trade_no'=> date('YmdHis').rand(1000, 9999),//商户订单号'openid'=> $re_openid,//用户openid'check_name'=>'NO_CHECK',//校验用户姓名选项,'re_user_name'=> $check_name,//收款用户姓名'amount'=>$total_amount,//金额'desc'=> $desc,//企业付款描述信息'spbill_create_ip'=> IP,//Ip地址);//生成签名算法$secrect_key=SECRECT_KEY;///这个就是个API密码。MD5 32位。$data=array_filter($data);ksort($data);$str='';foreach($data as $k=>$v) {$str.=$k.'='.$v.'&';}$str.='key='.$secrect_key;$data['sign']=md5($str);//生成签名算法$xml=self::arraytoxml($data);$url='https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //调用接口$res=self::curl_post_ssl($url,$xml);$return=self::xmltoarray($res);print_r($return);//返回来的结果是xml,最后转换成数组/*array(9) {["return_code"]=>string(7) "SUCCESS"["return_msg"]=>array(0) {}["mch_appid"]=>string(18) "wx57676786465544b2a5"["mchid"]=>string(10) "143345612"["nonce_str"]=>string(32) "iw6TtHdOySMAfS81qcnqXojwUMn8l8mY"["result_code"]=>string(7) "SUCCESS"["partner_trade_no"]=>string(18) "201807011410504098"["payment_no"]=>string(28) "1000018301201807019357038738"["payment_time"]=>string(19) "2018-07-01 14:56:35"}*/$responseObj = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA);echo $res= $responseObj->return_code;  //SUCCESS  如果返回来SUCCESS,则发生成功,处理自己的逻辑return $res;}/*** [xmltoarray xml格式转换为数组]* @param  [type] $xml [xml]* @return [type]      [xml 转化为array]*/function xmltoarray($xml) { //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring),true); return $val;}/*** [arraytoxml 将数组转换成xml格式(简单方法):]* @param  [type] $data [数组]* @return [type]       [array 转 xml]*/function arraytoxml($data){$str='';foreach($data as $k=>$v) {$str.='<'.$k.'>'.$v.'.$k.'>';}$str.='';return $str;}/*** [createNoncestr 生成随机字符串]* @param  integer $length [长度]* @return [type]          [字母大小写加数字]*/function createNoncestr($length =32){$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz0123456789";  $str ="";for($i=0;$i<$length;$i++){  $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);   }  return $str;}/*** [curl_post_ssl 发送curl_post数据]* @param  [type]  $url     [发送地址]* @param  [type]  $xmldata [发送文件格式]* @param  [type]  $second [设置执行最长秒数]* @param  [type]  $aHeader [设置头部]* @return [type]           [description]*/function curl_post_ssl($url, $xmldata, $second = 30, $aHeader = array()){$isdir = $_SERVER['DOCUMENT_ROOT']."/yun_cert/";//证书位置;绝对路径$ch = curl_init();//初始化curlcurl_setopt($ch, CURLOPT_TIMEOUT, $second);//设置执行最长秒数curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 终止从服务端进行验证curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');//证书类型curl_setopt($ch, CURLOPT_SSLCERT, $isdir . 'apiclient_cert.pem');//证书位置curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//证书位置curl_setopt($ch, CURLOPT_CAINFO, 'PEM');curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem');if (count($aHeader) >= 1) {curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//设置头部}curl_setopt($ch, CURLOPT_POST, 1);//post提交方式curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);//全部数据使用HTTP协议中的"POST"操作来发送$data = curl_exec($ch);//执行回话if ($data) {curl_close($ch);return $data;} else {$error = curl_errno($ch);echo "call faild, errorCode:$error\n";curl_close($ch);return false;}}}

define(“APPID”, " 商户账号appid"); // 商户账号appid
在这里插入图片描述
define(“SECRECT_KEY”, "支付密钥签名 "); //支付密钥签名 这个就是个API密码。MD5 32位。
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部