/// <summary> /// 签约的xml /// </summary> /// <param name="item"></param> /// <returns></returns> public static string GetTypeVXml(TypeVItem item) { var card = item.Card; var trade = item.Trade; return ($"{VERSION_INFO}<data><card><bank>{card.Bank}</bank><type>{card.Type}</type><no>{card.No}</no><exp>{card.Exp}</exp><cvv2>{card.Cvv2}</cvv2><name>{card.Name}</name><idtype>{card.IdType}</idtype><idno>{card.IdNo}</idno><phone>{card.Phone}</phone></card><trade><type>{trade.Type}</type><id>{trade.Id}</id><amount>{trade.Amount}</amount><currency>{trade.Currency}</currency></trade></data>"); }
/// <summary> /// 快捷支付签约 /// </summary> /// <param name="req"></param> /// <returns></returns> /// <exception cref="BizException"></exception> public async Task <ExpressContractedClientRsp> ExpressContractAsync(TypeVItem req) { req.NotNull("请求参数"); debugInfo.Info($"快捷签约:{req.ToJsonString()}"); req.Card.NotNull("卡信息"); req.Trade.NotNull("交易信息"); var card = req.Card; card.Bank.NotNull("持卡人支付卡号发卡行"); card.Type.EnumValueValid("持卡人支付卡号卡类型"); card.No.NotNull("持卡人支付卡号"); card.Name.NotNull("持卡人姓名"); card.IdType.NotNull("持卡人证件类型"); card.IdNo.NotNull("持卡人证件号"); card.Phone.NotNull("持卡人手机号"); var trade = req.Trade; trade.Type.ShouldBe("V", "交易类型"); trade.Id.NotNull("交易号"); trade.Id.NotTooLong(30, "交易号"); trade.Amount.DecimalValid("交易金额"); trade.Currency.ShouldBe("CNY", "交易币种"); var xmlData = JdHelper.GetTypeVXml(req); var desEncrypted = JdHelper.DesEncrypt(xmlData, jdConfig.DesKey); var sign = JdHelper.Md5(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, jdConfig.Md5Key); var xml = JdHelper.CreateChinaBank(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, sign); var base64EncodedStr = JdHelper.Base64Encode(xml); var reqModel = new HttpReqModel() { Method = "post", ReqBody = new Dictionary <string, string>() { { "req", base64EncodedStr }, { "charset", "utf-8" } }, Url = jdConfig.FastPayUrl }; var rspStr = await HttpHelper.GetResultAsync <string>(reqModel); var content = rspStr.Substring(rspStr.IndexOf('=') + 1); debugInfo.Info($"快捷签约返回原文:{rspStr}"); var rsp = await ParseExpresssContractAsync(content); debugInfo.Info($"快捷签约解析:{rsp.ToJsonString()}"); return(rsp); }
public async Task <IActionResult> ExpressContractAsync([FromBody] TypeVItem req) { var rsp = await jdService.ExpressContractAsync(req); return(Ok(rsp)); }