.NET微信支付(H5仅限外部浏览器)
最近做WebApp 需要用到微信H5支付、然后在网上大概搜了不下10篇文章、然后还是觉得需要自己写一下自己的过程。
直接下载这个官方提供的包 https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS.zip
不知道为什么CSDN上面连这种东西也要收积分,费解~~这也是厌恶这个CSDN的原因。
0.0 先预留一下大致的文件目录 有一些用不上的我删除了~~精简一下
1.0 新增加H5Pay.cs 代码如下
public static string GetPayUrl(string get_mweb_url = "H5 微信外置浏览器")
{
string body = "微信支付H5测试Demo:0.01";
WxPayData data = new WxPayData();
data.SetValue("body", body);//主体信息说明
data.SetValue("attach", "支付测试");//附加数据
data.SetValue("out_trade_no", "wx" + DateTime.Now.ToString("yyMMddHHmmss"));//商户订单号
data.SetValue("total_fee", (Math.Round((decimal)0.01 * 100, 0)).ToString());//总金额
data.SetValue("spbill_create_ip", "0.0.0.0");//终端IP
data.SetValue("notify_url", "http://xxx.cn");//通知地址
data.SetValue("trade_type", "MWEB");//交易类型
data.SetValue("scene_info", "{'h5_info':{'type':'Wap','wap_url':'http://xxx.cn','wap_name':'H5支付'}}");//场景信息
WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
string url = result.GetValue("mweb_url").ToString();//获得统一下单接口返回的链接
return url;
}
2.0 修改 WxPayApi.cs 下的UnifiedOrder
//若终端IP未设置,则使用配置文件中的终端IP
if (!inputObj.IsSet("spbill_create_ip"))
{
inputObj.SetValue("spbill_create_ip", "0.0.0.0");//终端IP
}
inputObj.SetValue("appid", "xxxxxxx");//公众账号ID WxPayConfig.GetConfig().GetAppID() 见外部配置
inputObj.SetValue("mch_id", "xxxxxxx");//商户号
inputObj.SetValue("nonce_str", GenerateNonceStr());//随机字符串
inputObj.SetValue("sign_type", WxPayData.SIGN_TYPE_MD5);//签名类型 MD5
//签名
inputObj.SetValue("sign", inputObj.MakeSign());
string xml = inputObj.ToXml();
3.0 简单一点,新增一个aspx文件
protected void Page_Load(object sender, EventArgs e)
{
string url = H5Pay.GetPayUrl("H5 微信外置浏览器");//通过统一下单接口进行H5支付
Response.Redirect(url);//跳转到微信支付中间页
}
4.0 大功告成!!
PS:一定要在外部浏览器使用 外部浏览器 外部。

浙公网安备 33010602011771号