首页IT科技微信支付商家转账到零钱开通审核期间交易流水断了(微信支付 “商家转账到零钱”)

微信支付商家转账到零钱开通审核期间交易流水断了(微信支付 “商家转账到零钱”)

时间2025-05-04 19:39:32分类IT科技浏览5009
导读:​...

这里有个坑

1:转账低于5毛会失败

2:转账金额需要自己取整一下            ,微信官方金额是 分 为单位                    ,换算成 元 时可能会除不尽

1.服务层

const SSLCERT_PATH = 证书路径; const SSLKEY_PATH = 证书key路径; const MCHID = 商户号; const APPID = app_id; const KEY = key值; /** * 付款到微信零钱 * sOpenid:收款方openid * nMoney:转账金额 */ public function transfer_batches($sOpenid, $nMoney) { // 付款到零钱方法url $url = https://api.mch.weixin.qq.com/v3/transfer/batches; // 订单号 $sOrderId = 测试付款 . time(); // 转账备注 (微信用户会收到该备注) $tRemark = 测试付款 . $sOrderId; // 转账金额:微信是分为单位 *100 转换 $transfer_amount = $nMoney * 100; // 转账接收列表设置 $transfer_detail_list = array( [ out_detail_no => $sOrderId, // 明细单号 transfer_amount => intval($transfer_amount), // 转账总金额 transfer_remark => $tRemark, // 单条转账备注 openid => $sOpenid, // 收款方openid // user_name => 张三, // 转账金额 >= 2,000元      ,收款用户姓名必填 ], ); // 请求参数设置 $params = [ // 请求参数设置 appid => self::APPID, // 文档顶部定义 out_batch_no => $sOrderId, // 商家批次单号 batch_name => x年x月转账, // 转账的名称 batch_remark => x年x月转账, // 转账的备注 total_amount => intval($transfer_amount), // 转账总金额 total_num => 1, // 转账总笔数 transfer_detail_list => $transfer_detail_list, // 转账接收列表 ]; // 获取token $token = $this->getToken($params); // 发送请求 $res = $this->https_request($url, json_encode($params), $token); // 反馈数组化 $resArr = json_decode($res, true); dump($resArr); // 存储转账成功信息或别的操作 // 成功实例返回值 { "out_batch_no": "plfk2020042013", // wx唯一识别号 "batch_id": "1030000071100999991182020050700019480001", // 商家批次单号 "create_time": "2015-05-20T13:29:35.120+08:00" // 创建时间 } } /** * 构造请求 */ function https_request($url, $data = null, $token) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, (string)$url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 添加请求头 $headers = [ Authorization:WECHATPAY2-SHA256-RSA2048 . $token, Accept: application/json, Content-Type: application/json; charset=utf-8, User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36, ]; if (!empty($headers)) { curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); } $output = curl_exec($curl); curl_close($curl); return $output; } /** * 获取token */ public function getToken($pars) { $url = https://api.mch.weixin.qq.com/v3/transfer/batches; $http_method = POST; // 请求方法(GET,POST,PUT) $timestamp = time(); // 请求时间戳 $url_parts = parse_url($url); // 获取请求的绝对URL $nonce = $timestamp . rand(10000, 99999); // 请求随机串 $body = json_encode((object)$pars); // 请求报文主体 $stream_opts = [ "ssl" => [ "verify_peer" => false, "verify_peer_name" => false, ] ]; // 证书路径信息:文档顶部定义 $apiclient_cert_path = self::SSLCERT_PATH; $apiclient_key_path = self::SSLKEY_PATH; $apiclient_cert_arr = openssl_x509_parse(file_get_contents($apiclient_cert_path, false, stream_context_create($stream_opts))); // 证书序列号 $serial_no = $apiclient_cert_arr[serialNumberHex]; // 密钥 $mch_private_key = file_get_contents($apiclient_key_path, false, stream_context_create($stream_opts)); // 商户id:文档顶部定义 $merchant_id = self::MCHID; $canonical_url = ($url_parts[path] . (!empty($url_parts[query]) ? "?${url_parts[query]}" : "")); $message = $http_method . "\n" . $canonical_url . "\n" . $timestamp . "\n" . $nonce . "\n" . $body . "\n"; openssl_sign($message, $raw_sign, $mch_private_key, sha256WithRSAEncryption); // 签名 $sign = base64_encode($raw_sign); $schema = WECHATPAY2-SHA256-RSA2048; $token = sprintf(mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s", $merchant_id, $nonce, $timestamp, $serial_no, $sign); // 微信返回token return $token; }

2.控制层

public function onTransferBatches($openid, $nMoney) { // 实例化服务层 $serviceTransfer = new serviceTransfer(); // 带参请求:sOpenid(收款方openid) nMoney(转账金额) $result = $serviceTransfer->transfer_batches($openid, $nMoney); return $result; }
声明:本站所有文章         ,如无特殊说明或标注                    ,均为本站原创发布              。任何个人或组织         ,在未征得本站同意时      ,禁止复制            、盗用                    、采集      、发布本站内容到任何网站         、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
HTTP的请求方法OPTIONS