最详细的ASP.NET微信JS-SDK支付代码

2019-05-26 04:05:23王振洲

本文实例为大家分享了微信JS SDK支付的具体代码,供大家参考,具体内容如下

模型层实体类:

 public class JsEntities
 {
 /// <summary>
 /// 公众号id
 /// </summary>
 public string appId { get; set; }
 /// <summary>
 /// 时间戳
 /// </summary>
 public string timeStamp { get; set; }
 /// <summary>
 /// 随机字符串
 /// </summary>
 public string nonceStr { get; set; }
 /// <summary>
 /// 订单详情扩展字符串
 /// </summary>
 public string package { get; set; }
 /// <summary>
 /// 签名类型
 /// </summary>
 public string signType { get; set; }

 /// <summary>
 /// 签名
 /// </summary>
 public string paySign { get; set; }

 }

 public class UnifyEntities
 {
 /// <summary>
 /// 公众账号ID
 /// </summary>
 public string appid { get; set; }
 /// <summary>
 /// 微信支付分配的商户号
 /// </summary>
 public string mch_id { get; set; }
 /// <summary>
 /// 微信支付分配的终端设备号
 /// </summary>
 public string device_info { get; set; }
 /// <summary>
 /// 随机字符串,不长于32位
 /// </summary>
 public string nonce_str { get; set; }
 /// <summary>
 /// 签名
 /// </summary>
 public string sign { get; set; }
 /// <summary>
 /// 商品描述最大长度127
 /// </summary>
 public string body { get; set; }
 /// <summary>
 /// 附加数据,原样返回
 /// </summary>
 public string attach { get; set; }
 /// <summary>
 /// 商户系统内部的订单号,32 个字符内、可包含字母,确保在商户系统唯一,详细说明
 /// </summary>
 public string out_trade_no { get; set; }
 /// <summary>
 /// 订单总金额,单位为分,不能带小数点
 /// </summary>
 public string total_fee { get; set; }
 /// <summary>
 /// 终端IP
 /// </summary>
 public string spbill_create_ip { get; set; }
 /// <summary>
 /// 交易起始时间
 /// </summary>
 public string time_start { get; set; }
 /// <summary>
 /// 交易结束时间
 /// </summary>
 public string time_expire { get; set; }
 /// <summary>
 /// 接收微信支付成功通知
 /// </summary>
 public string notify_url { get; set; }
 /// <summary>
 /// JSAPI、NATIVE、APP
 /// </summary>
 public string trade_type { get; set; }
 /// <summary>
 /// 用户在商户appid下的唯一标识,trade_type为JSAPI 时,此参数必传
 /// </summary>
 public string openid { get; set; }
 /// <summary>
 /// 只在 trade_type 为 NATIVE 时需要填写。此id为二维码中包含的商品ID,商户自行维护。
 /// </summary>
 public string product_id { get; set; }
 }
 public class UnifyReceive
 {
 /// <summary>
 /// SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
 /// </summary>
 public string return_code { get; set; }
 /// <summary>
 /// 返回信息,如非空,为错误原因
 /// </summary>
 public string return_msg { get; set; }
 /// <summary>
 /// 微信分配的公众账号ID
 /// </summary>
 public string appid { get; set; }
 /// <summary>
 /// 微信支付分配的商户号
 /// </summary>
 public string mch_id { get; set; }
 /// <summary>
 /// 随机字符串,不长于32位
 /// </summary>
 public string nonce_str { get; set; }
 /// <summary>
 /// 签名
 /// </summary>
 public string sign { get; set; }
 /// <summary>
 /// 业务结果
 /// </summary>
 public string result_code { get; set; }
 /// <summary>
 /// 预支付ID
 /// </summary>
 public string prepay_id { get; set; }
 /// <summary>
 /// 交易类型
 /// </summary>
 public string trade_type { get; set; }
 /// <summary>
 /// 二维码链接
 /// </summary>
 public string code_url { get; set; }
 public UnifyReceive(string xml)
 {
  XElement doc = XElement.Parse(xml);
  return_code = doc.Element("return_code").Value;
  return_msg = doc.Element("return_msg").Value;
  if (return_code == "SUCCESS")
  {
  appid = doc.Element("appid").Value;
  mch_id = doc.Element("mch_id").Value;
  nonce_str = doc.Element("nonce_str").Value;
  sign = doc.Element("sign").Value;
  result_code = doc.Element("result_code").Value;
  if (result_code == "SUCCESS")
  {
   trade_type = doc.Element("trade_type").Value;
   prepay_id = doc.Element("prepay_id").Value;
   if (trade_type == "NATIVE")
   {
   code_url = doc.Element("code_url").Value;
   }
   trade_type = doc.Element("trade_type").Value;
  }
  }
 }
 }