| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- using dodohold.core;
- namespace molilian.core
- {
- public partial class KsUnionPlus
- {
- public class BaseResponse
- {
- public int result { get; set; }
- public string msg { get; set; }
- public string error_msg { get; set; }
- public string code { get; set; }
- public string requestId { get; set; }
- public string sub_msg { get; set; }
- public string sub_code { get; set; }
- }
- public class GetItemIdResponse : BaseResponse
- {
- public ParseInfoDTO data { get; set; } = new ParseInfoDTO { };
- }
- public class ParseCpsUrlResponse : BaseResponse
- {
- public DistributeCpsPidLinkDTO data { get; set; } = new DistributeCpsPidLinkDTO { };
- }
- public class DistributeCpsPidLinkDTO
- {
- public string linkCode { get; set; } = string.Empty;
- public string linkUrl { get; set; } = string.Empty;
- public string kwaiUrl { get; set; } = string.Empty;
- public string cpsPid { get; set; } = string.Empty;
- public string nebulaKwaiUrl { get; set; } = string.Empty;
- public string shortContent { get; set; } = string.Empty;
- public string longContent { get; set; } = string.Empty;
- public string commandContent { get; set; } = string.Empty;
- public string shareToken { get; set; } = string.Empty;
- public string minaShortLink { get; set; } = string.Empty;
- public bool hasSecondActivity { get; set; } = true;
- }
- public class ParseInfoDTO
- {
- public long itemId { get; set; }
- }
- public async Task<KsDataDTO> UnionGeneratelink(KsDataDTO result, string content, CancellationToken cancellationToken = default)
- {
- long item_id = getItemId(content);
- var data = parseCpsUrl(item_id);
- /*
- {"result":100001,"msg":"业务处理失败","error_msg":"分销商品不存在或已下架","code":"807000","requestId":"724092832538976441","sub_msg":"分销商品不存在或已下架","sub_code":"100001"}
- */
- if (data.result != 1)
- {
- result.success = false;
- result.message = "转链失败";
- result.reason = data.error_msg;
- result.deeplink_url = GetDeeplink(content, LinkTypeEnum.goods);
- return result;
- }
- result.success = true;
- result.link_type = LinkTypeEnum.goods;
- result.shortLinkurl = data.data.linkUrl;
- result.deeplink_url = data.data.kwaiUrl;
- return result;
- }
- public long getItemId(string content)
- {
- //todo 写死
- var _ticket = new dodohold.core.kwaixiaodian.AccessTokenDTO();
- _ticket.access_token = "ChFvYXV0aC5hY2Nlc3NUb2tlbhIwii6iYYKxyLm-BSThe3i6PzbpEPKAYtJWZLdIZ_jReeOfpJ4LjFdJhvkYE5uzHguQGhITB63P569DkqhlagGy21IJcH4iIECl5YRE_bk2h-1JjTf_u83zYhL-XeeG1QaT2PDMXZFYKAUwAQ";
- if (!string.IsNullOrEmpty(_config.ksTestToken)) _ticket.access_token = _config.ksTestToken;
- string action = "open.distribution.cps.kwaimoney.link.parse";
- var data = new { cpsLink = content };
- var body = plus.Request(_ticket, action, data.Convert2Json(), "POST");
- var result = body.Convert2Object<GetItemIdResponse>();
- return result.data.itemId;
- }
- public ParseCpsUrlResponse parseCpsUrl(long itemId)
- {
- //todo 写死
- var _ticket = new dodohold.core.kwaixiaodian.AccessTokenDTO();
- _ticket.access_token = "ChFvYXV0aC5hY2Nlc3NUb2tlbhIwii6iYYKxyLm-BSThe3i6PzbpEPKAYtJWZLdIZ_jReeOfpJ4LjFdJhvkYE5uzHguQGhITB63P569DkqhlagGy21IJcH4iIECl5YRE_bk2h-1JjTf_u83zYhL-XeeG1QaT2PDMXZFYKAUwAQ";
- if (!string.IsNullOrEmpty(_config.ksTestToken)) _ticket.access_token = _config.ksTestToken;
- string action = "open.distribution.cps.kwaimoney.link.create";
- var ts = DateTime.Now.Convert2UnixTimestamp();
- string comments = ts.ToString();
- int linkType = 101;
- var data = new
- {
- linkType,
- linkCarrierId = itemId,
- comments,
- cpsPid = _account.pid,
- genPoster = false,
- };
- var body = plus.Request(_ticket, action, data.Convert2Json(), "POST");
- var result = body.Convert2Object<ParseCpsUrlResponse>();
- return result;
- }
- //public class ErrorResponse
- //{
- // public string error_msg { get; set; }
- // public string sub_msg { get; set; }
- // public string sub_code { get; set; }
- // public int error_code { get; set; }
- // public string request_id { get; set; }
- //}
- //public class GoodsZsUnitGenerateResponse
- //{
- // public string multi_group_mobile_short_url { get; set; }
- // public string multi_group_url { get; set; }
- // public string mobile_url { get; set; }
- // public string multi_group_short_url { get; set; }
- // public string mobile_short_url { get; set; }
- // public string multi_group_mobile_url { get; set; }
- // public string request_id { get; set; }
- // public string url { get; set; }
- // public string short_url { get; set; }
- //}
- //public class UnionGeneratelinkDTO
- //{
- // public GoodsZsUnitGenerateResponse goods_zs_unit_generate_response { get; set; }
- // public ErrorResponse error_response { get; set; }
- //}
- //public static Dictionary<string, string> GenerateSignature(KsPoolDTO account, Dictionary<string, string> args)
- //{
- // if (args.ContainsKey("sign")) args.Remove("sign");
- // // 对参数进行ASCII升序排序
- // var sortedArgs = args.OrderBy(kv => kv.Key).ToDictionary(kv => kv.Key, kv => kv.Value);
- // // 拼接排序后的参数
- // StringBuilder stringBuilder = new StringBuilder();
- // foreach (var kv in sortedArgs)
- // {
- // stringBuilder.Append(kv.Key).Append(kv.Value);
- // }
- // // 在头部和尾部分别拼接client_secret
- // string signString = account.app_secret + stringBuilder.ToString() + account.app_secret;
- // signString = signString.MD5(false, false);
- // if (!args.TryAdd("sign", signString))
- // {
- // args["sign"] = signString;
- // }
- // return args;
- //}
- // /// <summary>
- // /// 多多进宝转链接口
- // /// </summary>
- // /// <param name="result"></param>
- // /// <param name="sourceUrl"></param>
- // /// <param name="cancellationToken"></param>
- // /// <returns></returns>
- // public async Task<KsDataDTO> UnionGeneratelink(KsDataDTO result, string sourceUrl, CancellationToken cancellationToken = default)
- // {
- // var ts = DateTime.Now.Convert2UnixTimestamp(true);
- // var args = new Dictionary<string, string>
- // {
- // { "type", "ks.ddk.goods.zs.unit.url.gen" },
- // { "data_type", "JSON" },
- // { "client_id", _account.app_key },
- // { "pid", _account.pid },
- // { "source_url", sourceUrl },
- // { "timestamp", ts.ToString() }
- // };
- // args = GenerateSignature(_account, args);
- // var query = HttpUtility.ParseQueryString(string.Empty);
- // foreach (var kvp in args) query[kvp.Key] = kvp.Value;
- // string urlWithQuery = $"{_baseUrl}?{query}";
- // WebClientUtility client = new();
- // client.Proxy = _proxy;
- //#if DEBUG
- // client.Proxy = null;
- //#endif
- // client.SetContentType("application/json");
- // var response = await client.RequestAsync(urlWithQuery, "GET", cancellationToken);
- // string body = response.Body();
- // var root = body.Convert2Object<UnionGeneratelinkDTO>();
- // string message = string.Empty;
- // _ = new LoggerLibrary("KsUnion", "debug ").Info(urlWithQuery, body).SaveAsync();
- // if (root.error_response != null || root.goods_zs_unit_generate_response == null)
- // {
- // message = $"{root.error_response.sub_code}:{root.error_response.sub_msg}";
- // result.success = false;
- // result.message = "转链失败";
- // result.reason = message;
- // _ = new LoggerLibrary("KsUnion", "UnionGeneratelink").Info(urlWithQuery, body).SaveAsync();
- // return result;
- // }
- // if (string.IsNullOrEmpty(root.goods_zs_unit_generate_response.url))
- // {
- // result.success = false;
- // result.message = "转链失败";
- // result.reason = "无法转链";
- // _ = new LoggerLibrary("KsUnion", "UnionGeneratelink").Info(urlWithQuery, body).SaveAsync();
- // return result;
- // }
- // result.itemId = root.goods_zs_unit_generate_response.url.GetContentPart("goods_id=", "&");
- // result.success = true;
- // result.message = "OK";
- // result.link_type = LinkTypeEnum.goods;
- // result.shortLinkurl = root.goods_zs_unit_generate_response.short_url;
- // result.content = result.shortLinkurl;
- // result.deeplink_url = GetDeeplink(result.shortLinkurl);
- // return result;
- // }
- }
- }
|