/// <summary> /// 返回预支付订单号 /// 统一支付接口,可受 JSAPI/NATIVE/APP 下预支付订单,返回预支付订单号 /// </summary> public weixin_unified_order_return UnifiedOrder(weixin_unified_order order) { //初始化的一些固定的值 order.appid = AppId; order.mch_id = MchId; //设置可能中文的字段的UTF8编码格式 //ordervo.body = HttpUtility.UrlEncode(ordervo.body, System.Text.Encoding.GetEncoding("UTF-8")); //设置数据签名 Hashtable sign_hashtable = Util.voToHashtable(order); order.sign = Sign(sign_hashtable); //发起远程请求,得到XML数据 string action = "https://api.mch.weixin.qq.com/pay/unifiedorder"; string data = Util.voToXML(order); string xmlData = Util.MethodPOST(action, data, "UTF-8"); //读取XML文档 XmlDocument xml = new XmlDocument(); xml.LoadXml(xmlData); return((weixin_unified_order_return)Util.xmlToVO(xml, "DbModels.WeixinModels.UnifiedOrderReturn")); }
/// <summary> /// 统一下单 /// </summary> /// <param name="openid"></param> /// <param name="appcode"></param> /// <param name="seedName"></param> /// <param name="notifyUrl"></param> /// <param name="weixin"></param> /// <returns></returns> public weixin_jsapi_pay GetPayParaData(string openid, string appcode, string seedName, string notifyUrl, weixin_list weixin) { //微信公众号统一下单 (需要将数据库weixin的信息补全) WeixinPay weixinPay = new WeixinPay(System.Web.HttpContext.Current, weixin.appid, weixin.appsecret, weixin.pay_mch_id, weixin.pay_partner_key); //string payNumber = Common.Orderform.Orderform.getNewPayNumer(orderform.uid.ToString()); string payNumber = ""; //微信支付,统一下单(与微信支付订单一样) weixin_unified_order unifiedOrder = new weixin_unified_order(); //int total_fee = int.Parse(((orderform.money + orderform.freight) * 100).To<double>().ToString("F0")); int total_fee = 0; unifiedOrder.nonce_str = Sys.getRandomCode(26); unifiedOrder.body = seedName + "(" + appcode + "-Applet)"; unifiedOrder.out_trade_no = payNumber;//商户单号使用支付单号 unifiedOrder.total_fee = total_fee; unifiedOrder.spbill_create_ip = Util.GetUserIp(); unifiedOrder.notify_url = notifyUrl; //回调 unifiedOrder.trade_type = "JSAPI"; unifiedOrder.openid = openid; //获得统一下单返回的支付单信息 weixin_unified_order_return unifiedOrderReturn = weixinPay.UnifiedOrder(unifiedOrder); LogHelper.Info("统一下单返回的支付单信息:" + Newtonsoft.Json.JsonConvert.SerializeObject(unifiedOrderReturn)); if ("SUCCESS".Equals(unifiedOrderReturn.return_code)) { //准备获取支付信息的签名参数 Hashtable parameter = new Hashtable(); parameter.Add("appId", unifiedOrderReturn.appid); parameter.Add("timeStamp", Util.getLongTime().ToString()); parameter.Add("nonceStr", unifiedOrderReturn.nonce_str); parameter.Add("package", "prepay_id=" + unifiedOrderReturn.prepay_id); parameter.Add("signType", "MD5"); string paysign = weixinPay.Sign(parameter); weixin_jsapi_pay weixinPayInfo = new weixin_jsapi_pay() { timestamp = Util.getLongTime(), nonceStr = unifiedOrderReturn.nonce_str, package = "prepay_id=" + unifiedOrderReturn.prepay_id, signType = "MD5", paySign = paysign, is_pay = false }; LogHelper.Info("获得了统一下单数据:" + Newtonsoft.Json.JsonConvert.SerializeObject(weixinPayInfo)); return(weixinPayInfo); } else { ////删除订单 //orderform.isdelete = 1; //orderform.remarks = "小程序统一下单失败,自动删除"; //db.Update("orderform", orderform, "id=" + orderform_id); } return(null); }