face_code业务信息不匹配

本文探讨了在使用face_code业务时遇到的信息不匹配问题,主要关注appid、mch_id、out_trade_no及sub_mch_id的一致性检查,确保支付流程的顺利进行。

face_code业务信息不匹配

 

检查获取 face code时的 appid, mch_id,out_trade_no以及可选的sub_mch_id ,  与 face pay 时是否一致。

转载于:https://www.cnblogs.com/runliuv/p/10969510.html

INSERT INTO w_display_order_send( store_code , item_code , gondola_furniture_type , display_gondola , display_shelf , display_row , display_face , display_order_input_datetime , extraction_date , update_datetime , update_function_id , update_person_id , update_count ) SELECT tmp.store_code , tmp.item_code , CASE WHEN tmp.gondola_furniture_type IS NULL THEN NULL ELSE LPAD(TRIM(tmp.gondola_furniture_type), 3, '0') END AS gondola_furniture_type , tmp.display_gondola , tmp.display_shelf , tmp.display_row , tmp.display_face , tmp.display_order_input_datetime , #{systemDate} :: date , CURRENT_TIMESTAMP , #{taskId} , #{taskId} , 0 FROM ( SELECT te1.store_code , tn.item_code , gl1.gondola_furniture_type , tn.display_gondola , tn.display_shelf , tn.display_row , tn.display_face , tn.display_order_input_datetime , ROW_NUMBER() OVER ( PARTITION BY te1.store_code , tn.item_code , tn.label_code ORDER BY tn.display_order_input_datetime DESC ) AS registrationOrder FROM m_store_number AS te1 INNER JOIN m_display AS tn ON te1.original_store_code = tn.original_store_code LEFT JOIN m_gondola_layout AS gl1 ON gl1.version = #{gondolaLayoutVersion} AND tn.original_store_code = gl1.original_store_code AND tn.display_gondola = gl1.gondola_number WHERE te1.version = #{storeVersion} AND #{systemDate} :: date BETWEEN te1.apply_start_date AND te1.apply_end_date ) AS tmp WHERE tmp.registrationOrder <= 2 UNION ALL SELECT DISTINCT te2.store_code , sh1.item_code , CASE WHEN gl2.gondola_furniture_type IS NULL THEN NULL ELSE LPAD(TRIM(gl2.gondola_furniture_type), 3, '0') END AS gondola_furniture_type , tt1.display_gondola , tt1.display_shelf , NULL :: numeric AS display_row , NULL :: numeric AS display_face , tt1.special_display_input_datetime , #{systemDate} :: date , CURRENT_TIMESTAMP , #{taskId} , #{taskId} , 0 FROM m_store_number AS te2 INNER JOIN m_specific_display_order AS tt1 ON te2.original_store_code = tt1.original_store_code LEFT JOIN m_gondola_layout AS gl2 ON gl2.version = #{gondolaLayoutVersion} AND tt1.original_store_code = gl2.original_store_code AND tt1.display_gondola = gl2.gondola_number INNER JOIN m_pattern AS pt ON pt.version = #{patternVersion} AND tt1.original_store_code = pt.original_store_code AND #{systemDate} :: date BETWEEN pt.apply_start_date AND pt.apply_end_date INNER JOIN m_item AS sh1 ON sh1.version = #{itemVersion} AND pt.pattern_type = sh1.pattern_type AND pt.pattern_code = sh1.pattern_code AND #{systemDate} :: date BETWEEN sh1.apply_start_date AND sh1.apply_end_date AND tt1.information_category_code = sh1.information_category_code LEFT JOIN m_license AS li1 ON li1.version = #{licenseVersion} AND te2.original_store_code = li1.original_store_code AND sh1.license_code = li1.license_code LEFT JOIN m_item_by_specific_store_recommendation ts ON ts.version = #{specificItemVersion} AND tt1.original_store_code = ts.original_store_code AND sh1.item_code = ts.item_code AND #{systemDate} :: date BETWEEN ts.apply_start_date AND ts.apply_end_date WHERE te2.version = #{storeVersion} AND #{systemDate} :: date BETWEEN te2.apply_start_date AND te2.apply_end_date AND ( sh1.license_code = '00' OR ( sh1.license_code != '00' AND li1.licenseditem_adopt_flag != '2' ) ) AND ( sh1.specific_item_type = ' ' OR ( sh1.specific_item_type IN ('1', '2', 'G') AND ts.original_store_code IS NOT NULL ) ) UNION ALL SELECT DISTINCT te3.store_code , '999999' , CASE WHEN gl3.gondola_furniture_type IS NULL THEN NULL ELSE LPAD(TRIM(gl3.gondola_furniture_type), 3, '0') END AS gondola_furniture_type , tt2.display_gondola , tt2.display_shelf , NULL :: numeric AS display_row , NULL :: numeric AS display_face , tt2.special_display_input_datetime , #{systemDate} :: date , CURRENT_TIMESTAMP , #{taskId} , #{taskId} , 0 FROM m_store_number AS te3 INNER JOIN m_specific_display_order_by_specific_category AS tt2 ON te3.original_store_code = tt2.original_store_code LEFT JOIN m_gondola_layout AS gl3 ON gl3.version = #{gondolaLayoutVersion} AND tt2.original_store_code = gl3.original_store_code AND tt2.display_gondola = gl3.gondola_number INNER JOIN m_recommendation_group_by_specific_category AS rg ON rg.version = #{recommendationGroupVersion} AND tt2.original_store_code = rg.original_store_code AND #{systemDate} :: date BETWEEN rg.apply_start_date AND rg.apply_end_date INNER JOIN m_item_by_specific_category AS sh2 ON sh2.version = #{itemSpecificCategory} AND rg.recommendation_group_type = sh2.recommendation_group_type AND rg.recommendation_group_code = sh2.recommendation_group_code AND #{systemDate} :: date BETWEEN sh2.apply_start_date AND sh2.apply_end_date AND tt2.information_category_code = sh2.information_category_code LEFT JOIN m_license AS li2 ON li2.version = #{licenseVersion} AND te3.original_store_code = li2.original_store_code AND sh2.license_code = li2.license_code WHERE te3.version = #{storeVersion} AND #{systemDate} :: date BETWEEN te3.apply_start_date AND te3.apply_end_date AND ( sh2.license_code = '00' OR ( sh2.license_code != '00' AND li2.licenseditem_adopt_flag != '2' ) )通过连接以下 TBL 检索了过多的记录, 并且在对大量记录执行 ROW_NUMBER() OVER 时,耗时过长。 m_store_number(门店编号主表) m_display(显示主表) m_gondola_layout(贡多拉布局)我想用临时表来处理
07-30
3.2.2 GET_DEVICE_INFO(获取设备基本信息) 用途: 获取设备的基本信息,用于之后的数据处理。服务端应该在设备初次连接的时候自动去获取一次设备的基本信息。  设备心跳(见3.2.1)  服务端应答(若服务端存在指令下发,则cmd_code头填入指令码,根据指令内容决定是否存在body,本条指令无body部分) -- HTTP header – response_code:OK trans_id:100 cmd_code: GET_DEVICE_INFO  设备应答 -- HTTP header – request_code: send_cmd_result trans_id:100 cmd_return_code: OK -- HTTP body – { "name":"设备名", "deviceId":"设备ID", "firmware":"固件名", "fpVer":"FP_128", "faceVer":"FACE_D_100", "pvVer":"PV_100", "maxBufferLen":92160, "userLimit":3000, "fpLimit":10000, "faceLimit":3000, "pvLimit":3000, "pwdLimit":3000, "cardLimit":3000, "logLimit":200000, "userCount":1234, "managerCount":2, "fpCount":1111, "faceCount":123, "pvCount":123, "pwdCount":456, "cardCount":789, "logCount":1234, "allLogCount":6666, "supportACL":1, "supportShift":0, }  服务端确认(后续服务端对send_cmd_result的回答都为这种模式,没有body部分,头部部分内容省略,详见2.8) -- HTTP header – response_code:OK trans_id:100  参数解释 字段 必须项 说明 name 是 设备名 firmware 是 固件名 fpVer 否 指纹数据版本,用于各种型号的机器的指纹数据之间的转换。 faceVer 否 人脸数据版本,用于各种型号的机器的人脸数据之间的转换。 pvVer 否 掌纹数据版本,用于各种型号的机器的掌纹数据之间的转换。 maxBufferLen 是 最大数据缓存,设备所接受的一包数据的最大大小,服务端所发送的httpbody中json长度应该要小于这个值。 userLimit 是 最大用户数 fpLimit 否 最大指纹数 faceLimit 否 最大人脸数 pvLimit 否 最大掌纹数 pwdLimit 否 最大密码数 cardLimit 否 最大卡数 logLimit 是 最大记录数 userCount 是 当前用户数 managerCount, 是 当前管理员数 fpCount 否 当前指纹数 faceCount 否 当前人脸数 pvCount 否 当前掌纹数 pwdCount 否 当前密码数 cardCount 否 当前卡数 logCount 是 当前记录数 allLogCount 是 总记录数 supportACL 否 是否支持专业门禁 supportShift 否 是否支持排班 那分析下这个文档 要是获取设备信息 以什么方式调取
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值