<h3>1.前言</h3>
<p>公司是通过支付宝和微信支付那块内容获取收入,app端已经接入成功,现在要做WAP端。需要页面和后台接口一起来实现。</p>
<h3><a name="t1" target="_blank"></a>2.接口接入</h3>
<p>因为微信支付版本更新了,网上下的demo是V2.5版的,用不了了。所以去网上找资料,看到最新版的V3。</p>
<p>这里我找到了一个统一下单接口,<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1" rel="noopener noreferrer" target="_blank">文档入口</a>.</p>
<p>他的接口地址为:<a href="https://api.mch.weixin.qq.com/pay/unifiedorder" rel="noopener noreferrer" target="_blank">https://api.mch.weixin.qq.com/pay/unifiedorder</a></p>
<p>因此,开始接入我所需要的wap端参数。</p>
<p>这里需要的参数关键有Appid,mch_id,key。</p>
<p>appid和mch_id是在公众平台那边获取。key值是在商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 这边自己设置的。</p>
<p><strong>坑一:</strong>若key值设置不对,会出现错误“支付权限查询失败” 。这时候请检查 appid,mch_id所在的公众号 对应 商户号的key值是否正确。</p>
<p><strong>坑二:</strong>我在开发中还遇到“您没有WAP支付权限” 这么个错误。百了很久都没人遇到这个坑。于是,发送邮件给微信支付(<a href="mailto:weixinpay&" rel="noopener noreferrer" target="_blank">weixinpay@tencent.com</a>, <a href="mailto:wepayTS&" rel="noopener noreferrer" target="_blank">wepayTS@tencent.com</a>)这两个邮件我都发了,结果还是漫无回应啊。于是,打通了商户平台的客服(0755-86018333),客服是MM,估计不懂技术问题,叫我去提问平台提交问题(<a href="http://kf.qq.com//bills/150821samab01c976f2a.html" rel="noopener noreferrer" target="_blank">http://kf.qq.com//bills/150821samab01c976f2a.html</a>),说是技术人员看到会回复的,我问是不是 马上回复,MM不说,就说会回复的,唉,毕竟人家客服不懂,就没继续问下去了。打开客服给的网址,填写的时候,发现没有WAP端,也没有统一下单这说法,那我只好填写了 网页(JSAPI)支付 ,下面在详细说明,提交后,出现了个提示,说是七天内给个回应。我去,那还不是白忙活,要7天 业务紧急啊。。</p>
<h3><a name="t2" target="_blank"></a>3.代码编写</h3>
<p>(1).获取统一下单参数</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools">
<strong>[java]</strong>
<a class="ViewSource" href="http://blog.csdn.net/Libra412/article/details/49021663#" rel="noopener noreferrer" target="_blank" title="view plain"> view plain</a>
<a class="CopyToClipboard" href="http://blog.csdn.net/Libra412/article/details/49021663#" rel="noopener noreferrer" target="_blank" title="copy">copy</a>
</div>
</div>
<ol class="dp-j" start="1"><li class="alt"><span class="keyword">public</span> String CreateWapUrl(String outTradeNo, String ip) <span class="keyword">throws</span> SDKRuntimeException { </li><li> HashMap<String, Object> param = <span class="keyword">new</span> HashMap<String, Object>(); </li><li class="alt"> param.put(<span class="string">"appid"</span>, WxPayConfig.APPID); </li><li> param.put(<span class="string">"mch_id"</span>, WxPayConfig.MCHID); </li><li class="alt"> param.put(<span class="string">"nonce_str"</span>, CommonUtil.CreateNoncestr()); </li><li> param.put(<span class="string">"body"</span>, <span class="string">"产品测试"</span>); </li><li class="alt"> param.put(<span class="string">"out_trade_no"</span>, outTradeNo); </li><li> param.put(<span class="string">"total_fee"</span>, <span class="number">1</span>); </li><li class="alt"> param.put(<span class="string">"spbill_create_ip"</span>, ip); </li><li> param.put(<span class="string">"notify_url"</span>, WxPayConfig.NOTIFYURL); </li><li class="alt"> param.put(<span class="string">"trade_type"</span>, <span class="string">"WAP"</span>); </li><li> param.put(<span class="string">"sign"</span>, getSign(param)); </li><li class="alt"> <span class="keyword">return</span> CommonUtil.MapToXml(param); </li><li>} </li></ol>
</div>
<p>(2).获取签名值</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools">
<strong>[java]</strong>
<a class="ViewSource" href="http://blog.csdn.net/Libra412/article/details/49021663#" rel="noopener noreferrer" target="_blank" title="view plain"> view plain</a>
<a class="CopyToClipboard" href="http://blog.csdn.net/Libra412/article/details/49021663#" rel="noopener noreferrer" target="_blank" title="copy">copy</a>
</div>
</div>
<ol class="dp-j" start="1"><li class="alt"><span class="keyword">public</span> String getSign(HashMap<String, Object> param) <span class="keyword">throws</span> SDKRuntimeException { </li><li> String sign=<span class="string">""< |
|