跨境电商申报订单加签申报
public class cebsignclient
{
public void startsignclient()
{
}
private static signclientconfig _signclientconfig;
public static signclientconfig cebsignclientconfig
{
get { return _signclientconfig; }
set { _signclientconfig = value; }
}
public static signclientconfig getcebsignclientconfig()
{
if (_signclientconfig == null)
{
_signclientconfig = new signclientconfig();
}
return _signclientconfig;
}
public static void setcebsignclientconfig(signclientconfig cebsignclientconfig)
{
_signclientconfig = cebsignclientconfig;
}
/// <summary>
/// 处理报文加签服务64位
/// </summary>
/// <param name="cebmessagesxml"></param>
/// <param name="filename"></param>
/// <returns></returns>
public static string startsigntransform(string cebmessagesxml, string filename, ref bool retunvalue)
{
string statuscode = string.empty;
string statusmessage = string.empty;
retunvalue = true;
signhelper signhelper = new signhelper();
getcebsignclientconfig();
string centino = "";
signhelper.password = cebsignclientconfig.signpwd;
signhelper.msgtype = cebsignclientconfig.msgtype;
signhelper.receiverid = cebsignclientconfig.receiverid;
signhelper.senderid = cebsignclientconfig.senderid;
try
{
if (signhelper.isicorukeyok(out centino))
{
string text = cebsignclientconfig.receivesignin;//接收文件夹
string text2 = cebsignclientconfig.sendin;//发送文件夹
//改造
string text4;
try
{
signhelper.copmsgid = guid.newguid().tostring();
text4 = signhelper.signinfo(cebmessagesxml, centino);
//是否生成终端报文
if (cebsignclientconfig.checkedterminal)
{
text4 = signhelper.shellinfo(text4);
}
}
catch (exception ex)
{
//this.transformexception("文件" + text3 + "异常:" + ex.message);
statusmessage = ex.message;
return statusmessage;
}
//拼接目标文件夹和文件路径
//string path = path.combine(text2, path.getfilename(filename));
var cebmessage = signhelper.formatxml(text4);
statusmessage = cebmessage;
//file.writealltext(path, cebmessage);
//file.delete(filename);
}
else
{
//this.transformexception("卡信息读取失败");
statusmessage = "卡信息读取失败";
retunvalue = false;
}
}
catch (exception ex)
{
//this.transformexception(ex.message);
statusmessage = ex.message;
retunvalue = false;
}
return statusmessage;
}
/// <summary>
/// 处理报文加签服务64位
/// </summary>
/// <param name="cebmessagesxml"></param>
/// <param name="filename"></param>
/// <returns></returns>
public static string startsigntransform(string cebmessagesxml, ref bool retunvalue)
{
string statuscode = string.empty;
string statusmessage = string.empty;
retunvalue = true;
signhelper signhelper = new signhelper();
getcebsignclientconfig();
string centino = "";
signhelper.password = cebsignclientconfig.signpwd;
signhelper.msgtype = cebsignclientconfig.msgtype;
signhelper.receiverid = cebsignclientconfig.receiverid;
signhelper.senderid = cebsignclientconfig.senderid;
try
{
if (signhelper.isicorukeyok(out centino))
{
string text = cebsignclientconfig.receivesignin;//接收文件夹
string text2 = cebsignclientconfig.sendin;//发送文件夹
//改造
string text4;
try
{
signhelper.copmsgid = guid.newguid().tostring();
text4 = signhelper.signinfo(cebmessagesxml, centino);
//是否生成终端报文
if (cebsignclientconfig.checkedterminal)
{
text4 = signhelper.shellinfo(text4);
}
}
catch (exception ex)
{
//this.transformexception("文件" + text3 + "异常:" + ex.message);
statusmessage = ex.message;
return statusmessage;
}
//拼接目标文件夹和文件路径
//string path = path.combine(text2, path.getfilename(filename));
var cebmessage = signhelper.formatxml(text4);
statusmessage = cebmessage;
//file.writealltext(path, cebmessage);
//file.delete(filename);
}
else
{
//this.transformexception("卡信息读取失败");
statusmessage = "卡信息读取失败";
retunvalue = false;
}
}
catch (exception ex)
{
//this.transformexception(ex.message);
statusmessage = ex.message;
retunvalue = false;
}
return statusmessage;
}
}
public class signclientconfig
{
public signclientconfig()
{
signpwd = "88888888";
receivesignin = @"d:\跨境通\customsdeclarationwebmvcwms3.5\dotnet.winform\bin\debug\eportexchange\signin";
sendin = @"d:\跨境通\customsdeclarationwebmvcwms3.5\dotnet.winform\bin\debug\eportexchange\in";
checkedterminal = false;
msgtype = "";
receiverid = "";
senderid = "";
}
/// <summary>
/// 密码
/// </summary>
public string signpwd { get; set; }
/// <summary>
/// 加签后的文件夹 接收文件夹
/// </summary>
public string receivesignin { get; set; }
/// <summary>
/// 待加签文件夹 发送文件夹
/// </summary>
public string sendin { get; set; }
/// <summary>
/// 消息类型
/// </summary>
public string msgtype { get; set; }
/// <summary>
/// 接收id
/// </summary>
public string receiverid { get; set; }
/// <summary>
/// 发送id
/// </summary>
public string senderid { get; set; }
/// <summary>
/// 是否生成终端报文
/// </summary>
public bool checkedterminal { get; set; }
}
//杭州版报文组装 //报文组装 按多条订单批量发送
foreach (kcyceb311messageorderheadentity item in ceb311messagelist)
{
progress.setprogressvalue(1);
if (string.isnullorwhitespace(item.waybills))
{
statusmessage = "发现订单运单不存在!";
return;
}
//每条订单不同的guid
ceb311hzsendmodel.guid = cebhelputilities.getguid();
ceb311messageordersendmodel sendmodel = new ceb311messageordersendmodel();
sendmodel.ceb311orderheadinfo = item;//主体信息
condition = new searchcondition();
sqlcondition = string.empty;
condition.addcondition(kcyceb311messageorderlistentity.fieldorderheadid, item.orderheadid, sqloperator.equal)//
.addcondition(kcyceb311messageorderlistentity.fieldcompanyid, userinfo.companyid, sqloperator.equal)
.addcondition(kcyceb311messageorderlistentity.fielddeletionstatecode, 0, sqloperator.equal)//删除状态
.addcondition(kcyceb311messageorderlistentity.fieldenabled, 1, sqloperator.equal);//有效的
sqlcondition = condition.buildconditionsql(databasetype.sqlserver);
list<kcyceb311messageorderlistentity> ceb311messageorderlist = new list<kcyceb311messageorderlistentity>();
ceb311messageorderlist = new kcyceb311messageorderlistmanager().getlist<kcyceb311messageorderlistentity>(sqlcondition);
sendmodel.ceb311orderdateillist = ceb311messageorderlist;//明细信息
ceb311hzsendmodel.ceb311messagehzsendlist.add(sendmodel);
bool returnvalue = true;
//报文校验
returnvalue = hzceb311message.checkceb311message(ceb311hzsendmodel, out statuscode, out statusmessage);
if (!returnvalue)
{
// 消息提醒
loadingutil.showinformationmessage(statusmessage, appmessage.msg0000);
return;
}
if (statuscode.equals("isstockqty"))
{
}
statusmessage = "杭州报文发送";
progress.setprogressvalue(10);
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.setstatusinfo.update();
//生成杭州版报文
string ceb311messagexml = hzceb311message.getcareatehzorderxml(ceb311hzsendmodel);
ceb311hzsendmodel.cebsoapordersxml = ceb311messagexml;//原始报文
ceb311hzsendmodel.sendordersxml = ceb311messagexml;//杭州版报文
//报文加密私钥
ceb311hzsendmodel.secretkey = ceb311hzsendmodel.ceb311storesorderdeclareparameterinfo.aessign;//aes
ceb311hzsendmodel.privatekey = ceb311hzsendmodel.ceb311storesorderdeclareparameterinfo.privatekey.trim();
ceb311hzsendmodel.sendurl = ceb311hzsendmodel.ceb311storesorderdeclareparameterinfo.declareaddress;//订单申报地址
//aes加密
ceb311hzsendmodel.sendordersxml = kuangbaseaesutil.encrypt(ceb311hzsendmodel.sendordersxml, ceb311hzsendmodel.secretkey);
cebmessagehzjkfsignmodel.sign(ref ceb311hzsendmodel);
if (!ceb311hzsendmodel.status)
{
// 消息提醒
loadingutil.showinformationmessage(ceb311hzsendmodel.statusmessage, appmessage.msg0000);
return;
}
ceb311hzsendmodel.sendordersxml = hzoperationhttp.datasoap(ceb311hzsendmodel.sendordersxml, ceb311hzsendmodel.businesstype, ceb311hzsendmodel.datadigest, ceb311hzsendmodel.companycode);
ceb311hzsendmodel.responseordersxml = hzoperationhttp.httppost(ceb311hzsendmodel);
if (ceb311hzsendmodel.status)
{
statusmessage = "处理回执消息";
progress.setprogressvalue(10);
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.setstatusinfo.update();
//读取返回消息处理状态
hzjkforderresultmodel responseordersresultmodel = new hzjkforderresultmodel();
//处理返回的xml报文
responseordersresultmodel.deccontentxml = jkfmessagexmloperation.readreturnxml(ceb311hzsendmodel.responseordersxml.trim());
list<basejkfordermessagemodel> listbasejkfmessagemodel = jkfmessagexmloperation.readjkfresultmessage(responseordersresultmodel);
foreach (var jkfitem in listbasejkfmessagemodel)
{
jkfitem.jkfcustomsorderloginfo.orderno = jkfitem.jkfresultinfo.businessno;
jkfitem.jkfcustomsorderloginfo.servicename = "ceb311订单服务";
jkfitem.jkfcustomsorderloginfo.operationname = "ceb311杭州申报";
jkfitem.jkfcustomsorderloginfo.createuserid = userinfo.id;
jkfitem.jkfcustomsorderloginfo.createby = userinfo.realname;
jkfitem.jkfcustomsorderloginfo.operation = userinfo.username;
jkfitem.jkfcustomsorderloginfo.companyid = userinfo.companyid;
}
bool returnlogvalue = hzjkforderresultservice.addjkfresponseresult(listbasejkfmessagemodel);
}
//发送成功,再发送总署报文
if (ceb311hzsendmodel.status)
{
statusmessage = "进行总署加签";
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.setprogressvalue(50);
progress.setstatusinfo.update();
//总署版报文生成 //生成报文 本地加签
ceb311hzsendmodel = hzceb311message.getsendsignatureceb311message(ceb311hzsendmodel);
//生成报文 本地加签
bool retunvalue = true;
string filename = "ceb311_zongshu_" + ceb311hzsendmodel.guid + ".xml";
//是否生成终端报文
signclientconfig signclientconfig = cebsignclient.getcebsignclientconfig();
signclientconfig.checkedterminal = true;
signclientconfig.signpwd = ceb311hzsendmodel.cebbasetransferinfo.note;// "88888888";
signclientconfig.senderid = ceb311hzsendmodel.dxpid;
signclientconfig.receiverid = ceb311hzsendmodel.receiverid;
signclientconfig.msgtype = ceb311hzsendmodel.messagetype;
cebsignclient.setcebsignclientconfig(signclientconfig);
//进行签名
ceb311hzsendmodel.cebdeclareservicexml = cebsignclient.startsigntransform(ceb311hzsendmodel.sendordersxml, filename, ref retunvalue);
if (!retunvalue)
{
statusmessage = ceb311hzsendmodel.cebdeclareservicexml;
//消息提醒
//loadingutil.showinformationmessage(statusmessage, appmessage.msg0000);
return;
}
else
{
statusmessage = "加签完成";
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.setprogressvalue(50);
progress.setstatusinfo.update();
ceb311hzsendmodel.eportexchangepath = appdomain.currentdomain.basedirectory + @"\eportexchange\in";
string path = path.combine(ceb311hzsendmodel.eportexchangepath, filename);
file.writealltext(path, ceb311hzsendmodel.cebdeclareservicexml);
}
//包装总署发送报文 包装saop格式发送
ceb311hzsendmodel.cebsoapordersxml = hzoperationhttp.cebdeclaredatasoap(ceb311hzsendmodel.cebdeclareservicexml);
ceb311hzsendmodel.sendurl = "http://api.kjeport.com/newyorkws/ws/receivecebdeclare";
//测试环璋地址 "http://122.224.230.4:18003/newyorkws/ws/receivecebdeclare";正试环璋地址//http://api.kjeport.com/newyorkws/ws/receivecebdeclare?wsdl//
ceb311hzsendmodel.responseordersxml = hzoperationhttp.cebdeclareservicehttppost(ceb311hzsendmodel);//发送总署申报
//处理总署发送报文返回消息
#region 处理总署发送报文返回消息
//处理返回的xml报文
ceb311hzsendmodel.responseordersxml = jkfmessagexmloperation.readcebzongshureturnxml(ceb311hzsendmodel.responseordersxml.trim());
list<basejkfordermessagemodel> listbasejkfmessagemodel = jkfmessagexmloperation.readceb311hzzongshuresultmessage(ceb311hzsendmodel, sendmodel);
bool returnlogvalue = false;
foreach (basejkfordermessagemodel jkfitem in listbasejkfmessagemodel)
{
//jkfitem.jkfcustomsorderloginfo.orderno = jkfitem.jkfresultinfo.businessno;
jkfitem.jkfcustomsorderloginfo.servicename = "ceb311杭州总署申报";
jkfitem.jkfcustomsorderloginfo.operationname = "ceb311杭州总署申报";
jkfitem.jkfcustomsorderloginfo.createuserid = userinfo.id;
jkfitem.jkfcustomsorderloginfo.createby = userinfo.realname;
jkfitem.jkfcustomsorderloginfo.operation = userinfo.username;
jkfitem.jkfcustomsorderloginfo.companyid = userinfo.companyid;
}
returnlogvalue = hzjkforderresultservice.addjkfresponseresult(listbasejkfmessagemodel);
#endregion
//申报中状态
if (returnlogvalue)
{
int stateint = ((int)orderstate.indeclaration);//订单状态申报中
ceb311messageorderservice.uptateceb311orderstate(sendmodel.ceb311orderheadinfo.orderno, stateint);
//生成总署报文发送成功
statuscode = status.ok.tostring();
statusmessage = "发送成功!";
itemcount++;
progress.setprogressvalue(100);
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.update();
}
else
{
statuscode = status.error.tostring();
statusmessage = "发送失败!";
itemerrcount++;
progress.setprogressvalue(100);
progress.setstatusinfo.text = string.format("操作{0}:{1}条 " + "错误:{2} 条", statusmessage, itemcount, itemerrcount);
progress.update();
}
}
}
这是本人的关于跨境的仓储管理系统,跨境申报,打单发货一体,支持普贸中境一起操作。
这是本人的关于跨境的仓储管理系统,跨境申报,打单发货一体,支持普贸中境一起操作。
插上ic卡即可加签发送申报,目前支持杭州,海南,上海,深圳等海关对接申报。
就展示到这里了,希望有关做这方面的公司使用帮你快速进行跨境贸易通关服务。15557148372,qq:183840232
推荐阅读