{"record":{"id":"ea8f513fc9d27842","repo":"paascloud/paascloud-master","slug":"omc10031003-ea8f51","errorCode":"OMC10031003","errorMessage":"OMC10031003","messagePattern":"OMC10031003","errorType":"error_code","errorClass":"OmcBizException","httpStatus":null,"severity":"error","filePath":"paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/PtcAlipayServiceImpl.java","lineNumber":108,"sourceCode":"\t@Value(\"${paascloud.alipay.qrCode.pcPath}\")\n\tprivate String qrCodePcPath;\n\t@Value(\"${paascloud.alipay.qrCode.qiniuPath}\")\n\tprivate String qrCodeQiniuPath;\n\n\t/**\n\t * Pay wrapper.\n\t *\n\t * @param orderNo      the order no\n\t * @param loginAuthDto the login auth dto\n\t *\n\t * @return the wrapper\n\t */\n\t@Override\n\tpublic Wrapper pay(String orderNo, LoginAuthDto loginAuthDto) {\n\t\tLong userId = loginAuthDto.getUserId();\n\t\tOrderDto order = omcOrderService.queryOrderDtoByUserIdAndOrderNo(userId, orderNo);\n\t\tif (order == null) {\n\t\t\tthrow new OmcBizException(ErrorCodeEnum.OMC10031003);\n\t\t}\n\n\t\t// (必填) 商户网站订单系统中唯一订单号, 64个字符以内, 只能包含字母、数字、下划线,\n\t\t// 需保证商户系统端不能重复, 建议通过数据库sequence生成,\n\t\tString outTradeNo = order.getOrderNo();\n\n\n\t\t// (必填) 订单标题, 粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”\n\t\tString subject = \"PCMall扫码支付,订单号:\" + outTradeNo;\n\n\n\t\t// (必填) 订单总金额, 单位为元, 不能超过1亿元\n\t\t// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】\n\t\tString totalAmount = order.getPayment().toString();\n\n\n\t\t// (可选) 订单不可打折金额, 可以配合商家平台配置折扣活动, 如果酒水不参与打折, 则将对应金额填写至此字段\n\t\t// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/PtcAlipayServiceImpl.java#L90-L126","documentation":"ErrorCodeEnum.OMC10031003 ('this order does not exist for this user', 该用户此订单不存在) is thrown by PtcAlipayServiceImpl.pay when omcOrderService.queryOrderDtoByUserIdAndOrderNo(userId, orderNo) yields no order for that user/orderNo pair, so an Alipay payment cannot be initiated. Note the underlying lookup may itself throw OMC10031005; this check guards the null-return path.","triggerScenarios":"Calling pay(orderNo, loginAuthDto) with an orderNo that doesn't exist for the authenticated user — e.g. wrong login token, order belonging to someone else, or the order row missing from the DB.","commonSituations":"Payment page opened from a bookmark with an old orderNo after re-login as another account, orders created in a different environment, or race where the order was cancelled/deleted before payment.","solutions":["Confirm the order exists for that user: SELECT * FROM omc_order WHERE order_no = ? AND user_id = ?","Ensure the frontend passes the currently authenticated userId (fresh LoginAuthDto), not a cached session","Wrap pay() in a handler that converts OmcBizException into a user-facing 'order not found' message and redirects back to the order list"],"exampleFix":"// before\npublic Wrapper pay(String orderNo, LoginAuthDto loginAuthDto) {\n    OrderDto order = omcOrderService.queryOrderDtoByUserIdAndOrderNo(loginAuthDto.getUserId(), orderNo);\n    if (order == null) {\n        throw new OmcBizException(ErrorCodeEnum.OMC10031003);\n    }\n// after\npublic Wrapper pay(String orderNo, LoginAuthDto loginAuthDto) {\n    OrderDto order;\n    try {\n        order = omcOrderService.queryOrderDtoByUserIdAndOrderNo(loginAuthDto.getUserId(), orderNo);\n    } catch (OmcBizException e) {\n        return Wrapper.fail(404, \"订单不存在\");\n    }\n    if (order == null) {\n        return Wrapper.fail(404, \"订单不存在\");\n    }","handlingStrategy":"try-catch","validationCode":"OrderDto order = omcOrderMapper.selectByUserIdAndOrderNo(loginAuthDto.getUserId(), orderNo);\nif (order == null) { return Wrapper.fail(404, \"order not found\"); }","typeGuard":"boolean userCanPay(Long userId, String orderNo) {\n    return omcOrderMapper.selectByUserIdAndOrderNo(userId, orderNo) != null;\n}","tryCatchPattern":"try {\n    alipayService.pay(orderNo, loginAuthDto);\n} catch (OmcBizException e) {\n    if (e.getCode() == 10031003 || e.getCode() == 10031005) {\n        return Wrapper.fail(404, \"订单不存在\");\n    }\n    throw e;\n}","preventionTips":["Always use the fresh LoginAuthDto userId for payment flows","Block payment entry points for orders that are cancelled or deleted","Catch both OMC10031003 and OMC10031005 in payment handlers"],"tags":["alipay","payment","order-not-found"],"backgroundTag":"record-not-found","analyzedSha":"781281a9503332ed3cef44ea618349d14230a127","analyzedAt":"2026-09-10T10:59:02.070Z","contentChangedAt":"2026-09-10T10:59:02.070Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}