在微信支付中,当用户支付成功后,微中秋快乐信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。接收微信支付异步通知回调地址也是有要求:通知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 条评论) |