首页 > 作文

C# 微信支付回调验签处理的实现

更新时间:2023-04-04 01:27:14 阅读: 评论:0

目录
概述 c#方法

概述

在微信支付中,当用户支付成功后,微中秋快乐信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。接收微信支付异步通知回调地址也是有要求:通知url必须为直接可访问的url,不能携带参数。

示例:notify_url:“/d/file/titlepic/404.html />

微信支付完成后会有一个支付回调页面,处理支付完成后的事件,v3支付回调的数据形式为xml格式。

1、定义一个model类,处理一般构造函数,用于解析xml对象;

   #region  weixin app                    // log.info(this.gettype().tostring(), "native pay mode 2 url is producing...");                    wxpaydata data = new wxpaydata();                    //data.tvalue("attach", model.dowhere);//附加数据                    data.tvalue("body", model.title);//商品描述                    data.tvalue("out_trade_no", model.localtransationno);// wxpayapi.generateouttradeno());//随机字符串                    data.tvalue("total_fee", convert.toint32(model.amount * 100));//总金额                    data.tvalue("time_start", datetime.now.tostring("yyyymmddhhmmss"));//交易起始时间                    data.tvalue("time_expire", datetime.now.addminutes(10).tostring("yyyymmddhhmmss"));//交易结束时间                                                                              //data.tvalue("goods_tag", "goods_tag");//商品标记                    data.tvalue("trade_type", "app");//交易类型                                                       //data.tvalue("product_id", model.productid);//商品id   课程类别                 wxpaydata r = wxpayapi.unifiedorder(data);//调用统一下单接口                    string prepay_id = r.getvalue("prepay_id").tostring();                    wxpaydata da2 = new wxpaydata();                    da2.tvalue("appid", wxpayconfig.appid);//公众账号id                    da2.tvalue("noncestr", wxpayapi.generatenoncestr());//商户号                    da2.tvalue("package", "sign=wxpay");//商品描述                    da2.tvalue("partnerid", wxpayconfig.mchid);// wxpayapi.generateouttradeno());//随机字符串                    da2.tvalue("prepayid", prepay_id);//总金额                    da2.tvalue("timestamp", wxpayapi.generatetimestamp());//交易起始时间                    #endregion

2、检查支付结果中transaction_id是否存在

  ///d/file/titlepic/jsapi.php            wxpaydata notifydata = (new com.weixin.notify(this.httpcontext)).getnotifydata();            //检查支付结果中transaction_id是否存在            if (!notifydata.ist("transaction_id"))            {                //若transaction_id不存在,则立即返回结果给微信支付后台                wxpaydata res = new wxpaydata();                res.tvalue("return_code", "fail");                res.tvalue("return_msg", "支付结果中微信订单号不存在");                log.error(this.gettype().tostring(), "the pay result is error : " + res.toxml());                httpcontext.respon.write(res.toxml());                httpcontext.respon.end();            }            string transaction_id = notifydata.getvalue("transaction_id").tostring();

3、查询订单,判断订单真实性

            //查询订单,判断订单真实性            if (!queryorder(transaction_id))            {                //若订单查询失败,则立即返回结果给微信支付后台                wxpaydata res = new wxpaydata();                res.tvalue("return_code", "fail");                res.tvalue("return_msg", "订单查询失败");                log.error(this.gettype().tostring(), "order query failure : " + res.toxml());                httpcontext.respon.write(res.toxml());                httpcontext.respon.end();            }            //查询订单成功            el            {            阿米巴经营读后感    wxpaydata res = new wxpaydata();                res.tvalue("return_code", "success");                res.tvalue("return_msg", "ok");                log.info(this.gettype().tostring(), "order query success : " + res.toxml());                string trade_no = transaction_id;                string order_no = notifydata.getvalue("out_trade_no").tostring();     //获取订单号                string total_fee = (convert.toint32(notifydata.getvalue("total_fee").tostring()) / 100.0).tostring();       //获取总金额                                                                                                                            //notifydata.getvalue("attach").tostring();                httpcontext.respon.write(res.toxml());                httpcontext.respon.end();                paymentbll pbll = new paymentbll();                bool b = pb可爱的小熊猫ll.paycallback(order_no, total_fee, transaction_id);            }        }

4、查询订单,业务处理

        //查询订单        private bool queryorder(string tran老于世故saction_id)        {            wxpaydata req = new wxpaydata();            req.tvalue("transaction_id", transaction_id);            wxpaydata res = wxpayapi.orderquery(req);            if (res.getvalue("return_code").tostring() == "success" &&                res.getvalue("result_code").tostring() == "success")            {                return true;            }            el            {                return fal;            }        }        #endregion

到此这篇关于c# 微信支付回调验签处理的实现的文章就介绍到这了,更多相关c# 微信支付回调内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 01:27:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/6dc277aec740a3a0805952a5fde5d4d8.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C# 微信支付回调验签处理的实现.doc

本文 PDF 下载地址:C# 微信支付回调验签处理的实现.pdf

标签:订单   商户   回调   商品
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图