在开发微信支付过程遇到的坑
来源:互联网 发布:战地之王透视源码 编辑:程序博客网 时间:2024/05/17 07:43
做了一个关于微信支付的项目,说到支付,直接就去看了微信官方提供的文档。
看过之后,一头雾水,为什么呢,因为没有看懂他的步骤,不像网页授权的步骤那么详细。在不断百度中,终于知道了,开发步骤,好开始写代码
1.首先需要进入微信公众号,进行设置
a.设置回调域名
b.需要设置支付授权目录。
2.设置完成后,下载了官方提供的demo代码,然后进行修改。
下面说下步骤:
<a> 首先获取用户的code.根据提供的接口
<b>然后根据code获取到openid
<c>根据openid等参数,然后根据统一下单的接口,获取到 prepay_id.
<d>然后根据prepay_id 进行构造参数:
myH5Data.SetValue("appId", WxPayConfig.APPID);
myH5Data.SetValue("timeStamp", WxPayApi.GenerateTimeStamp());
myH5Data.SetValue("nonceStr", WxPayApi.GenerateNonceStr());
myH5Data.SetValue("package", "prepay_id=" + myData.GetValue("prepay_id"));
myH5Data.SetValue("signType", "MD5");
myH5Data.SetValue("paySign", myH5Data.MakeSign());
注意, myH5Data.SetValue("paySign", myH5Data.MakeSign()); ,这行代码,必须在最后面,不然设置签名是不对的。
构造完成参数后,需要使用JS在前端页面中写:
<script type="text/javascript">
function jsApiCall()
{
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
<%=wxJson%>,//josn串,wxjson就是上面的参数,使用的wx提供的一个类 wxData,直接转换成JSon
function (res)
{if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("成功");
} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,
else {
}
});
}
function callpay()
{
if (typeof(WeixinJSBridge) == "undefined")
{
if (document.addEventListener)
{
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}
else if (document.attachEvent)
{
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}
else
{
jsApiCall();
}
}
</script>
好这样,算是完成了,然后运行。
------坑-------坑------坑-------来了!!!!
根据官方提供的代码,发信前面一切正常,但是前端就是调用不出来支付的界面。
然后上了论坛,找,发现很多人都是这样的问题,在论坛中发现了解决的办法:
<asp:Button ID="submit" runat="server" Text="立即支付" OnClientClick="javascript:callpay()" style="width:210px; height:50px; background-color:#00CD00; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:20px;" />
这行代码是管饭提供的:但是需要在 OnClientClick="javascript:callpay(),后面加上:return false;
好,以为这样就可以解决问题了,但是,依旧不行。
然后看论坛,继续查找,发现问题了
论坛说:设置支付授权目录必须跟服务器的地址是一模一样,是区分大小写的URL,所以,继续修改。
但是,依旧是有问题的。然后论坛没有了啊,都说可以,但是我的就是不可以。
最后,最后,终于知道了问题的所在:
原来在回调函数的url也必须跟支付授权的目录是一致的,这才解决了问题。希望大家以后能够小心这些 BigBig坑啊!
- 在开发微信支付过程遇到的坑
- 安卓接入微信支付解析,细数开发过程中遇到的坑
- 微信jsapi支付开发遇到的坑
- 微信支付web开发遇到的一些坑
- 微信支付的开发过程
- 微信支付之扫码支付开发:我遇到的坑及解决办法(附:Ecshop 微信支付插件)
- iOS 开发 新版微信支付的集成和支付和遇到的坑--2017.1.4
- 微信支付过程中遇到的问题
- Android微信支付遇到的坑
- 微信支付遇到过的坑
- Android微信支付遇到的坑
- 微信支付遇到的坑们
- 微信支付遇到的坑
- 微信支付遇到的坑
- 微信支付遇到的坑
- 微信支付遇到的坑
- 微信支付签名遇到的坑
- 微信支付遇到的坑(移动支付)
- POJ 2734 Queens, Knights and Pawns 可能会
- 如何提高代码质量?
- ArcEngine开发中内存不能释放浅析
- CAP原理和BASE思想
- 提高代码质量的12个技巧
- 在开发微信支付过程遇到的坑
- 玲珑杯#11 D 1099
- 使用JAVA生成二维码
- 玲珑杯#11 D 1099
- 对象和类,公有类和私有类,构造函数和析构函数,const成员函数,this指针,对象数组,类作用域,抽象数据
- JAVA学习之打印空心菱形
- 博客搭建教程(持续更新)
- 17款最佳的代码审查工具
- poj1250 Tanning Salon