本人于2016年7月12号从微信官网下载了 WxPayAPI_CS_v3 , C#版本的Demo程序,现在来分享下腾讯是多么的坑爹.
第1个坑: JSAPI Demo. JsApiPayPage.aspx 页面中 如下代码
//调用微信JS api 支付
function jsApiCall()
               {
                   WeixinJSBridge.invoke(
                   ‘getBrandWCPayRequest‘,
                   <%=wxJsApiParam%>,//josn串
                    function (res)
                    {
                        WeixinJSBridge.log(res.err_msg);
                        alert(res.err_code + res.err_desc + res.err_msg);
                     }
                    );
               }
<form runat="server">
        <br/>
	    <div align="center">
		    <br/><br/><br/>
            <asp:Button ID="submit" runat="server" Text="立即支付" OnClientClick="callpay()" style="width:210px; height:50px; border-radius: 15px;background-color:#00CD00; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" />
	    </div>
    </form>
请注意Button采用的是服务端控件,当触发点击的时候会引起页面回传导致 <%=wxJsApiParam%>,//josn串 为空,解决办法很简单,使用html button即可
<button onclick="callpay()" type="button">立即支付</button>
还有要注意的是: 微信web开发者工具V0.7.0 中不支持JSAPI调试, 所以大家还是用手机在微信端调试吧.
第2个坑 扫码支付模式一:
公众平台设置好 :支付授权目录 和 扫码支付回调URL.
大家看代码: lib\Data.cs 中 第112行 FromXml函数中
112: public SortedDictionary<string, object> FromXml(string xml)
 if(m_values["return_code"] != "SUCCESS")
				{
					  return m_values;
				}
SortedDictionary<string, object> m_values ; 这是 m_values的声明
m_values["return_code"] 取出来的数据是Object,如此不严谨的代码导致了异常.解决办法:
首先判断 key是否存在,然后在做类型转换.
最后完美解决了支付问题。 最后吐槽下 腾讯的程序员们,做个Demo出来能先测试下不?以后我个人是不会再使用微信支付了,程序员都如此,真不敢相信微信支付的安全.
原文:http://www.cnblogs.com/endlessgui/p/5671315.html