首页 > 代码库 > C#微信开发之旅(十):APP预支付及支付参数生成(V2)
C#微信开发之旅(十):APP预支付及支付参数生成(V2)
App支付流程:
本篇随笔只实现红框内的两个功能:生成预支付Id,生成app支付参数
1 /// <summary> 2 /// App 预支付 3 /// </summary> 4 /// <returns></returns> 5 public ActionResult AppPrePay() 6 { 7 string orderNo = ""; //订单编号,文档中的out_trade_no 8 string description = ""; //订单详情 9 string totalFee = "";//订单金额(单位:分)10 string notifyUrl = ""; //支付通知Url11 string createIp = "";//用户IP12 13 string traceId = string.Empty; //14 15 WxPayModel model = WxPayModel.Create(description, orderNo, totalFee, notifyUrl, createIp);16 //预支付17 var result = WeiXinHelper.PreWXPay(model.CreateAppPrePayPackage(traceId));18 19 if (!string.IsNullOrEmpty(result.PrePayId))20 {21 Response.Write("预支付ID:" + result.PrePayId);22 }23 else24 {25 Response.Write("预支付失败!");26 }27 28 //生成app支付json29 string appPayJson = model.CreateAppPayPackage(result.PrePayId);30 31 Response.Write("app支付Json:" + appPayJson);32 33 return View();34 }
下面是生成预支付json 和 app支付json的方法(均通过实际测试,可放心使用):
1 /// <summary> 2 /// 生成app预支付请求json(已测试通过) 3 /// </summary> 4 /// <param name="traceid">交易号:自定义,可用于订单的查询和跟踪,建议根据支付用户信息生成此Id</param> 5 /// <returns></returns> 6 /// <remarks> 7 ///* { "appid":"wwwwb4f85f3a797777", "traceid":"crestxu", 8 ///* "noncestr":"111112222233333", "package": 9 ///* "bank_type=WX&body=XXX&fee_type=1&input_charset=GBK¬ify_url=http%3a%2f%2f10 ///* www11 ///* .qq.com&out_trade_no=16642817866003386000&partner=1900000109&spbill_create_ip12 ///* =127.0.0.1&total_fee=1&sign=BEEF37AD19575D92E191C1E4B1474CA9",13 ///* "timestamp":1381405298,14 ///* "app_signature":"53cca9d47b883bd4a5c85a9300df3da0cb48565c",15 ///* "sign_method":"sha1" }16 /// </remarks>17 public string CreateAppPrePayPackage(string traceid)18 {19 Dictionary<string, string> nativeObj = new Dictionary<string, string>();20 if (CheckCftParameters() == false)21 {22 throw new SDKRuntimeException("生成package参数缺失!");23 }24 nativeObj.Add("appid", AppId);25 nativeObj.Add("package", GetCftPackage());26 nativeObj.Add("timestamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());27 nativeObj.Add("traceid", traceid);28 nativeObj.Add("noncestr", CommonUtil.CreateNoncestr());29 nativeObj.Add("app_signature", GetBizSign(nativeObj));30 nativeObj.Add("sign_method", SignType);31 32 var entries = nativeObj.Select(d => string.Format("\"{0}\": \"{1}\"", d.Key, d.Value));33 34 return "{" + string.Join(",", entries.ToArray()) + "}";35 }36 37 /// <summary>38 /// 生成app支付请求json(已测试通过)39 /// </summary>40 /// <param name="prepayid">预支付id</param>41 /// <returns></returns>42 /// <remarks>43 /// { 44 /// "appid":"wwwwb4f85f3a797777",45 /// "noncestr":"111112222233333", 46 /// "package":"Sign=WXpay",47 /// "partnerid":"1900000109",48 /// "prepayid":"1101000000140429eb40476f4c9",49 /// "sign":"53cca9d47b883bd4a5c85a9300df3da0cb48565c",50 /// "timestamp":1381405298,51 /// }52 /// </remarks>53 public string CreateAppPayPackage(string prepayid)54 {55 Dictionary<string, string> nativeObj = new Dictionary<string, string>();56 if (CheckCftParameters() == false)57 {58 throw new SDKRuntimeException("生成package参数缺失!");59 }60 nativeObj.Add("appid", AppId);61 nativeObj.Add("noncestr", CommonUtil.CreateNoncestr());62 nativeObj.Add("package", "Sign=WXPay");63 nativeObj.Add("partnerid", GetPartnerId());64 nativeObj.Add("prepayid", prepayid);65 nativeObj.Add("timestamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());66 nativeObj.Add("sign", GetBizSign(nativeObj));67 68 var entries = nativeObj.Select(d => string.Format("\"{0}\": \"{1}\"", d.Key, d.Value));69 70 return "{" + string.Join(",", entries.ToArray()) + "}";71 }
C#微信开发之旅(十):APP预支付及支付参数生成(V2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。