c#版在pc端发起微信扫码支付的实例

2019-12-30 14:45:56于海丽

等了好久,微信官方终于发布了.net的demo。asp.net,微信扫码支付,c#微信支付,微信支付demoasp.net,微信扫码支付,c#微信支付,微信支付demo

主要代码:


/**
  * 生成直接支付url,支付url有效期为2小时,模式二
  * @param productId 商品ID
  * @return 模式二URL
  */
  public string GetPayUrl(string productId, string body, string attach, int total_fee, string goods_tag)
  {
   Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");

   WxPayData data = new WxPayData();
   data.SetValue("body", body);//商品描述
   data.SetValue("attach", attach);//附加数据
   data.SetValue("out_trade_no", productId);//随机字符串
   data.SetValue("total_fee", total_fee);//总金额
   data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
   data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
   data.SetValue("goods_tag", goods_tag);//商品标记
   data.SetValue("trade_type", "NATIVE");//交易类型
   data.SetValue("product_id", productId);//商品ID

   WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
   string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接

   Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
   return url;
  }

配置信息:


public class Config
 {
  //=======【基本信息设置】=====================================
  /* 微信公众号信息配置
  * APPID:绑定支付的APPID(必须配置)
  * MCHID:商户号(必须配置)
  * KEY:商户支付密钥,参考开户邮件设置(必须配置)
  * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
  */
  public const string APPID = "你的微信公众号APPID";
  public const string MCHID = "你的微信公众号的商户号";
  public const string KEY = "你的微信公众号的商户支付密钥";
  public const string APPSECRET = "你的微信公众号的APPSECRET";

  //=======【证书路径设置】===================================== 
  /* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要)
  */
  public const string SSLCERT_PATH = "cert/apiclient_cert.p12";
  public const string SSLCERT_PASSWORD = "1233410002";



  //=======【支付结果通知url】===================================== 
  /* 支付结果通知回调url,用于商户接收支付结果
  */
  public const string NOTIFY_URL = "http://www.easck.com/
  public const string PROXY_URL = "";

  //=======【上报信息配置】===================================
  /* 测速上报等级,0.关闭上报; 1.仅错误时上报; 2.全量上报
  */
  public const int REPORT_LEVENL = 1;

  //=======【日志级别】===================================
  /* 日志等级,0.不输出日志;1.只输出错误信息; 2.输出错误和正常信息; 3.输出错误信息、正常信息和调试信息
  */
  public const int LOG_LEVENL = 0;
 }