学软件开发是不是要参加计算机专业排名学判

微信支付--统一支付接口被坑经历 - 行业应用 - ITeye资讯
相关知识库:
今天来写点什么,就写微信支付吧。哥可是被微信支付接口给折腾惨了。
大概从5月22好开始,进行微信开发,到现在也有个吧月了,老总要求3个月拿出微信会员系统,感觉有点悬,这两天又被微信支付给卡住了。
为了童鞋们能少走弯路,特此公告天下,哪位童鞋微信支付遇到了问题,尽管留言。下面谈谈自己的被坑爹的过程。
1.要使用微信支付,前提是开通微信支付功能(废话!),开通后,就可以拿到商户id和商户api密钥,有了这两个必须的东西,就可以调用微信统一支付接口,拿到微信预支付prepayid了.有了prepayid,就可以在网页中调用jsapi了。
2.重点是怎么拿到prepayid呢?很简单,调用post请求道https://api.mch./pay/unifiedorder地址就可以了,很简单吧。咋一看确实简单,但这里面隐藏了好几个坑。网上一搜,坑一大把,我就把我遇到的两个坑show一下好了
3.要拿到peipayid,需要传递一组xml数据,对应java攻城狮来说,一般都会写个model,填充数据,然后将model转换为xml字符串,然后跟随post请求一起发送出去。
4.在一组xml数据中,有一个签名,初次遇到的人肯定都会蒙。这个签名要怎么签呢,要把你所有要传递给服务器的数据进行处理。记住:是所有要传递给服务器(腾讯)的数据,除了sign这个数据外的所有数据。sign也要被传送到服务器端去。
一般是这样的:
private S// 公众账号ID
private String mch_// 商户号
private String device_// 设备号
private String nonce_// 随机字符串
private S// 签名
private S// 商品描述
private S// 商品详情
private S// 附加数据
将这些字段先进行排序,字典排序,直接调用Arrays.sort(String[]);这样就排序完了,然后再拼接成一个字符串,appid=123&mch_id=123......以此类推,最后在加上商品api密钥key=123.完了之后,进行md5转换,在这,我被坑了一把。
原因很简单,我转换后的md5有时候是29位,而不是32位,这是因为我在讲md5二进制字节流转换为字符串的时候,没有处理字节中小于16的值。也就是应该在小于16的值前面加0,不加的话,md5的结果位数就不对
5,我遇到的下一个坑,也很简单,但折腾了我很久。我将创建好的model转换为xml,使用的是以下代码:XStream xStream = new XStream();
xStream.alias("xml", object.getClass());
转换结果如下:
&appid&xxxxxxxxxxxxx&/appid&
&mch__id&xxxxxxxxxxxx&/mch__id&
&nonce__str&1add1a30ac87aa2db72f57a2375d8fec&/nonce__str&
&sign&C939DCA5210FEDF5CEA01&/sign&
&body&test&/body&
&out__trade__no&1ad41a30ac87aa2db72f57a2375d8fec&/out__trade__no&
&total__fee&1&/total__fee&
&spbill__create__ip&xxx.xx.xx.xx&/spbill__create__ip&
&notify__url&xxxxxxxxxxxxxxxx&/notify__url&
&trade__type&JSAPI&/trade__type&
&openid&xxxxxxxxxxx&/openid&
乍一看,这是没有问题的,其实应该是这样的:
&xml&&appid&&![CDATA[xxxxxxxxxxx]]&&/appid&&mch_id&&![CDATA[xxxxxxxxxx]]&&/mch_id&&nonce_str&&![CDATA[1add1a30ac87aa2db72f57a2375d8fec]]&&/nonce_str&&/xml&
也就是说:只要是字符串,就得用&![CDATA[
]]&包裹起来,整型数据不用包裹,没有其他型号的数据了,哈哈哈哈。
很晚了,该睡觉了,祝各位攻城狮晚安
学习了,感谢分享
atfire 写道微信公众号支付,已成功通过统一下单接口下单,但是网页端调起支付API返回get_brand_wcpay_request:fail,请问一般是什么问题你是在公众号里面调用的吗。我qq
你是在公众号里面调用吗
写道atfire 写道微信公众号支付,已成功通过统一下单接口下单,但是网页端调起支付API返回get_brand_wcpay_request:fail,请问一般是什么问题你说的这个错误,我没遇到过,现在解决了吗,我使用的是最新的支付版本还没有解决,网上都说起调支付简单,我就是死在这个上面,折腾死我了
atfire 写道微信公众号支付,已成功通过统一下单接口下单,但是网页端调起支付API返回get_brand_wcpay_request:fail,请问一般是什么问题你说的这个错误,我没遇到过,现在解决了吗,我使用的是最新的支付版本
微信公众号支付,已成功通过统一下单接口下单,但是网页端调起支付API返回get_brand_wcpay_request:fail,请问一般是什么问题}

我要回帖

更多关于 软件开发是不是很累 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信