微信支付-支付结果通用通知

jiaoye6789 2016-09-28 03:31:50
我用的是模式二,当用户支付成功后
(10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
通知url必须为直接可访问的url,不能携带参数。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action”
我需要写一个接口接受下他给我的数据,然后解析做数据库处理,有没有code参考下
...全文
4338 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
稀有猿 2018-09-05
  • 打赏
  • 举报
回复
WXHelper 这个类是干嘛的
正怒月神 版主 2016-10-09
  • 打赏
  • 举报
回复
引用 6 楼 jiaoye6789 的回复:
[quote=引用 5 楼 hanjun0612 的回复:] [quote=引用 4 楼 jiaoye6789 的回复:] 在各种校验,确认订单支付成功,然后更改数据库状态。 前端支付界面,除了定时调用查询数据库状态以外,还要怎么去做
不明白你的意思[/quote] 前端页面怎么显示付费成功[/quote]
if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                    {
                        //交易成功
这段代码不是已经显示成功了吗。你只需要返回给前台一个成功就可以了。。。 你通过ajax就返回Json(),或者直接Content()也可以
jiaoye6789 2016-10-01
  • 打赏
  • 举报
回复
引用 5 楼 hanjun0612 的回复:
[quote=引用 4 楼 jiaoye6789 的回复:] [quote=引用 2 楼 hanjun0612 的回复:] 创建一个 action,用来提供微信的通知url。 大概就是下面这样
/// <summary>
        /// 支付回调
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPayResult()
        {
            string resultFromWx = getPostStr();
            var res = XDocument.Parse(resultFromWx);

            //通信成功
            try
            {
                if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                    {
                        //交易成功
                        string transaction_id = res.Element("xml").Element("transaction_id").Value;//微信订单号
                        string transaction_id_own = res.Element("xml").Element("out_trade_no").Value;//商户订单号

                        //查询订单是否存在
                        XDocument query = WXHelper.Orderquery(transaction_id_own);
                        if (query.Element("xml").Element("trade_state").Value == "SUCCESS")
                        {
                            UpdateOrder(res, transaction_id, transaction_id_own);
                        }
                    }
                }
            }
}
        /// <summary>
        /// 获取 Post 提交的参数
        /// </summary>
        /// <returns></returns>
        public string getPostStr()
        {
            Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
            byte[] b = new byte[intLen];
            Request.InputStream.Read(b, 0, intLen);
            return System.Text.Encoding.UTF8.GetString(b);
        }
在各种校验,确认订单支付成功,然后更改数据库状态。 前端支付界面,除了定时调用查询数据库状态以外,还要怎么去做[/quote] 不明白你的意思[/quote] 前端页面怎么显示付费成功
正怒月神 版主 2016-09-29
  • 打赏
  • 举报
回复
引用 4 楼 jiaoye6789 的回复:
[quote=引用 2 楼 hanjun0612 的回复:] 创建一个 action,用来提供微信的通知url。 大概就是下面这样
/// <summary>
        /// 支付回调
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPayResult()
        {
            string resultFromWx = getPostStr();
            var res = XDocument.Parse(resultFromWx);

            //通信成功
            try
            {
                if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                    {
                        //交易成功
                        string transaction_id = res.Element("xml").Element("transaction_id").Value;//微信订单号
                        string transaction_id_own = res.Element("xml").Element("out_trade_no").Value;//商户订单号

                        //查询订单是否存在
                        XDocument query = WXHelper.Orderquery(transaction_id_own);
                        if (query.Element("xml").Element("trade_state").Value == "SUCCESS")
                        {
                            UpdateOrder(res, transaction_id, transaction_id_own);
                        }
                    }
                }
            }
}
        /// <summary>
        /// 获取 Post 提交的参数
        /// </summary>
        /// <returns></returns>
        public string getPostStr()
        {
            Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
            byte[] b = new byte[intLen];
            Request.InputStream.Read(b, 0, intLen);
            return System.Text.Encoding.UTF8.GetString(b);
        }
在各种校验,确认订单支付成功,然后更改数据库状态。 前端支付界面,除了定时调用查询数据库状态以外,还要怎么去做[/quote] 不明白你的意思
jiaoye6789 2016-09-29
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
创建一个 action,用来提供微信的通知url。 大概就是下面这样
/// <summary>
        /// 支付回调
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPayResult()
        {
            string resultFromWx = getPostStr();
            var res = XDocument.Parse(resultFromWx);

            //通信成功
            try
            {
                if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                    {
                        //交易成功
                        string transaction_id = res.Element("xml").Element("transaction_id").Value;//微信订单号
                        string transaction_id_own = res.Element("xml").Element("out_trade_no").Value;//商户订单号

                        //查询订单是否存在
                        XDocument query = WXHelper.Orderquery(transaction_id_own);
                        if (query.Element("xml").Element("trade_state").Value == "SUCCESS")
                        {
                            UpdateOrder(res, transaction_id, transaction_id_own);
                        }
                    }
                }
            }
}
        /// <summary>
        /// 获取 Post 提交的参数
        /// </summary>
        /// <returns></returns>
        public string getPostStr()
        {
            Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
            byte[] b = new byte[intLen];
            Request.InputStream.Read(b, 0, intLen);
            return System.Text.Encoding.UTF8.GetString(b);
        }
在各种校验,确认订单支付成功,然后更改数据库状态。 前端支付界面,除了定时调用查询数据库状态以外,还要怎么去做
王志威丶 2016-09-28
  • 打赏
  • 举报
回复
微信支付demo里面有各个模式的处理代码,可以看一下。里面大部分的代码是不需要修改的,复制过来就能使用。
正怒月神 版主 2016-09-28
  • 打赏
  • 举报
回复
创建一个 action,用来提供微信的通知url。 大概就是下面这样
/// <summary>
        /// 支付回调
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPayResult()
        {
            string resultFromWx = getPostStr();
            var res = XDocument.Parse(resultFromWx);

            //通信成功
            try
            {
                if (res.Element("xml").Element("return_code").Value == "SUCCESS")
                {
                    if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                    {
                        //交易成功
                        string transaction_id = res.Element("xml").Element("transaction_id").Value;//微信订单号
                        string transaction_id_own = res.Element("xml").Element("out_trade_no").Value;//商户订单号

                        //查询订单是否存在
                        XDocument query = WXHelper.Orderquery(transaction_id_own);
                        if (query.Element("xml").Element("trade_state").Value == "SUCCESS")
                        {
                            UpdateOrder(res, transaction_id, transaction_id_own);
                        }
                    }
                }
            }
}
        /// <summary>
        /// 获取 Post 提交的参数
        /// </summary>
        /// <returns></returns>
        public string getPostStr()
        {
            Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
            byte[] b = new byte[intLen];
            Request.InputStream.Read(b, 0, intLen);
            return System.Text.Encoding.UTF8.GetString(b);
        }
江南小鱼 2016-09-28
  • 打赏
  • 举报
回复
1、在微信公众平台配置支付目录 2、在发起支付请求的数据中,把回调页面写进去 3、微信扣款成功后,会调用你的通知页面,调用时传递的数据是xml格式,你可以根据交易Code(腾讯是否真实扣费成功),去写你的处理逻辑

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧