private string MakeSecondSign(WeixinPayReq req) { WxPayData data = new WxPayData(); data.SetValue("appid", req.Appid); data.SetValue("partnerid", req.Partnerid); data.SetValue("prepayid", req.Prepayid); data.SetValue("package", req.Package); data.SetValue("noncestr", req.Noncestr); data.SetValue("timestamp", req.Timestamp); return(data.MakeSign()); }
/** * 调用统一下单,获得下单结果 * @return 统一下单结果 * @失败时抛异常WxPayException */ private string GetUnifiedOrderResult(PayInfo info) { string subject; string body; PayHelper.GetSubjectAndBody(info, out subject, out body); //统一下单 WxPayData data = new WxPayData(); data.SetValue("body", subject); data.SetValue("out_trade_no", info.BillId); //金额单位分 data.SetValue("total_fee", (int)info.PayAmount * 100); data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); data.SetValue("trade_type", "APP"); WxPayData result = WxPayApi.UnifiedOrder(data); if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "") { throw new WxPayException("UnifiedOrder response error!"); } //客户端调起支付接口需要参数 WeixinPayReq req = new WeixinPayReq(); req.Appid = result.GetValue("appid").ToString(); req.Partnerid = result.GetValue("mch_id").ToString(); req.Prepayid = result.GetValue("prepay_id").ToString(); req.Noncestr = WxPayAPI.WxPayApi.GenerateNonceStr(); req.Timestamp = WxPayAPI.WxPayApi.GenerateTimeStamp(); req.Sign = MakeSecondSign(req); return(JsonConvert.SerializeObject(req)); }