/// <summary> /// 根据统一下单接口返回的对象,创建一个App客户端直接可用的参数对象。 /// </summary> /// <param name="uiniOrderResp"></param> /// <returns></returns> public WxAppPrepayOrderInfoMo GetAppPrepayOrderInfoMo(WxAddPayUniOrderResp uiniOrderResp) { var wxAppPrepayOrderInfoMo = new WxAppPrepayOrderInfoMo { appid = uiniOrderResp.appid, partnerid = uiniOrderResp.mch_id, prepayid = uiniOrderResp.prepay_id, noncestr = uiniOrderResp.nonce_str, timestamp = DateTime.Now.ToUtcSeconds().ToString(), package = "Sign=WXPay", }; var dic = new SortedDictionary <string, object>() { { "appid", wxAppPrepayOrderInfoMo.appid }, { "partnerid", wxAppPrepayOrderInfoMo.partnerid }, { "prepayid", wxAppPrepayOrderInfoMo.prepayid }, { "noncestr", wxAppPrepayOrderInfoMo.noncestr }, { "package", wxAppPrepayOrderInfoMo.package }, { "timestamp", wxAppPrepayOrderInfoMo.timestamp }, }; wxAppPrepayOrderInfoMo.sign = GetSign(dic); return(wxAppPrepayOrderInfoMo); }
/// <summary> /// 把统一下单结果响应给微信支付系统 /// </summary> /// <param name="uniOrder"></param> /// <returns></returns> public string GetScanCallBackResponse(WxAddPayUniOrderResp uniOrder) { var res = new WxPayScanCallBackResMo(); res.err_code_des = uniOrder.err_code_des; res.prepay_id = uniOrder.prepay_id; res.result_code = uniOrder.result_code; res.return_code = uniOrder.return_code; res.return_msg = uniOrder.return_msg; var dics = res.GetDics(); dics.Add("appid", ApiConfig.AppId); dics.Add("mch_id", ApiConfig.MchId); CompleteDicSign(dics); return(dics.ProduceXml()); }
/// <summary> /// 获取签名 /// </summary> /// <param name="res"></param> /// <returns></returns> public string GetSign(WxAddPayUniOrderResp res) { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); string GenerateTimeStamp = Convert.ToInt64(ts.TotalSeconds).ToString(); var list = new SortedDictionary <string, object>(); list.Add("appId", res.appid); list.Add("timeStamp", GenerateTimeStamp); list.Add("nonceStr", res.nonce_str); list.Add("package", "prepay_id=" + res.prepay_id); list.Add("signType", "MD5"); string encStr = string.Join("&", list.Select( k => { var str = k.Value?.ToString(); return(string.IsNullOrEmpty(str) ? string.Empty : string.Concat(k.Key, "=", str)); })); return(Md5.EncryptHexString(string.Concat(encStr, "&key=", m_Api.ApiConfig.Key)).ToUpper()); }