微信支付
商户号因交易停止被限制了收款功能,提交申诉之后因小程序APPID与商户号无绑定或使用关系,应该如何处理? [图片]
[图片] 如果因为风控基本户的资金冻结和资金解冻是会生成一条流水吗
[图片] [图片][图片] 我注册微信服务商时候选的收单外包机构,提交审核时候再次确认,结果在提交完成后我看一下服务商类型变成开发者了这个是什么原因呢,是这两个服务商类型合并了吗,请教一下各位老师
我们这个小程序是电商类目小程序,有发货管理,是绑定的 服务商模式,还开通了平台收付通,但是这个地方一直有个提示,需要授权,但是没有授权的选项,想问下,这个提示对后续的线上的支付有影响吗?现在我们用开发环境测试是可以正常支付的,不清楚后期有没有啥影响,担心我们上线了,再不能支付了,这个提示一直带着吗? 如图所示: [图片][图片]
比如调用了下单接口获取到了prepay_id后,返回给客户端前,服务宕机了,原来这个订单还需要去进行关单处理吗,如果忽视关闭,后面用新的id下单会有问题吗
微信支付回调应答,明明在5秒内进行了正确格式的应答,但仍会重复收到回调通知,服务器日志为:"2026-03-13T14:06:21.365+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-6] c.e.m.m.c.MemberOrderController : 会员订单创建成功: outTradeNo=M1773381979579087701913 2026-03-13T14:06:28.521+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 接收微信支付回调通知: body={"id":"379cc95d-03d0-5ce7-9505-2c9260fb9f17","create_time":"2026-03-13T14:06:27+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"bZvby7CcT0D4ZJxBw1H4BuDG1pgqWAm5yNoFV8s5kGxNssIM5OPWU1eNG7kSyjsPGQ3vIQ3qd6XUYMqHd1aaRWuD3VhSv7F1VSsxqeJFWhsRfAhPwP7YktRg42s4CXTHk3L3Jhf4I7uiYiLVb2pbcx7o/YXh5IHrWNPFksAw/67zpI1JJvtthoCi7IhU5P0ojvxW2Am7+Ha/TqNZRD5pMxg9eG4IZgFANRMPsXUH5fTyNL56xlXkdFMrnMCyZ6OgKBdFrcADejWCfh6vpJVLj1O490xi31xDIit3M2ehO4h3SRI2gCLvMjwcjybbRswdCQuBciL4i8HOidI/ZaitsiJznzu0e5ejNDLYwsRy1BII69+rNnDRRZUnSFpPS7VbwKEaR6hj/+eYpbqmQ+m3TeC/iB/w4yPKJ9/cT+vu+9Z166dFaQ/q3tKFig3DuUoYAuXlRRZvg7IBYY6AVtDhsHGPl7KknFS2mDelJfcUmABhxjfsemxrZUZtDbh3QXofm8khuV1DUOsvg+jar2ot+uODKSXhSAuvoALqufgkwkU4/8D7mMjDJC+BStLaDk43lgvj40bl+TixYlOk","associated_data":"transaction","nonce":"0zjLxfYp7Il1"}} 2026-03-13T14:06:28.551+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 解密后支付回调数据: {"mchid":"1104731754","appid":"wx84c604104066f821","out_trade_no":"M1773381979579087701913","transaction_id":"4200003033202603137536363971","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"支付成功","bank_type":"OTHERS","attach":"","success_time":"2026-03-13T14:06:27+08:00","payer":{"openid":"oY8iD1ytaJA097GoY38a5AL6YLD8"},"amount":{"total":1990,"payer_total":1990,"currency":"CNY","payer_currency":"CNY"}} 2026-03-13T14:06:28.565+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 回调验签解密成功,立即返回200应答 2026-03-13T14:06:28.565+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 开始异步处理订单: outTradeNo=M1773381979579087701913, tradeState=SUCCESS 2026-03-13T14:06:28.647+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 异步处理-订单支付状态更新成功: outTradeNo=M1773381979579087701913, payStatus=1 2026-03-13T14:06:28.647+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-7] c.e.m.w.c.WeChatPayNotifyController : 异步处理订单完成: outTradeNo=M1773381979579087701913 2026-03-13T14:06:29.652+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 接收微信支付回调通知: body={"id":"379cc95d-03d0-5ce7-9505-2c9260fb9f17","create_time":"2026-03-13T14:06:27+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"xnj/bgdi6G2MMl0rtGgll6uQCHyKik4PF2B6yXnlPqRyTn8rmQDHM4CdjBm6LP8D61Fmf7ead/KZY6Twp6TiukP9bvld8y0HNe8bqOOgY4lqlvOJEVrO0g4pnWcEf98tPCAYHkSmVf6N8bwasrM7lPX22cEi6hAdKzKhtb+CwNqhhiL7U8NZ923qZVyuFWaxuIoFxOmuTeJsgKNk46TpO1A1vvGRWKD8ETTqlOIBwfSSuiM9idgVz+kBAsWT+E3yFYKY959dKwLs5MWYtZgUm3mgp6izaE47jkCvr1JiEqo/iYW0bPde0WxJ5QNuaGmHl2FSBuuGi9NVi3oFCjDf+2n+uw/TcgGtMXhrqOKRn+1TJgogW5Q/lRtCQH1lHm+bSnx0y/pc2IQHQ+HpdxFBOdEGYowJW9ROfdnSSdDOWRWltjaCS5F2/6OO1pUMh7HYXgAILoMGpmzZLgPKWXGtgzX/CYJJ5OlsDAKBg8rXhMk6sopXFEfXOetXl2yBvAIf8KzG1EOrAlHqNVxEXmjpS71ioASy5J/TXPT7lWEVMpWweVqpemEuUSIEbH7cS0XkgQ8nYhJkmlH5SrxM","associated_data":"transaction","nonce":"qr9L3vTqnD8S"}} 2026-03-13T14:06:29.654+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 解密后支付回调数据: {"mchid":"1104731754","appid":"wx84c604104066f821","out_trade_no":"M1773381979579087701913","transaction_id":"4200003033202603137536363971","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"支付成功","bank_type":"OTHERS","attach":"","success_time":"2026-03-13T14:06:27+08:00","payer":{"openid":"oY8iD1ytaJA097GoY38a5AL6YLD8"},"amount":{"total":1990,"payer_total":1990,"currency":"CNY","payer_currency":"CNY"}} 2026-03-13T14:06:29.654+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 回调验签解密成功,立即返回200应答 2026-03-13T14:06:29.654+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 开始异步处理订单: outTradeNo=M1773381979579087701913, tradeState=SUCCESS 2026-03-13T14:06:29.662+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 异步处理-订单已处理过支付成功回调,无需重复更新: outTradeNo=M1773381979579087701913 2026-03-13T14:06:29.662+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-8] c.e.m.w.c.WeChatPayNotifyController : 异步处理订单完成: outTradeNo=M1773381979579087701913 2026-03-13T14:06:29.791+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-9] c.e.m.m.c.MemberOrderController : 前端轮询会员订单状态: outTradeNo=M1773381979579087701913 2026-03-13T14:06:29.792+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-9] c.e.m.m.s.MemberOrderPollingService : 开始轮询会员订单状态: outTradeNo=M1773381979579087701913 2026-03-13T14:06:29.797+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-9] c.e.m.m.service.MemberOrderQueryService : 查询会员订单微信支付状态: outTradeNo=M1773381979579087701913 2026-03-13T14:06:32.274+08:00 INFO 3771085 --- [museum] [.0-8080-exec-10] c.e.m.m.c.MemberOrderController : 检查用户会员状态: userId=43, openid=oY8iD1ytaJA097GoY38a5AL6YLD8 2026-03-13T14:06:32.274+08:00 INFO 3771085 --- [museum] [.0-8080-exec-10] c.e.m.m.service.MemberOrderQueryService : 查询用户会员状态: userId=43, openid=oY8iD1ytaJA097GoY38a5AL6YLD8 2026-03-13T14:06:37.442+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-1] c.e.m.m.service.MemberOrderQueryService : 分页查询所有会员订单数据(包含用户信息) 2026-03-13T14:06:43.983+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 接收微信支付回调通知: body={"id":"379cc95d-03d0-5ce7-9505-2c9260fb9f17","create_time":"2026-03-13T14:06:27+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"bKgBHYXjxekbnUYld5CMWxirwF+0bu3inqj4YHhdgy9haCQ8mqm/Vya6ekHyRc0wjYdSJTiEDoYryQFji7O49djwAuU9mQupHErKD7mh00ry9YAFKbivB/U0GCjViUutfGY/AiQKUYDI1NmqunjXJvdoX/R3AT9TVMJEhPuD5o/pZiuzNWShDUZ0HfZgT+Y93hMN7myD2W89vyG6blZufd9FJz1eAl5YKDl/hBtsLTY0tcdaVyg1H1473Anu+Irp8+vFGlqdmhZAUbas+Nsoi/KiUrQ6bn3wILiL473IrivVMwKTUmt2ZKKi7FXfr9T9JyKbkM3EkEoOfyH4e/Y0xKJ5tVd7Iaz2j+BVd9jFmHWSGb1vQHyimRjmoVNVk1uvdMCAyNym4KMhAE/aRrv1gcdgqdPJdoh2/JfsewymTD7tcONLIKMzNG/lWp5MtCteRdVWe0luRfmc0KQtWzV01hz3vC3JTeJ2/pE0R0H52v20tSbLqUFiK3xtXgKy23uOFubUp3KyDj7qZkGyU8LImJDgXLmIzUW25EfgiE7UzkVOuNOValosrMJQq/1r+xmJg0f+OoKvLPDQhrCe","associated_data":"transaction","nonce":"HOZ87LT70fsV"}} 2026-03-13T14:06:43.984+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 解密后支付回调数据: {"mchid":"1104731754","appid":"wx84c604104066f821","out_trade_no":"M1773381979579087701913","transaction_id":"4200003033202603137536363971","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"支付成功","bank_type":"OTHERS","attach":"","success_time":"2026-03-13T14:06:27+08:00","payer":{"openid":"oY8iD1ytaJA097GoY38a5AL6YLD8"},"amount":{"total":1990,"payer_total":1990,"currency":"CNY","payer_currency":"CNY"}} 2026-03-13T14:06:43.984+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 回调验签解密成功,立即返回200应答 2026-03-13T14:06:43.985+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 开始异步处理订单: outTradeNo=M1773381979579087701913, tradeState=SUCCESS 2026-03-13T14:06:43.992+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 异步处理-订单已处理过支付成功回调,无需重复更新: outTradeNo=M1773381979579087701913 2026-03-13T14:06:43.992+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-2] c.e.m.w.c.WeChatPayNotifyController : 异步处理订单完成: outTradeNo=M1773381979579087701913 2026-03-13T14:06:45.103+08:00 INFO 3771085 --- [museum] [0.0-8080-exec-3] c.e.m.w.c.WeChatPayNotifyController : 接收微信支付回调通知: body={"id":"379cc95d-03d0-5ce7-9505-2c9260fb9f17","create_time":"2026-03-13T14:06:27+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"支付成功","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":"FM0Pd4F8JsT76x8hRLJUMdJWy9sm4Yg/8HWUHg8DEFJ1mcwI4V2yVPiQF0IJxRYnM6dl0Gh3arPIOBJkfGZ/rI+eozfv7RUaxBOLqOQF9NjSjNlOYgLG3iwJDlYKQq3dca/HxwjjoyZ8pDiLDUVhpQzwu+6jVmVwe2okombtAFNTDu1qi8cxi7LzxWFE6zEMR7ckOSsCjzCqfwyoHvvrzN+yHANJABdVmsLVvABuLh0KaIem0yBHrtQZhQR2BTM+y+xN3r+WAHHqMYefaE3QTWvzyeFUOM2yvDVaGvSznd5Gqjp1/sI7I0f06dTWMfT/H6tTr6EDS2RDtiorfZflqOe166vMlFWZr2omIM1dOpQvyGuIWYe2LMuex7DLCaF7bbGKEA4QzeT266Mq0gAi0A5IzJLcDtcmFc9a4XRdvb7lCYmGuqAE9QjcrViUYgw3L9K+qzSR17qVPIjnewz5fYmkJ8S8844zarSdujoRxlbG9TjvX4yivBbU15PdlNZ2A7NHYVlz/F2FTuwG47o1/vBV+pgUx6vhzrRvHvoY/rVkacrplmKDhfKtMVZ+vz63C/sVjGX4OKz6Pv1u","associated_data":"transaction","nonce":"4v7MTWRjuARQ"}}",后端代码为package com.example.museum.wechatpay.controller; import com.example.museum.memberorder.entity.MemberOrder; import com.example.museum.memberorder.repository.MemberOrderRepository; import com.example.museum.util.WeChatPayUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import jakarta.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.util.Optional; @Slf4j @RestController @RequestMapping("/api/wechat/pay") @RequiredArgsConstructor public class WeChatPayNotifyController { private final WeChatPayUtil weChatPayUtil; private final MemberOrderRepository memberOrderRepository; private final ObjectMapper objectMapper = new ObjectMapper(); /** * 微信支付回调通知接收接口(同步处理:接收-解密-更新订单-应答) * 对应配置的notifyUrl:https://yingfeinite.com/api/wechat/pay/notify */ @PostMapping("/notify") public ResponseEntity<String> handlePayNotify( HttpServletRequest request, @RequestHeader("Wechatpay-Timestamp") String timestamp, @RequestHeader("Wechatpay-Nonce") String nonce, @RequestHeader("Wechatpay-Signature") String signature, @RequestHeader("Wechatpay-Serial") String serialNo) { try { // ========== 阶段1:读取请求体并验签 ========== // 1. 读取请求体 BufferedReader reader = request.getReader(); StringBuilder requestBody = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { requestBody.append(line); } String body = requestBody.toString(); log.info("接收微信支付回调通知: body={}", body); // 2. 验签 boolean verifyResult = weChatPayUtil.verifyNotifySignature(timestamp, nonce, signature, serialNo, body); if (!verifyResult) { log.error("微信支付回调验签失败"); String failResponse = "{\"code\":\"FAIL\",\"message\":\"验签失败\"}"; return ResponseEntity.status(HttpStatus.BAD_REQUEST) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8") .body(failResponse); } // ========== 阶段2:解析并解密回调数据 ========== // 解析resource节点 JsonNode rootNode = objectMapper.readTree(body); JsonNode resourceNode = rootNode.get("resource"); if (resourceNode == null) { log.error("回调数据无resource节点: body={}", body); String failResponse = "{\"code\":\"FAIL\",\"message\":\"回调数据格式错误\"}"; return ResponseEntity.status(HttpStatus.BAD_REQUEST) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8") .body(failResponse); } // 解密数据 String ciphertext = resourceNode.get("ciphertext").asText(); String associatedData = resourceNode.get("associated_data").asText(); String nonceStr = resourceNode.get("nonce").asText(); String decryptedData = weChatPayUtil.decryptNotifyData(ciphertext, associatedData, nonceStr); JsonNode payResult = weChatPayUtil.parseDecryptedNotifyData(decryptedData); log.info("解密后支付回调数据: {}", payResult); // ========== 阶段3:提取参数并同步更新订单状态 ========== String outTradeNo = payResult.get("out_trade_no").asText(); String transactionId = payResult.get("transaction_id").asText(); String tradeState = payResult.get("trade_state").asText(); // 同步更新订单状态 log.info("开始同步处理订单: outTradeNo={}, tradeState={}", outTradeNo, tradeState); Optional<MemberOrder> orderOptional = memberOrderRepository.findByOutTradeNo(outTradeNo); if (orderOptional.isPresent()) { MemberOrder order = orderOptional.get(); // 区分支付状态更新 if ("SUCCESS".equals(tradeState)) { // 幂等处理:避免重复更新 if (order.getPayStatus() != 1) { order.setPayStatus(1); // 0-未支付,1-已支付 order.setTransactionId(transactionId); order.setOrderEndTime(LocalDateTime.now()); order.setUpdateTime(LocalDateTime.now()); memberOrderRepository.save(order); log.info("同步处理-订单支付状态更新成功: outTradeNo={}, payStatus=1", outTradeNo); } else { log.info("同步处理-订单已处理过支付成功回调,无需重复更新: outTradeNo={}", outTradeNo); } } else { log.warn("同步处理-订单支付失败: outTradeNo={}, tradeState={}", outTradeNo, tradeState); order.setPayStatus(2); // 2-支付失败 order.setUpdateTime(LocalDateTime.now()); memberOrderRepository.save(order); } } else { log.error("同步处理-回调订单不存在: outTradeNo={}", outTradeNo); } // ========== 阶段4:返回成功应答 ========== log.info("回调处理完成,返回200应答"); return ResponseEntity.status(HttpStatus.OK) .header(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8") // 移除所有非必要响应头(避免微信判定异常) .header(HttpHeaders.SERVER, "") .header("X-Content-Type-Options", "") .body(""); // 空字符串确保响应体无内容(200 OK必须有body,空即可) } catch (Exception e) { log.error("处理微信支付回调异常", e); // 异常场景返回失败应答 String errorResponse = "{\"code\":\"FAIL\",\"message\":\"服务端处理异常\"}"; return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8") .body(errorResponse); } } }
开通微信H5支付,被驳回多次,已经按照提供的示例开发,仍被以“网站中体验不到服务内容,不符合开通规则。” 驳回,请高手指点 [图片] [图片] [图片]
[{"code":"APPID_MCHID_NOT_MATCH","message":"appid和mch_id不匹配,请检查后再试"}],已经核对过 传入的appi 跟mch_id 无语,也开通了jsapi支付权限
微信商户号申请关联APP应用的Appid,需要APP授权申请,但是找不到APP的登录权限,没办法登录授权,微信这边有法子人工协助通过下吗 [图片]
我想实现转账到对应用户的零钱实时到账的功能,无需用户确认收款,需要如何申请?
商户号:1704679524 广西利尔佳供应链有限公司;支付小程序:邕工惠,AppID:wx858d4fa47b088455支付请求信息: {"appid":"wx858d4fa47b088455","mchid":"1704679524","description":"邕工惠订单","out_trade_no":"95627-2026031310284680323","notify_url":"https://ygh.nnzgh.org/api/app/WxPayNotify/124","amount":{"total":2880},"payer":{"openid":"o3JYr5bmEOYKDxpsH6KNOeg-RJ_M"},"attach":"95627"}
主体商户号被限制原因是:收单外包机构与商户同主体;但是未查到主体商户号有交易的记录,想知道这边原因是怎么产生的。
[图片] 1.之前配置的签约域名在那个地方可以查看呢,为什么商户后台也没有查询的地方
有时候需要把一次性对照很多聊天内容,有时候时间跨度还很大,所以想看看有没有办法,把微信聊天记录(指定某个人或者某个群)导出到word/pdf文件中
[图片] 出现调用支付JSApI缺少参数,这是为什么
如题, 找不到下载入口. 看文档也没说清楚怎么操作
通过服务商平台线上帮特约商户申请商户号进行支付,到签约这一步超级管理员扫码签约后,再次进入查看进度还是展示签约二维码,多次扫码进行签约之后,再次进入还是等待超管进行签约,这是什么问题[图片]
小程序:wxc5dd52a07163ad1f 商户订单号: O1238562863319580672 小程序支付成功,但是微信后台没有支付成功的回调到我们系统后台; 且小程序后台的订单管理列表也请求不到任何数据 [图片][图片][图片]
退款可以接收到回调,为什么支付接收不到回调呢?用postman测试,是通的,域名中有一个"-",会产生影响吗,如果影响,那退款的回调为什么不会影响呢?
微信支付时用户使用了微信的优惠券,例如用户充值50,使用了张2元的微信优惠券(优惠券不是我商户生成的),api的goods_tag需要传吗,怎么传?api的订单金额amount传50,还是48