PayUtil.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using LYFZ.Weixin.SDK.Helpers;
  6. namespace LYFZ.Weixin.SDK.Pay
  7. {
  8. public class PayUtil
  9. {
  10. /// <summary>
  11. /// 生成POST的xml数据字符串
  12. /// </summary>
  13. /// <param name="postdataDict">>参与生成的参数列表</param>
  14. /// <param name="sign">签名</param>
  15. /// <returns></returns>
  16. public static string GeneralPostdata(IDictionary<string, string> postdataDict, string sign)
  17. {
  18. var sb2 = new StringBuilder();
  19. sb2.Append("<xml>");
  20. foreach (var sA in postdataDict.OrderBy(x => x.Key))//参数名ASCII码从小到大排序(字典序);
  21. {
  22. sb2.Append("<" + sA.Key + ">")
  23. .Append(Util.Transfer(sA.Value))//参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。
  24. .Append("</" + sA.Key + ">");
  25. }
  26. sb2.Append("<sign>").Append(sign).Append("</sign>");
  27. sb2.Append("</xml>");
  28. return sb2.ToString();
  29. }
  30. /// <summary>
  31. /// 将ErrorCode翻译成文字
  32. /// </summary>
  33. /// <param name="errorcode">err_code</param>
  34. /// <returns></returns>
  35. public static string ExplainErrorcode(string err_code)
  36. {
  37. switch (err_code)
  38. {
  39. case "NOAUTH":
  40. return "商户无此接口权限";
  41. case "NOTENOUGH":
  42. return "余额不足";
  43. case "ORDERPAID":
  44. return "商户订单已支付";
  45. case "ORDERCLOSED":
  46. return "订单已关闭";
  47. case "ORDERREVERSED":
  48. return "订单已撤销";
  49. case "BANKERROR":
  50. return "银行系统异常";
  51. case "USERPAYING":
  52. return "用户支付中,需要输入密码";
  53. case "AUTH_CODE_INVALID":
  54. return "授权码检验错误";
  55. case "BUYER_MISMATCH":
  56. return "支付帐号错误";
  57. case "AUTHCODEEXPIRE":
  58. return "二维码已过期,请用户在微信上刷新后再试";
  59. case "NOTSUPORTCARD":
  60. return "不支持卡类型";
  61. case "SYSTEMERROR":
  62. return "系统错误";
  63. case "APPID_NOT_EXIST":
  64. return "APPID不存在";
  65. case "MCHID_NOT_EXIST":
  66. return "MCHID不存在";
  67. case "APPID_MCHID_NOT_MATCH":
  68. return "appid和mch_id不匹配";
  69. case "LACK_PARAMS":
  70. return "缺少参数";
  71. case "OUT_TRADE_NO_USED":
  72. return "商户订单号重复";
  73. case "SIGNERROR":
  74. return "签名错误";
  75. case "XML_FORMAT_ERROR":
  76. return "XML格式错误";
  77. case "REQUIRE_POST_METHOD":
  78. return "请使用post方法";
  79. case "POST_DATA_EMPTY":
  80. return "post数据为空";
  81. case "NOT_UTF8":
  82. return "编码格式错误";
  83. case "ORDERNOTEXIST":
  84. return "查询系统中不存在此交易订单号";
  85. case "INVALID_TRANSACTIONID":
  86. return "无效transaction_id";
  87. case "PARAM_ERROR":
  88. return "参数错误";
  89. default:
  90. return err_code;
  91. }
  92. }
  93. }
  94. }