微信商户 API 企业付款!

代码备份录——微信企业付款

代码

$partner_trade_no = strtoupper(Date("YmdHis").str_random(14).rand(1111,9999)); // 商户订单号
$nonce_str = substr(md5(time().rand(1,9999)),1,32);
$openid = "";//
$amount = 100; // 单位为分,付款金额
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
$data = [
    "mch_appid"=>___wx_appid,
    "mchid"=>___wx_mch_id,
    "nonce_str"=>$nonce_str,
    "partner_trade_no"=>$partner_trade_no,
    "openid"=>$openid,
    "check_name"=>"NO_CHECK",
    "amount"=>$amount,
    "desc"=>"付款原因",
    "spbill_create_ip"=>$request->getClientIp(),
];
ksort($data);
$sign = strtoupper(md5(ToUrlParams($data)."&key=".___wx_pay_key));
$data = array_merge($data,array("sign"=>$sign));
$data = ToXml($data);
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,"{$url}");
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($curl,CURLOPT_SSLCERT,app_path('Cert/apiclient_cert.pem'));
curl_setopt($curl,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($curl,CURLOPT_SSLKEY,app_path('Cert/apiclient_key.pem'));
$string = curl_exec($curl);
curl_close($curl);
$strpostData = simplexml_load_string($string);
$stringData = [];
foreach ($strpostData->children() as $child){
    $stringData = array_merge($stringData,array($child->getName()=>(string)$child));
}

Log::info(["付款数据",$stringData]);
if($stringData["return_code"] == "SUCCESS" && $stringData["result_code"] == "SUCCESS") {
    // 付款成功...
}
return;

方法内的参数,请参考另一篇文章 微信商户 API 发红包!

本作品采用《CC 协议》,转载必须注明作者和本文链接
朝着梦,踏平坎坷
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
$string = 'hello';
if( 'success'=== $ret ){
    // to-do
}
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!