import com.dderp.common.api.BusinessExecutor import com.dderp.common.datas.ERPModule import com.dderp.common.entity.base.InvokeCallParams import com.dderp.common.entity.base.InvokeCallResult import com.dySweetFishPlugin.sql.dao.OperatorWait import com.sweetfish.convert.json.JsonConvert import com.sweetfish.service.RetResult import org.apache.commons.lang3.StringUtils import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger import javax.annotation.Resource class BE_Express_CallBack_VerifySign_SFTC implements BusinessExecutor { private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName()) @Resource(name = "property.sftc.appId") long sfAppId @Resource(name = "property.sftc.appKey") String sfAppKey @Resource JsonConvert jsonConvert @Override String scriptName() { return "顺丰同城回调数据验证签名" } @Override ERPModule module() { return ERPModule.EXPRESS_API } @Override OperatorWait getAWait(InvokeCallParams source) { return OperatorWait.SYNC } RetResult execute(InvokeCallParams source) { String body = source.params String currentSign = ExpressApiSign.sfGenerateOpenSign(body, sfAppId, sfAppKey) String orginSign = source.attach.getValue("sign", "") def resultData = [ error_code: 0, error_msg: "success" ] if (!StringUtils.equals(currentSign, orginSign)) { logger.error("签名错误") return RetResult. errorT().retinfo("签名错误").result( InvokeCallResult.success().data(jsonConvert.convertTo(resultData)) ) } return RetResult. successT().result( InvokeCallResult.success().data(jsonConvert.convertTo(resultData)) ) } }