前段时间做了一个微信公众号,里面涉及到了微信支付这一个功能,于是在微信公众号平台里面下了那个.net版本的SDK,可能由于我以前也没有接触过微信支付这一块,所以将SDK部署到我的项目中的后,还是支付不了,而且网上关于.net版本的资料算是比较少的,基本上都是Java和PHP的,我写这篇文章的主要目地就是为了那些刚接触.net微信支付的朋友可以借鉴一下,少走一些弯路,好了,下来开始来说说关于用.net开发微信支付的一些方面。
1、公众号加入微信支付需要公众号开通商户后台功能
2、需要在微信公众号后台设置支付目录,支付目录必须是二级目录以上,如:http://cnblogs.com/pay/,你的支付页面就是在pay文件下
3、在测试阶段需要测试支付是否可行的话,需要在后台微信支付中设置支付白名单,白名单中的用户就可能测试支付了,不了解的可以自行去后台设置中看一下基本就明白了
下面说说关于支付一的些代码
后台:
protected string wx_packageValue = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strWeixin_OpenID = "";//openid的获取这里就不多述说了
string strBillNo="10000001";//订单号
decimal pay = decimal.Parse("0.01");//这里为支付的金额
string _Pay_Package = Interface_WxPay.Get_RequestHtml(strWeixin_OpenID, strBillNo, pay, "支付测试", "hb_store");//该方法中的具体实现结合微信提供的SDK就可以实现
//微信jspai支付
if (_Pay_Package.Length > 0)
{
wx_packageValue = _Pay_Package;
}
}
}
前台:
//需要引用两个js包
<script language="javascript" src="http://res.mail.qq.com/mmr/static/lib/js/jquery.js" type="text/javascript"></script>
<script language="javascript" src="http://res.mail.qq.com/mmr/static/lib/js/lazyloadv3.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
// 当微信内置浏览器完成内部初始化后会触发WeixinJSBridgeReady事件。
document.addEventListener(‘WeixinJSBridgeReady‘, function onBridgeReady() {
//公众号支付,getBrandWCPayRequest为支付按钮的ID
jQuery(‘input#getBrandWCPayRequest‘).click(function (e) {
WeixinJSBridge.invoke(‘getBrandWCPayRequest‘, <%=wx_packageValue %> , function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
//成功,进入支付成功页面
}else
{
//失败,进入支付失败页面
}
//微信官方说明
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
//因此微信团队建议,当收到ok返回时,向商户后台询问是否收到交易成功的通知,若收到通知,前端展示交易成功的界面;若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。
});
});
}, false)
</script>