微信开发官方Demo(C#版本) 坑死人

本人于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出来能先测试下不?以后我个人是不会再使用微信支付了,程序员都如此,真不敢相信微信支付的安全.

 

微信开发官方Demo(C#版本) 坑死人

上一篇:通过微信企业号发送zabbix报警


下一篇:微信开发之(五)获取media_id的值