微信钱包布局源代码交易代码1328586201391604181772095331

热门搜索:
您的位置: -&
软件教程分类查找
非常抱歉!2345软件大全没能为您提供完善服务,万分感谢能得到您的指点!
您的建议:
精品软件课程
人气:4944148
photoshop教程让你从入门到精通,从新手快
人气:1391015
Excel是office的重要组成部分。多特Excel教
人气:3998894
WPS是金山公司的中文办公软件,包含文字,
人气:349607
Word是由Microsoft公司出版的文字处理器应
小游戏推荐
教程周榜教程总榜
12345678910
微信钱包交易记录查看方法
出处:手机世界
核心提示:微信钱包交易消息查看方法。用微信钱包交易得多了,自己肯定就记不清具体的花销了,那么,当需要统计收支的时候该怎么办呢?不用急,让小编来教大家微信钱包交易消息查看方法吧,轻松几步就实现。
  钱包交易消息查看方法。用微信钱包交易得多了,自己肯定就记不清具体的花销了,那么,当需要统计收支的时候该怎么办呢?不用急,让小编来教大家微信钱包交易消息查看方法吧,轻松几步就实现。
  1)打开微信,选择【我】栏,点击【钱包】。(如下图)
  2)点击右上角【...】,在弹出窗口选择【交易消息】即可查看。(如下图)
相关教程推荐
相关软件推荐
资源统计:无插件软件:185925个 无病毒软件:186238个 昨日已处理127个带插件、病毒的软件
本站总软件:186238个 软件总下载次数:22.967亿次
软件教程文章:102766篇 总浏览次数:3.351亿次一. 案例介绍
这里模拟一个实际业务场景,进行介绍微信支付,业务功能包括:登录、注册、充值、查看充值记录。
&  & & &
二. 概要设计
1.数据库设计
  这里数据库包括两张表:用户表和订单表。
  用户表: 主键id、用户名、密码、openid、注册时间
  订单表: 主键id、用户id,商品名称、订单状态(0代表下单了未支付,1代表支付成功)、商品价钱、下单时间
2.微信支付流程
  这里结合该案例,来说明微信支付流程。
  该流程中涉及到4种角色,分别是微信用户、微信客户端、商户系统(自己的系统)、微信支付系统。
  流程1:
  ①用户登录微信客户端系统→②进入主页→③去支付→④生成商户系统订单→⑤调用微信统一下单API,在微信支付系统里生成预支付订单,并返回预支付订单信息→
  ⑥商户系统拿到返回的预支付订单信息,进行签名,便按照一定的格式返给微信客户端(JSAPI页面)→⑦微信客户端JSAPI页面拿到参数,请求支付,输入密码,进行支付→
  ⑧这时会进行2个并行处理→异步通知商户支付结果,商户系统接到通知后,需要修改订单的业务逻辑(该案例修改订单状态0改为1),商户系统需要告知微信系统处理结果
  →给微信客户端发送支付结果,并发微信消息提示 
  ⑨微信客户端跳转到商户H5页面,查询商户后台支付结果
  ⑩ 这时候分两种情况
    A. 商户后台系统,已经接到通知,进行了业务修改,直接返回成功。
    B. 商户后台系统,没有接到通知,这时去查询微信支付系统,如果微信支付系统成功,说明确实付款成功,只是因为网络延迟造成商户后台暂时没有接到通知,如果查询后发现未付款成功,则返回付款失败。
微信支付业务流程图:
3.代码配置
(1).参数配置
$(function () {
// 当微信内置浏览器完成内部初始化后会触发WeixinJSBridgeReady事件。
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
//公众号支付
document.getElementById("pay").onclick = function () {
//<span style="color: #.前端验证
var money = $('#num').val();
if (money == "") {
alert('请将信息输入完整');
<span style="color: #
<span style="color: #
<span style="color: #
mui('#pay').button('loading');
<span style="color: #
//<span style="color: #.进行下单
<span style="color: #
<span style="color: #
type: 'POST',
<span style="color: #
url: '/WeiXinGz/GetAPI',
<span style="color: #
data: { "money": money },
<span style="color: #
cache: false,
<span style="color: #
dataType: 'json',
<span style="color: #
success: function (jsonData) {
<span style="color: #
if (jsonData.status == "<span style="color: #") {
<span style="color: #
//公众号支付
<span style="color: #
WeixinJSBridge.invoke('getBrandWCPayRequest', jsonData.payData, function (res) {
<span style="color: #
// 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
<span style="color: #
//【因此微信团队建议:】当收到ok返回时,向商户后台询问是否收到交易成功的通知,
<span style="color: #
//若收到通知,前端展示交易成功的界面;
<span style="color: #
//若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。
<span style="color: #
if (res.err_msg == "get_brand_wcpay_request:ok") {
<span style="color: #
//JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回
<span style="color: #
<span style="color: #
type: 'POST',
<span style="color: #
url: '/WeiXinGz/QueryOrder',
<span style="color: #
<span style="color: #
orderId: jsonData.orderId
<span style="color: #
<span style="color: #
cache: false,
<span style="color: #
dataType: 'text',
<span style="color: #
success: function (jsonData) {
<span style="color: #
if (jsonData == "ok") {
<span style="color: #
alert("支付成功", "提示", function () {
<span style="color: #
alert("页面跳转等业务处理");
<span style="color: #
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付1!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
error: function (XMLHttpRequest, textStatus, errorThrown) {
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付2!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
<span style="color: #
//由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
<span style="color: #
alert("您放弃了支付");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
//由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付3!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
alert(jsonData.promptInfor);
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
error: function (XMLHttpRequest, textStatus, errorThrown) {
<span style="color: #
alert("微信订单提交失败,请稍后重试4!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
}, false);
<span style="color: #
/// &summary&
/// 统一下单接口
/// &/summary&
/// &param name="money"&钱数&/param&
/// &returns&&/returns&
public ActionResult GetAPI(string money)
<span style="color: #
//一.系统本身自有的业务处理
<span style="color: #
//<span style="color: #.必要信息的初始化
<span style="color: #
string userId = Session["userId"].ToString();
//用户主键
<span style="color: #
UserInfor userInfor = db.Set&UserInfor&().Where(a =& a.id == userId).FirstOrDefault();
<span style="color: #
string orderId = GenerateOrderNum(); //生成订单号
<span style="color: #
string totalFee =//设置默认商品费用为【1分】
<span style="color: #
string nonceStr = TenPayV3Util.GetNoncestr();
//获取 随机字符串
<span style="color: #
string openid = userInfor.openId;
<span style="color: #
//<span style="color: #.自己商户系统下单
<span style="color: #
OrderInfor orderInfor = new OrderInfor();
<span style="color: #
orderInfor.id = orderId;
<span style="color: #
orderInfor.uid = userInfor.
<span style="color: #
orderInfor.goodName = "测试商品";
<span style="color: #
orderInfor.goodPrice = totalF
<span style="color: #
orderInfor.addTime = DateTime.N
<span style="color: #
orderInfor.status = "<span style="color: #";
//已经下单,但未付款
<span style="color: #
db.Set&OrderInfor&().Add(orderInfor);
<span style="color: #
db.SaveChanges();
<span style="color: #
<span style="color: #
<span style="color: #
//二.微信系统下单
<span style="color: #
//<span style="color: #.创建支付应答对象并初始化
<span style="color: #
RequestHandler packageReqHandler = new RequestHandler(null);
<span style="color: #
packageReqHandler.Init();
<span style="color: #
//<span style="color: #.1设置统一下单的参数
<span style="color: #
packageReqHandler.SetParameter("appid", ConfigHelp.AppSettings("AppId"));
//公众账号ID
<span style="color: #
packageReqHandler.SetParameter("mch_id", ConfigHelp.AppSettings("MchId"));
<span style="color: #
packageReqHandler.SetParameter("nonce_str", nonceStr);
//随机字符串
<span style="color: #
packageReqHandler.SetParameter("body", "科技-服务");
//商品描述
<span style="color: #
packageReqHandler.SetParameter("out_trade_no", orderId);
//商户订单号
<span style="color: #
packageReqHandler.SetParameter("total_fee", totalFee);
//商品金额,以分为单位
<span style="color: #
packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);
<span style="color: #
packageReqHandler.SetParameter("notify_url", ConfigHelp.AppSettings("notify_url"));
//微信支付异步通知回调地址
<span style="color: #
packageReqHandler.SetParameter("trade_type", "JSAPI");
//交易类型 代表公众号支付
<span style="color: #
packageReqHandler.SetParameter("openid", openid);
//用户标识
<span style="color: #
string sign = packageReqHandler.CreateMd5Sign("key", ConfigHelp.AppSettings("key")); //预支付签名
<span style="color: #
packageReqHandler.SetParameter("sign", sign);
<span style="color: #
//<span style="color: #.2 下单数据格式转换
<span style="color: #
string data = packageReqHandler.ParseXML();
<span style="color: #
//<span style="color: #.3 进行下单
<span style="color: #
string result = TenPayV3.Unifiedorder(data);
<span style="color: #
//<span style="color: #.对下单返回结果进行分析
<span style="color: #
XDocument res = XDocument.Parse(result);
<span style="color: #
//<span style="color: #.1 对返回结果进行判断
<span style="color: #
<span style="color: #
//<span style="color: #.2 成功的情况下获取必要的参数
<span style="color: #
string prepayId = res.Element("xml").Element("prepay_id").V
//获取预支付订单编号prepayId
<span style="color: #
//<span style="color: #. 获取支付参数并签名
<span style="color: #
string timeStamp = TenPayV3Util.GetTimestamp(); //获取时间戳
<span style="color: #
//设置支付参数
<span style="color: #
RequestHandler paySignReqHandler = new RequestHandler(null);
<span style="color: #
paySignReqHandler.SetParameter("appId", ConfigHelp.AppSettings("AppId"));
<span style="color: #
paySignReqHandler.SetParameter("timeStamp", TenPayV3Util.GetTimestamp());
<span style="color: #
paySignReqHandler.SetParameter("nonceStr", nonceStr);
<span style="color: #
paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
<span style="color: #
paySignReqHandler.SetParameter("signType", "MD5"); //签名【MD5】
<span style="color: #
string paySign = paySignReqHandler.CreateMd5Sign("key", ConfigHelp.AppSettings("key")); //JSAPI支付签名
<span style="color: #
var payData = new
<span style="color: #
<span style="color: #
appId = ConfigHelp.AppSettings("AppId"),
<span style="color: #
timeStamp = timeStamp,
<span style="color: #
nonceStr = nonceStr,
<span style="color: #
package = string.Format("prepay_id={0}", prepayId),
<span style="color: #
signType = "MD5",
<span style="color: #
paySign = paySign,
<span style="color: #
<span style="color: #
return Json(new
<span style="color: #
<span style="color: #
status = "<span style="color: #",
<span style="color: #
promptInfor = "微信下单成功",
<span style="color: #
payData = payData,
<span style="color: #
orderId = orderId
<span style="color: #
<span style="color: #
<span style="color: #
catch (Exception ex)
<span style="color: #
<span style="color: #
string a = ex.M
<span style="color: #
<span style="color: #
return Json(new
<span style="color: #
<span style="color: #
status = "<span style="color: #",
<span style="color: #
promptInfor = a
<span style="color: #
<span style="color: #
<span style="color: #
public ActionResult PayNotifyUrl()
//获取当前http请求
HttpContext httpContext = System.Web.HttpContext.C
ResponseHandler notifyDataHandler = new ResponseHandler(httpContext);
//返回状态码【SUCCESS/FAIL】此字段是通信标识
string return_code = notifyDataHandler.GetParameter("return_code");
//返回信息【如非空,为错误原因】
string return_msg = notifyDataHandler.GetParameter("return_msg");
<span style="color: #
//表示通信成功
<span style="color: #
if (return_code == "SUCCESS")
<span style="color: #
<span style="color: #
//获取业务结果【交易是否成功(SUCCESS/FAIL)】
<span style="color: #
string result_code = notifyDataHandler.GetParameter("result_code");
<span style="color: #
//表示业务结果成功
<span style="color: #
if (result_code == "SUCCESS")
<span style="color: #
<span style="color: #
//设置签名密钥
<span style="color: #
notifyDataHandler.SetKey(ConfigHelp.AppSettings("key"));
<span style="color: #
//验证请求是否从微信发过来(安全)【验证签名】
<span style="color: #
if (notifyDataHandler.IsTenpaySign())
<span style="color: #
<span style="color: #
//获取订单编号
<span style="color: #
string out_trade_no = notifyDataHandler.GetParameter("out_trade_no");
<span style="color: #
//检查是否返回商户订单号
<span style="color: #
if (!string.IsNullOrEmpty(out_trade_no))
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
OrderInfor orderInfor = db.Set&OrderInfor&().Where(a =& a.id == out_trade_no).FirstOrDefault();
<span style="color: #
if (orderInfor != null)
<span style="color: #
<span style="color: #
//这里需要根据订单号更改系统的业务
<span style="color: #
//这里模拟测试记录订单号
<span style="color: #
orderInfor.status = "<span style="color: #"; //表示付款成功,成功回调
<span style="color: #
db.Entry(orderInfor).State = EntityState.M
<span style="color: #
db.SaveChanges();
<span style="color: #
<span style="color: #
return_code = "SUCCESS";
<span style="color: #
return_msg = "OK";
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
return_code = "FAIL";
<span style="color: #
return_msg = "商户系统中不存在该订单";
<span style="color: #
<span style="color: #
<span style="color: #
catch (Exception ex)
<span style="color: #
<span style="color: #
//系统异常
<span style="color: #
return_code = "FAIL";
<span style="color: #
return_msg = ex.M
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//支付结果中商户订单号不存在
<span style="color: #
return_code = "FAIL";
<span style="color: #
return_msg = "支付结果中商户订单号不存在";
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//签名失败
<span style="color: #
return_code = "FAIL";
<span style="color: #
return_msg = "签名失败";
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//交易失败
<span style="color: #
return_code = "FAIL";
<span style="color: #
return_msg = "交易失败";
<span style="color: #
<span style="color: #
<span style="color: #
//商户处理后同步返回给微信参数
<span style="color: #
string xml = string.Format(@"&xml&&return_code&&![CDATA[{0}]]&&/return_code&&return_msg&&![CDATA[{1}]]&&/return_msg&&/xml&", return_code, return_msg);
<span style="color: #
//返回处理结果
<span style="color: #
return Content(xml, "text/xml");
<span style="color: #
//公众号支付
WeixinJSBridge.invoke('getBrandWCPayRequest', jsonData.payData, function (res) {
// 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
//【因此微信团队建议:】当收到ok返回时,向商户后台询问是否收到交易成功的通知,
//若收到通知,前端展示交易成功的界面;
//若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。
if (res.err_msg == "get_brand_wcpay_request:ok") {
//JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回
<span style="color: #
type: 'POST',
<span style="color: #
url: '/WeiXinGz/QueryOrder',
<span style="color: #
<span style="color: #
orderId: jsonData.orderId
<span style="color: #
<span style="color: #
cache: false,
<span style="color: #
dataType: 'text',
<span style="color: #
success: function (jsonData) {
<span style="color: #
if (jsonData == "ok") {
<span style="color: #
alert("支付成功", "提示", function () {
<span style="color: #
alert("页面跳转等业务处理");
<span style="color: #
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付1!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
error: function (XMLHttpRequest, textStatus, errorThrown) {
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付2!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
<span style="color: #
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
<span style="color: #
//由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
<span style="color: #
alert("您放弃了支付");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
//由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
<span style="color: #
alert("支付失败,请稍后重试!如果收到支付通知,切勿重复支付3!");
<span style="color: #
mui('#pay').button('reset');
<span style="color: #
<span style="color: #
(6).微信订单查询接口
/// &summary&
/// 微信订单查询接口
/// &/summary&
/// &param name="orderId"&订单编号id&/param&
/// &returns&&/returns&
//[WeixinInternalRequest("无法访问!")]
public ActionResult QueryOrder(string orderId)
<span style="color: #
<span style="color: #
//一.先查商户后台的订单状态,判断微信端是否异步通知商户后台了!!!
<span style="color: #
OrderInfor orderInfor = db.Set&OrderInfor&().Where(a =& a.id == orderId).FirstOrDefault();
<span style="color: #
//判断订单状态
<span style="color: #
if (orderInfor.status == "<span style="color: #")
<span style="color: #
<span style="color: #
//表示查询成功
<span style="color: #
return Content("ok");
<span style="color: #
<span style="color: #
else if (orderInfor == null || orderInfor.status != "<span style="color: #")
<span style="color: #
<span style="color: #
//二.进行调用下面的微信查询api进行查询
<span style="color: #
//生成随机字符串
<span style="color: #
string nonceStr = TenPayV3Util.GetNoncestr();
<span style="color: #
RequestHandler packageReqHandler = new RequestHandler(null);
<span style="color: #
//设置package订单参数
<span style="color: #
packageReqHandler.SetParameter("appid", ConfigHelp.AppSettings("AppId")); //公众账号ID
<span style="color: #
packageReqHandler.SetParameter("mch_id", ConfigHelp.AppSettings("MchId"));
<span style="color: #
packageReqHandler.SetParameter("out_trade_no", orderId);
//填入商家订单号
<span style="color: #
packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串
<span style="color: #
string sign = packageReqHandler.CreateMd5Sign("key", ConfigHelp.AppSettings("key"));//参数进行签名
<span style="color: #
packageReqHandler.SetParameter("sign", sign); //参数中添加签名字符串
<span style="color: #
string data = packageReqHandler.ParseXML(); //将传的参数转化为XML格式字符串
<span style="color: #
var result = TenPayV3.OrderQuery(data); //调用订单查询接口
<span style="color: #
var res = XDocument.Parse(result);
<span style="color: #
//返回状态码【SUCCESS/FAIL】此字段是通信标识
<span style="color: #
string return_code = res.Element("xml").Element("return_code").V
<span style="color: #
if (return_code == "SUCCESS")
<span style="color: #
<span style="color: #
//获取业务结果【交易是否成功(SUCCESS/FAIL)】
<span style="color: #
string result_code = res.Element("xml").Element("result_code").V
<span style="color: #
if (result_code == "SUCCESS")
<span style="color: #
<span style="color: #
//交易状态
<span style="color: #
/**SUCCESS—支付成功
<span style="color: #
*REFUND—转入退款
<span style="color: #
*NOTPAY—未支付
<span style="color: #
*CLOSED—已关闭
<span style="color: #
*REVOKED—已撤销(刷卡支付)
<span style="color: #
*USERPAYING--用户支付中
<span style="color: #
*PAYERROR--支付失败(其他原因,如银行返回失败)
<span style="color: #
<span style="color: #
string trade_state = res.Element("xml").Element("trade_state").V
<span style="color: #
if (return_code == "SUCCESS")
<span style="color: #
<span style="color: #
return Content("ok");
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//未查询到该订单或者该订单交易状态不相符
<span style="color: #
return Content("error");
<span style="color: #
<span style="color: #
catch (Exception ex)
<span style="color: #
<span style="color: #
//抛异常信息,返回异常消息
<span style="color: #
return Content(ex.Message);
<span style="color: #
<span style="color: #
上述代码中,用到的openid,可以继续阅读下一篇文章 微信公众平台-信息的获取
&亲测好用,如有问题,可联系QQ
阅读(...) 评论()

我要回帖

更多关于 微信钱包交易记录 的文章

 

随机推荐