微信支付 扫码支付 模式1 原生支付
1、第一步申请支付账号,这个自己开通就可以
第二步添加支付目录和测试目录,但是这里很复杂基本是要有域名的
2、第三步生成微信支付二维码,方便没有关注的用户扫描支付,其中需要一些算法,大家可以参考腾讯官网查看
public void weixinpay()
{
//继承SortedDictionary的字典集合,好处不用排序
WeixinParams p = new WeixinParams();
p.Add("appid", AppId);
p.Add("mch_id", Mch_id);
//获得随机数
p.Add("nonce_str", EncodingX.GetNewID());
p.Add("product_id", "2");
//获得时间戳
p.Add("time_stamp", GetCurrentTime().ToString());
//获得签名数字
string scanUrl = HttpUtility.UrlEncode(p.ToSignedUrl(AppKey), Encoding.UTF8);
string qrCodeImage = string.Format("/utils/getqrcodefromurl.html?v=14&s=3&qrurl={0}", scanUrl);
Insert("url", qrCodeImage);
//生成二维码图片,百度搜
RedirectToUrl(qrCodeImage);
}
3、第四步生成微信签名的算法,生成微信的时间戳算法,生成微信的XMl文件算法,微信MD5加密算法,大家可以参考我的方法,具体自己改一下
4、第五步设置微信的回调方法,回调方法就是用户扫描二维码以后就会调用的
注意事项:
1、报错:
微信支付获取商户订单信息超时或商户返回httpcode非200
解决方法:检查参数对不对,检查xml文件对不对,检查签名对不对,目前我就放了几个错误,大家自己检查
2、报错:微信支付报错 package info not match special pay url
解决方法:此法提示找不到payurl,其实是支付类型用错了,应该使用trade_type改成NATIVE
以上是微信支付开发中遇到的问题,微信支付很坑人
5、第五步:通知方法,微信支付成功会通知我们,是否支付成功,很简单的,
/// <summary>
/// 通知用户支付成功或者失败
/// </summary>
public void PayUser()
{
Insert("通知", "微信调用通知接口");
RenderText("success");
}
成功返回true,失败返回false