資源簡介
js加簽一般都沒有問題,我就是加簽之后上傳的問題弄了兩個禮拜,最后弄清楚了。
以下是數據上報海關方法,我用的是.net的web方式:
1.添加三個引用,見dll文件夾。
2.加載我寫的類:兩個cs文件(放到web目錄下)
3.組織上報數據實體格式如下
public class payExchangeInfoLists
{
public string orderNo { get; set; }//String 訂單編號
public List goodsInfo { get; set; }// List 商品信息
public string recpAccount { get; set; }// String 收款賬號
public string recpCode { get; set; }// String 收款企業代碼
public string recpName { get; set; }// String 收款企業名稱
}
public class goodsInfo
{
public string gname { get; set; }// String 商品名稱
public string itemLink { get; set; }// String 商品展示鏈接地址
}
public class payExchangeInfoHead
{
public string guid { get; set; }// String 系統唯一序號
public string initalRequest { get; set; }// String 原始請求
public string initalResponse { get; set; }// String 原始響應
public string ebpCode { get; set; }// String 電商平臺代碼
public string payCode { get; set; }// String 支付企業代碼
public string payTransactionId { get; set; }// String 交易流水號
public double totalAmount { get; set; }// double 交易金額
public string currency { get; set; }// String 幣制
public string verDept { get; set; }// String 驗核機構
public string payType { get; set; }// String 支付類型
public string tradingTime { get; set; }// String 交易成功時間
public string note { get; set; }// String 備注
}
public class payExInfoStr
{
public string sessionID { get; set; }// string Y In 海關發起請求時,平臺接收的會話ID。
public payExchangeInfoHead payExchangeInfoHead { get; set; }// String Y In 支付原始數據表頭
public List payExchangeInfoLists { get; set; }// List Y In 支付原始數據表體
public string serviceTime { get; set; }// Long Y In 返回時的系統時間
public string certNo { get; set;

代碼片段和文件信息
using?System;
using?System.Collections.Concurrent;
using?System.Collections.Generic;
using?System.Configuration;
using?System.IO;
using?System.Net.Http;
using?System.Security.Cryptography.X509Certificates;
using?System.Text.Regularexpressions;
using?System.Threading.Tasks;
using?Newtonsoft.Json;
namespace?Gate179Sign
{
????public?class?_179report
????{
????????public?class?CustomsPaymentReport
????????{
????????????private?readonly?string?_customsPaymentReportUrl?=?“https://swapptest.singlewindow.cn/ceb2grab/grab/realTimeDataUpload“;
????????????//??private?readonly?ILogger?_logger?=?LogManager.GetCurrentClassLogger();
????????????private?static?ConcurrentDictionary?CertCache?=?new?ConcurrentDictionary();
????????????private?static?Func?GetCertCacheKey?=?(url?certKey)?=>?$“{url}{certKey}“;
????????????private?static?HttpClient?HttpClient?=?new?HttpClient(GetCertificateHandler());
????????????private?static?HttpClientHandler?GetCertificateHandler()
????????????{
????????????????var?handler?=?new?WebRequestHandler();
????????????????var?provider?=?new?CustomsReportSettingProvider();
????????????????var?setting?=?provider.GetCustomsReportSetting();
????????????????var?key?=?GetCertCacheKey(setting.CertFilePath?setting.CertPassword);
????????????????var?certStream?=?CertCache.GetOrAdd(key?ReadCertFile(setting.CertFilePath));
????????????????X509Certificate2?cert?=?new?X509Certificate2(certStream?setting.CertPassword);
????????????????handler.ClientCertificates.Add(cert);
????????????????return?handler;
????????????}
????????????private?static?byte[]?ReadCertFile(string?file)
????????????{
????????????????using?(var?fileStream?=?new?FileStream(System.Web.HttpContext.Current.Server.MapPath(file)?FileMode.Open))
????????????????{
????????????????????var?fileSize?=?fileStream.Length;
????????????????????var?buffer?=?new?byte[fileSize];
????????????????????fileStream.Read(buffer?0?buffer.Length);
????????????????????return?buffer;
????????????????}
????????????}
????????????///?
????????????///?上報數據
????????????///?
????????????///?
????????????public?async?Task?Report(Utility.OMSApi.omsclass.payExInfoStr?input)//?Report(PaymentReportData?input)
????????????{
????????????????var?data?=?input.ToSpecFormatJsonString();
????????????????Utility.LogMgr.Info($“海關上報支付數據:[上報]?{data}?“);
????????????????using?(var?msg?=?new?HttpRequestMessage(HttpMethod.Post?_customsPaymentReportUrl))
????????????????{
????????????????????msg.Content?=?new?FormUrlEncodedContent(new[]?{?new?KeyValuePair(“payExInfoStr“?data)?});
????????????????????var?response?=?await?HttpClient.SendAsync(msg);
????????????????????var?resp?=?await?response.Content.ReadAsStringAsync();
????????????????????var?result?=?JsonConvert.Deserializeobject(resp);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8311??2019-04-23?11:17??179report.cs
?????文件???????1398??2019-04-23?11:05??AsyncHelper.cs
?????文件???????2598??2019-04-23?11:21??readme.txt
?????文件??????27648??2017-01-29?15:38??dll\Nito.AsyncEx.Concurrent.dll
?????文件??????29722??2017-01-29?15:38??dll\Nito.AsyncEx.Concurrent.xm
?????文件??????96256??2017-01-29?15:38??dll\Nito.AsyncEx.dll
?????文件???????8192??2017-01-29?15:38??dll\Nito.AsyncEx.Enlightenment.dll
?????文件????????583??2017-01-29?15:38??dll\Nito.AsyncEx.Enlightenment.xm
?????文件?????246620??2017-01-29?15:38??dll\Nito.AsyncEx.xm
?????目錄??????????0??2019-04-23?11:09??dll
-----------?---------??----------?-----??----
???????????????421328????????????????????10
- 上一篇:Qt:利用ntp服務器獲取網絡時間
- 下一篇:分布式的PCA
評論
共有 條評論