既然能收到通知,那就不可能没有body的,大概率还是你代码解析问题
微信支付退款成功后,消息回调也受到了,但是没有body?https://pay.weixin.qq.com/doc/v3/merchant/4012791862 按照这个接口文档对接了退款,传了notify_url,外网也是可访问的,支付后台退款管理也配置了这个url。现在是退款成功了,但是退款回调的参数中只有header,没有body。求解
4小时前是的
h5支付接入必须绑定公众号吗?目前我看到文档里说: “appid是商户在微信开放平台(移动应用)或公众平台(公众号/小程序)上申请的一个唯一标识。为了在该载体上使用微信支付功能,该appid必须与商户号mchid进行绑定。详细请参考微信支付普通商户与AppID账号关联管理。” 我以为开放平台上可以建网站应用,结果网站应用不能绑定到商户号,显示“当前商户号暂不支持关联该类型的AppID”。 我要开发的是h5,所以排除移动应用和小程序,我只能用公众号么?
1天前管理用户是旧版本的,你开通的是新版本的,不需要配置
商家转账手动添加收款用户时找不到“管理”入口?商家转账功能下,手动添加收款用户时找不到“管理”入口。按说明文档https://pay.weixin.qq.com/doc/v3/merchant/4012064960所描述,场景后面应该有“管理”才对,如下图。 [图片] 实际情况如下,图中“管理”是根据上图推测应该在的位置: [图片] 请问: 如果是因为功能更新暂时锁定,请告知什么时候可以开放操作?功能更新期间,有什么替代办法可以维护收款人列表
1天前只有服务商模式的订单才可以在服务商后台进行查询,商户自己产生的订单不支持在服务商后台查询
有一些地方不明白,签约了特约商户,有几百个订单了,为什么商户订单搜索不到,技术服务费也没有显示[图片][图片]
1天前用sdk接入 直接cv就能搞定 没有备案、没有认证、没有接入订单管理都会有这个报错提示
微信支付V2问题V3对接真的很难,希望官方可以简化,还有V2证书这些都配置了,但是小程序调用显示小程序违规什么的,我才申请的小程序和微信支付就违规了啊,是不是因为小程序管局备案还没有通过的原因
1天前你提供的URL看不到你的Authorization是什么,只能看到返回结果
已解决。匹配了Authorization 提示不合法?错误的应答 {"statusCode":401,"header":{"server":"nginx","date":"Sat, 31 May 2025 12:55:38 GMT","content-type":"application/json; charset=utf-8","content-length":"125","connection":"keep-alive","keep-alive":"timeout=8","cache-control":"no-cache, must-revalidate","x-content-type-options":"nosniff","request-id":"08CAF8EBC10610950118BCC1EEA30620D2D0042891FB02-270924346","content-language":"zh-CN"},"data":{"code":"SIGN_ERROR","message":"Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》"}} 已经正则匹配了Authorization ,却依然提示不合法。这是不可能的,所以一定是应答错误。 提示的是:Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》。不是这个问题,却返回这个难道不是接口的问题吗? 'use strict'; const crypto = require('crypto');//引入加密类 const fs = require('fs');//引入文件类 const path = require('path');//引入路径类 exports.main = async (event, context) => { //读取私钥文件 const privateKeyContent = fs.readFileSync(path.join(__dirname, 'private.pem'), 'utf8'); //签名函数(官方规则,无需质疑) function generateSignature(data, privateKey) { const sign = crypto.createSign('SHA256'); sign.update(data); sign.end(); return sign.sign(privateKey, 'base64'); } const mchid = "1633189699";//与证书一致 const serial_no = "3a26596811a271d68c025fea2e2ad6d9d287051a"; //与证书一致 const timestamp = Math.floor(Date.now() / 1000);//UTC时间戳 const nonce_str = crypto.randomBytes(16).toString('hex').toUpperCase(); //32位随机数 const out_trade_no=crypto.randomBytes(16).toString('hex');//唯一32位订单号 const data = JSON.stringify({ appid: "wx78a5fdbf8ffd6197", mchid: "1633189699", description: "商品秒速", out_trade_no: out_trade_no, notify_url: "https://env-00jxtk05euxr.dev-hz.cloudbasefunction.cn/auth/", amount: { total: 200, currency: "CNY" }, payer: { openid: "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" } });//mchid已改为证书值,appid已改为绑定值,notify_url已备案 const urlPath = `/v3/pay/transactions/app`; // 签名数据是紧凑型字符串且最后已经额外换行 const signData = ["POST",urlPath,timestamp.toString(),nonce_str,data].join("\n") + "\n"; //生成签名 const signature = generateSignature(signData, privateKeyContent); const Authorization = `WECHATPAY2-SHA256-RSA2048 mchid="${mchid}",nonce_str="${nonce_str}",signature="${signature}",timestamp="${timestamp}",serial_no="${serial_no}"`; console.log("Authorization正则检查:",/^WECHATPAY2-SHA256-RSA2048 mchid="\d+",nonce_str="[\w]{32}",signature="[\w\/+=]+",timestamp="\d+",serial_no="[\w]+"$/.test(Authorization) ); //正则检查通过,证明不是签名头的问题 //发送异步请求 const response = await uniCloud.request({ url: `https://api.mch.weixin.qq.com${urlPath}`, method: 'POST', header: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': Authorization }, data: data }); console.log(response); return response; };
1天前没有对外提供接口
微信经营收款服务有开发接口吗?想开发一些商户需要的功能有一家小餐厅,在使用微信经营收款服务的小程序点餐收款,但是想要开发一些营销类的功能(比如拉新奖励、发优惠券),有开发文档吗?
1天前使用官方PHPsdk, 搭配https://wechatpay.im/guide/getting-started#init这里去看
【支付验证签名失败】折腾了一天也找不到哪里错了?跪求帮助因为是实物类购物小程序,因此无法使用云支付,只能借助我自己的网站再调用微信支付的api去实现。我把2个php文件和小程序端代码复制如下,望帮助解决,谢谢! <?php //create_order.php // 配置参数 $appid = 'wxc70248f7a5f61ed9'; $mch_id = '1694520292'; $key = 'oTISL7UedD3bQkzYmoVKHRd34vVUzzx6'; $notify_url = 'https://www.XXX.cn/notify.php'; // 接收小程序端参数 $data = json_decode(file_get_contents('php://input'), true); $openid = isset($data['openid']) ? $data['openid'] : ''; $total_fee = isset($data['total_fee']) ? intval($data['total_fee']) : 0; $out_trade_no = isset($data['out_trade_no']) ? $data['out_trade_no'] : ''; // 参数校验 if (empty($openid) || $total_fee <= 0 || empty($out_trade_no)) { echo json_encode(['error' => '参数缺失或错误']); exit; } // 生成随机字符串(兼容PHP 5.6+) $nonce_str = bin2hex(openssl_random_pseudo_bytes(16)); // 构造统一下单参数 $params = [ 'appid' => $appid, 'mch_id' => $mch_id, 'nonce_str' => $nonce_str, 'body' => '商品描述', 'out_trade_no' => $out_trade_no, 'total_fee' => $total_fee, 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => $notify_url, 'trade_type' => 'JSAPI', 'openid' => $openid ]; // 生成签名 ksort($params); $stringA = urldecode(http_build_query($params)); $stringSignTemp = $stringA . "&key=" . $key; $sign = strtoupper(md5($stringSignTemp)); // 构造XML请求 $xml = '<xml>'; foreach ($params as $key => $val) { $xml .= "<$key>$val</$key>"; } $xml .= "<sign>$sign</sign></xml>"; // 调用微信统一下单接口 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/xml']); $response = curl_exec($ch); curl_close($ch); // 解析微信返回结果 $result = simplexml_load_string($response); if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') { $prepay_id = (string)$result->prepay_id; $timeStamp = (string)time(); // 强制转为字符串 $nonceStr = $nonce_str; // 保持命名一致 // 生成支付签名 $paySignParams = [ 'appId' => $appid, 'timeStamp' => $timeStamp, 'nonceStr' => $nonceStr, 'package' => "prepay_id=$prepay_id", 'signType' => 'MD5' ]; ksort($paySignParams); $payStringA = urldecode(http_build_query($paySignParams)); $payStringSignTemp = $payStringA . "&key=" . $key; $paySign = strtoupper(md5($payStringSignTemp)); // 返回小程序所需参数(字段名严格匹配) echo json_encode([ 'timeStamp' => $timeStamp, 'nonceStr' => $nonceStr, 'package' => "prepay_id=$prepay_id", 'signType' => 'MD5', 'paySign' => $paySign ], JSON_UNESCAPED_UNICODE); } else { // 记录错误日志 $errorMsg = '统一下单失败: ' . $result->return_msg . ' | ' . $result->err_code_des; echo json_encode(['error' => $errorMsg]); } ?> <?php //notify.php $xml = file_get_contents('php://input'); $data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $key = 'oTISL7UedD3bQkzYmoVKHRd34vVUzzx6'; // 验证签名 $sign = $data->sign; unset($data->sign); $params = (array)$data; ksort($params); $stringA = urldecode(http_build_query($params)) . "&key=". $key;; $calcSign = strtoupper(md5($stringA)); if ($calcSign == $sign && $data->return_code == 'SUCCESS') { // 处理支付成功逻辑(更新订单状态等) // 注意:需返回成功响应,否则微信会重复通知 echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; } else { echo '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>'; } ?> 小程序端: toPay: function () { wx.showLoading({ title: '支付拉取中…', }) let thetime = Date.parse(new Date()); thetime = thetime / 1000 let sjStr = app.globalData.openid + thetime let orderid = sjStr.slice(sjStr.length - 29) orderid = Math.floor(Math.random() * 1000) + orderid let openid = app.globalData.openid if (openid) { wx.request({ url: 'https://www.erp6688.cn/lipin/create_order.php', method: 'POST', data: { openid: openid, total_fee: 100, out_trade_no: orderid }, success: (res) => { console.log(res); wx.requestPayment({ timeStamp: res.data.timeStamp, nonceStr: res.data.nonceStr, package: res.data.package, signType: res.data.signType, paySign: res.data.paySign, success: () => { /* 支付成功处理 */ }, fail: (err) => { console.error(err) } }) } }) } }
1天前你使用什么方式进行收款?
开通了微信商家支付,没有线上收款需求,只有线下收款,开通好后出现“开发配置指引”还需要在电脑上操作吗你好,请问一下,我已经成功开通了微信商家支付,没有线上收款需求,只有线下收款,开通好后出现了“开发配置指引”,这里面的这些功能,还需要在电脑上操作吗?
1天前API V3key对不对?
微信支付v3回调解密失败。$str = \openssl_decrypt($ctext, 'aes-256-gcm', $apiKey, \OPENSSL_RAW_DATA, $nonceStr, $authTag, $associatedData); if ($str === false) { $error = openssl_error_string(); return \json([ "code" => 0, "result" =>'解密失败: ' . $error , ]); } 微信支付v3回调解密失败怎么办,openssl_error_string(); 也没有输出错误信息 [图片]
1天前