/// <summary>
/// 重新发起支付
/// </summary>
/// <param name="tmpModel"></param>
/// <returns></returns>
[HttpPost]
public ActionResult RePayJsApi()
{
???? try
???? {
???????? string orderId = ClassesLib.GetString( "OrderId" );
???????? string newOrderId = ClassesLib.GetIdByTime();
???????? var model = db.MEMBER_ORDER.Find(orderId);
???????? model.ORDERID = newOrderId;
???????? db.SaveChanges();
???????? //登录判断
???????? if (ClassesLib.WxSessionIsNull())
???????? {
???????????? return Content( "<script>alert('登录超时,请重新登录!');window.location.href='/WeiXin/Login?returnUrl=/WeiXin/ViewProduct?objId=" + model.OBJECTID + "&salesmanId=" + model.SALEID + "'</script>" );
???????? }
???????? //调用支付
???????? JsApiPay jsApiPay = new JsApiPay();
???????? jsApiPay.bodyStr = model.OBJECTNAME + "-" + ClassesLib.getWxLoginName();
???????? jsApiPay.attachStr = model.OBJECTNAME + "-" + ClassesLib.getWxLoginName();
???????? jsApiPay.orderId = newOrderId;
???????? jsApiPay.openid = model.OPENID;
???????? jsApiPay.total_fee = Convert.ToInt32(model.MONEY * 100); //测试 订单金额(1表示分,正式金额要*100)
???????? //JSAPI支付预处理
???????? //调用统一下单,获得下单结果
???????? WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult();
???????? //从统一下单成功返回的数据中获取微信浏览器调起jsapi支付所需的参数
???????? var wxJsApiParam = jsApiPay.GetJsApiParameters(); //获取到的是json格式字符串
???????? return Content(wxJsApiParam);
???? }
???? catch (Exception e)
???? {
???????? return Content( "Error" );
???? }
}
[HttpPost]
public virtual ActionResult JsApiNotifyUrl()
{
???? ClassesLib.InsertLog( "支付测试1" , "支付" );
???? WxPayData notifyData = GetNotifyData();
???? //检查支付结果中transaction_id是否存在
???? if (!notifyData.IsSet( "transaction_id" ))
???? {
???????? //若transaction_id不存在,则立即返回结果给微信支付后台
???????? WxPayData res = new WxPayData();
???????? res.SetValue( "return_code" , "FAIL" );
???????? res.SetValue( "return_msg" , "支付结果中微信订单号不存在" );
???????? Log.Error( this .GetType().ToString(), "The Pay result is error : " + res.ToXml());
???????? return Content( "支付结果中微信订单号不存在" );
???? }
???? ClassesLib.InsertLog( "支付测试2" , "支付" );
???? string transaction_id = notifyData.GetValue( "transaction_id" ).ToString();
???? string trade_no = notifyData.GetValue( "out_trade_no" ).ToString();
???? //查询订单,判断订单真实性
???? if (!QueryOrder(transaction_id))
???? {
???????? //若订单查询失败,则立即返回结果给微信支付后台
???????? WxPayData res = new WxPayData();
???????? res.SetValue( "return_code" , "FAIL" );
???????? res.SetValue( "return_msg" , "订单查询失败" );
???????? Log.Error( this .GetType().ToString(), "Order query failure : " + res.ToXml());
???????? return Content( "订单查询失败" );
???? }
???? //查询订单成功
???? else
???? {
???????? ClassesLib.InsertLog( "支付测试3" , "支付" );
???????? WxPayData res = new WxPayData();
???????? res.SetValue( "return_code" , "SUCCESS" );
???????? res.SetValue( "return_msg" , "OK" );
???????? Log.Info( this .GetType().ToString(), "order query success : " + res.ToXml());
???????? //更新支付状态
???????? var model = db.MEMBER_ORDER.Where(c => c.ORDERID == trade_no).FirstOrDefault();
???????? if (model != null && model.PAYSTATE == "未支付" )
???????? {
???????????? model.PAYSTATE = "已支付" ;
???????????? model.PAYDATE = DateTime.Now;
???????????? //发送支付成功提示,通过微信消息通知收银员已经收到付款
???????????? SendTemplateMessage.SendMessage( "oPCLNv5B1T8kYM5AYgXWHOiD24_s" , "您好,用户" + model.MEMBERNAME + "已购买服务" , model.OBJECTNAME, (Convert.ToDouble(model.MONEY) * 0.01).ToString() + "元" , DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss" ));
???????????? db.SaveChanges();
???????? }
???????? return Content( "支付成功" + res.ToXml());
???? }
}
|