最近一个项目要增长微信支付的功能,想来这个东西出来这么久了,按微信提供的应该能够很快搞定的,结果提供的demo( JS API网页支付)中各类坑,咨询他们的客服,态度却是很是好,就是解决不了问题,最后让我发邮件,一想,这个邮件一来一回至少又得好几个小时,没有办法只能根据开发文档一个一个核对,再加上些猜测,终于完成了。为了别的朋友少踩些坑,特此小文,但愿对一此朋友有所帮助。html
固然,要集成微信支付,首先仍是要先有一个微网站,熟悉的请飘过,不了解的,能够参考下我以前的一篇小文 订餐系统之微信点餐 更多信息能够登陆微信公众平台程序员
目前的状况应该是,只有认证的服务号能够申请微信支付功能。相关认证、申请的操做,登陆微信公众平台一看就知道了,在此就不细说了。要特别注意的就是要填写相关请求目录,请求url时,要特别注意,目前微信公众平台是不能本身修改的,只能发邮件给:weixinpay@tencent.com,让他们修改,邮件格式能够向客服咨询。api
固然,还有一个最重要的准备工做,就是先获取他们的文档和demo. http://wxpay.weixin.qq.com/doc/index.html 要注意的就是,他们的demo中有不少坑哦。不过,他们的文档我没有看到问题,细读这些文档仍是少不了的。微信
若是你的账号如今处于支付测试状态下,须要进行相关配置。请根据下图操做。app
图(1)微信公众平台
图(2)dom
下面我就把我在微信提供的demo基础上,说明下要修改的地方。以前一直提示什么订单数据验证失败,当看下图时就知道OK了。测试
jsapi.aspx.cs 第50行,增长参数: packageReqHandler.setParameter("bank_type", "WX"); //固定为"WX";微信支付
/tenpayLib/TenpayUtil.cs 中的key 实际上是 PartnerKey,一开始我还觉得是appkey。网站
/tenpayLib/RequestHandler.cs 中的 key必定要赋值为 TenpayUtil.key,默认是空的。
/tenpayLib/ResponseHandler.cs 中的 key 和appkey 必定要赋值为 TenpayUtil.key和TenpayUtil.appkey;
若是你的项目是utf-8的,还要修改如下内容:
TenpayUtil.cs.getNoncestr 变成
public static string getNoncestr()
{
Random random = new Random();
return MD5Util.GetMD5(random.Next(1000).ToString(), charset);
}
/tenpayLib/ResponseHandler.cs 中的charset
全部用到charset的地方修改为utf-8。
本来是一个简单的事儿,可因为官方demo的一些问题,用去了我和他们客服的时间,因此但愿对在集成或者准备集成的微信支付的朋友有点帮助,作为程序员,咱们的时间应该是用在更有意义的地方。为了方便你们,我把本身最后的支付相关代码也作了整理,虽然不能直接用,其实也是稍微修改下里面的逻辑就能够直接用,另外,鄙人能力有限,写得很差,有不对的地方,也请你们海涵哈!
成为一名优秀的程序员!