微信支付-小小工程狮的成长之路

最近公司项目涉及了微信支付,经过一天多的摸爬滚打,总算搞定了。

写这篇文章的目的主要是能让大家少走些弯路,也让自己好好复习一下,下面有我在了解微信支付过程中看的几个比较好的网站,跟大家一起共享下。网上太多人吐槽微信支付有太多的坑了,我就不吐槽了,希望大家多注意下,哈哈大笑

准备工作

首先进入  https://open.weixin.qq.com/资源中心,仔细阅读接入指南


然后好好阅读下 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=1_1#里的内容,可以让你更好的理解微信支付,刚开始不要急,好好了解清楚过程。


接下来根据微信官方文档导入相应的包和demo,这些你们都会的啦 大笑

注意坑一:

企鹅不成文规定---在你主包下面,必须要有 主包.wxapi这个包名(就是我主包是aaa,那么必须有aaa.wxapi这个包),同时在这个包下面必须有WXPayEntryActivity这个类名(支付后回调的activity)


配置Androidmanifest.xml时注意配置如下的内容:

  <pre name="code" class="html"><activity  
           android:name=".PayActivity"  
           android:label="@string/app_name"  
           android:exported="true"  
           android:launchMode="singleTop">  
           <intent-filter>  
               <action android:name="android.intent.action.MAIN" />  
               <category android:name="android.intent.category.LAUNCHER" />  
           </intent-filter>  
           <!--这个intent-filter不要忘了-->  
           <intent-filter>  
               <action android:name="android.intent.action.VIEW"/>  
               <category android:name="android.intent.category.DEFAULT"/>  
               <data android:scheme="wxd930ea5d5a258f4f"/>  
           </intent-filter>  
       </activity> 

 
 
(上面的内容我项目里没用到,我没配置。。。)
        <receiver
            android:name=".AppRegister">
            <intent-filter>
                <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
            </intent-filter>
        </receiver>

还有几个相应的Activity记得配置

微信支付

注意坑二:就是你使用官方demo的时候,只有第一次支付成功,后面几次支付都返回-1 ,请参考  http://www.360doc.com/content/15/0214/10/7044580_448519997.shtml 

接下来参考这两位博主的文章,应该可以基本实现微信支付功能了,第一位博主文章最下方还有demo,比官方的好多了 微笑



(这样引用应该不算侵权吧,如果是,告知下我哈,小弟第一次写博客 委屈)

微信支付可能遇到的问题

(用公司项目的签名)body为中文时报签名错误:

只需要把xml请求参数转换为字节数组后,用“ISO8859-1”编码格式进行编码为字符串就OK啦
<pre name="code" class="java"><pre name="code" class="java">		try {
			return new String(sb.toString().getBytes(), "ISO8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return "";

 
 
 
 
主要是这句
return new String(sb.toString().getBytes(), "ISO8859-1");  

支付过程都成功了,就是不显示微信支付页面,显示回调页:

这个要好好检查下,应用签名要跟后台一样,签名大小写也有关系!

对了,微信支付时,总金额单位是分,如果你输入0.01是不行的!!!
还有就是上面网址里一位博主提到的-支付成功通知:在WXPayEntryActivity的OnResp中处理,不能以微信(支付宝也是)返回的通知界面为准(我遇到的情况,网络不稳定的时候,微信返回界面提示支付失败,但是收到微信通知其实已经支付成功了),必须要去自己的服务器查询支付状态,这里微信建议用轮循机制去查询(记得记得记得!重要事情说三遍,哈哈哈)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值