android微信分享、微信支付的一些坑

宋冬野發表於2018-07-31

微信登陸、分享做了一段時間了發現的一些坑:
1.首先,Android應用除了獲取AppID外,應用還要通過稽核,否則無法調起微信進行分享,並且需要在網站上填寫包名和簽名兩個欄位,簽名可使用簽名生成工具獲取。如有特殊需要,請自行參見《Signature的生成方法》生成。
見微信開放平臺–>移動應用–>常見問題–>安卓常見問題 和 微信開放平臺–>資源下載–>android資源下載–>簽名生成工具下載
2.第一步的簽名和包名必須寫對.第二個問題,就是如何接受到微信的回撥

a. 在你的包名相應目錄下新建一個wxapi目錄,並在該wxapi目錄下新增一個WXEntryActivity(微信支付為WXPayEntryActivity)類,該類繼承自Activity()
並在manifest檔案裡面加上exported屬性,設定為true,設定啟動模式為singleTop保證它不會重複建立.
因為微信回撥的時候會調起一個新的activity:WXEntryActivity,所以必須設定透明樣式(不然會給使用者感知到啟動了一個新的activty),且在onResp方法裡finish掉WXEntryActivity(WXPayEntryActivity)
例如:

<!--非要設定成透明的才不會對使用者造成困擾-->
        <activity
            android:name=".wxapi.WXEntryActivity或WXPayEntryActivity"
            android:theme="@android:style/Theme.Translucent"
            android:label="@string/app_name"
            android:exported="true"
            android:launchMode="singleTop">

            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="sdksample"/>
            </intent-filter>
        </activity>

b. 實現IWXAPIEventHandler介面,微信傳送的請求將回撥到onReq方法,傳送到微信請求的響應結果將回撥到onResp方法

c. 在WXEntryActivity(WXPayEntryActivity)中將接收到的intent及實現了IWXAPIEventHandler介面的物件傳遞給IWXAPI介面的handleIntent方法,會相應onResp方法

相關文章