1. 微信自動(dòng)扣費(fèi)名詞解釋
? ? * appid:app在微信開(kāi)放平臺(tái)注冊(cè)后獲取到訪問(wèn)微信的唯一碼,后續(xù)的微信登錄,分享,支付都需要這個(gè)
? ? * mch-id:商戶號(hào)id,開(kāi)通微信支付后,在微信后臺(tái)填寫公司信息后,微信提供的商戶唯一碼,后續(xù)通過(guò)這個(gè)唯一碼進(jìn)行收費(fèi)等。
? ? * plan-id:模板ID,自動(dòng)扣費(fèi),用戶并不能自定義扣費(fèi)的費(fèi)用,需要按照微信的約定針對(duì)某項(xiàng)服務(wù),服務(wù)期限需要收費(fèi)的費(fèi)用進(jìn)行添加注冊(cè),微信審核通過(guò)后會(huì)生成唯一標(biāo)識(shí)碼。
? ? * 需要注意的是微信自動(dòng)扣費(fèi)并沒(méi)有對(duì)外公開(kāi),需要聯(lián)系微信的bd進(jìn)行權(quán)限授權(quán)。
? ? * 在進(jìn)行簽約對(duì)接前要保證上面提到的appid,商戶id(mchid)綁定且模板id審核通過(guò)
2. 微信自動(dòng)扣費(fèi)對(duì)接方式包括sdk對(duì)接,h5簽約對(duì)接,支付中簽約對(duì)接方式,對(duì)接不麻煩,對(duì)接參考下面的對(duì)接文檔即可,麻煩的是里面的各種坑,此時(shí)吐槽一下這些三方太她媽的沒(méi)有大廠風(fēng)范了,寫得文檔那個(gè)簡(jiǎn)單,寫得詳細(xì)一點(diǎn)能死啊!有點(diǎn)用的還藏在問(wèn)題中或者論壇中去,連個(gè)導(dǎo)航鏈接都沒(méi)有,只能呵呵了。
2. 微信自動(dòng)扣費(fèi)填坑記錄
? ? * 簽約中商戶號(hào)id(mchid),appid,模板id(planid)匹配且planid審核通過(guò),磨刀不誤砍柴工,在開(kāi)發(fā)對(duì)接前反復(fù)確認(rèn)這一項(xiàng),不然后續(xù)開(kāi)發(fā)中使用的時(shí)間更長(zhǎng)。
? ? * app sdk簽約模式在app中不能成功拉起微信簽約頁(yè)面,但是微信支付沒(méi)有問(wèn)題,一直提示跳轉(zhuǎn)失敗,原因是app sdk 拉起微信的簽約頁(yè)面需要額外申請(qǐng)權(quán)限,這個(gè)需要和對(duì)接bd確認(rèn),讓其幫忙找微信支付去開(kāi)通。
? ? * app sdk簽約模式拉起簽約頁(yè)面一直提示非法
? ? ? ? * 首先確認(rèn)第一條說(shuō)的三個(gè)id是否綁定并審核通過(guò)
? ? ? ? * 確認(rèn)傳遞的參數(shù)簽名是否正確,notifyurl簽名時(shí)不使用url編碼,傳遞時(shí)進(jìn)行url編碼,其他參數(shù)存在特殊字符或者中文字符最好也url編碼,還有ios切記兩次url編碼
? ? ? ? * 參數(shù)url編碼后%3A,%2F等需要大寫
? ? ? ? * 其他參數(shù)要嚴(yán)格遵循接口文檔定義,有的是int,特別注意時(shí)間戳是10位,不是java常見(jiàn)的13位
? ? * app h5簽約模式一直提示簽約非法
? ? ? ? * H5簽約需要app開(kāi)發(fā)后臺(tái)準(zhǔn)備好參數(shù)訪問(wèn)微信后臺(tái)獲取到對(duì)應(yīng)的簽約鏈接,然后通過(guò)鏈接拉起微信的簽約頁(yè)面進(jìn)行簽約
? ? ? ? * 首先需要注意的是換回的鏈接不能直接在webview或者瀏覽器中訪問(wèn)
? ? ? ? * 在h5權(quán)限授權(quán)后臺(tái)時(shí)會(huì)配置一個(gè)授權(quán)域名,需要用這個(gè)授權(quán)域名寫一個(gè)重定向的空頁(yè)面,然后在webview或者瀏覽器中訪問(wèn)這個(gè)空頁(yè)面,微信會(huì)校驗(yàn)域名
? ? ? ? * 在重定向訪問(wèn)微信返回鏈接后,需要以refer的方式將授權(quán)域名添加到訪問(wèn)header中去
? ? ? ? * 訪問(wèn)接口換取拉起微信鏈接同樣需要微信授權(quán)以后才行
? ? * app h5簽約成功后返回分析
? ? ? ? * H5簽約成功后分為三種:留在微信,識(shí)別拉起的ua后回到瀏覽器,回到app
? ? ? ? * webview或者瀏覽器都存在ua標(biāo)識(shí)一些信息,微信識(shí)別后簽約成功會(huì)回到瀏覽器,鑒于通常會(huì)安裝多個(gè)瀏覽器app,實(shí)測(cè)會(huì)彈窗讓用戶選擇回到那個(gè)瀏覽器
? ? ? ? * 回到app需要換取鏈接的時(shí)候加上return-appid參數(shù)并設(shè)置上一個(gè)正式的appid,還有app得有返回到自己app的權(quán)限,這個(gè)權(quán)限沒(méi)有找到設(shè)置的地方,對(duì)接bd也是一知半解,建議開(kāi)發(fā)中就不要考慮這個(gè)了
? ? ? ? * 沒(méi)有設(shè)置appid也沒(méi)有識(shí)別ua,簽約成功后留在微信,用戶手動(dòng)返回
? ? ? ? * 由于webview也設(shè)置了ua,通常和瀏覽器的ua相同,所以webview拉起簽約成功后同樣會(huì)彈窗選擇返回瀏覽器,此處一個(gè)小的竅門,在自己的webview設(shè)置ua為一串特殊字符,讓微信不能識(shí)別留在微信即可
? ? * app h5簽約生命周期分析(針對(duì)activity套用fragment分析)
? ? ? ? * 尼瑪,微信你還能做的更坑一些么,成功拉起簽約頁(yè)面和不能成功拉起簽約頁(yè)面(沒(méi)有登錄微信)自己app走的生命周期不一樣,想在onresume中監(jiān)聽(tīng)結(jié)果的懵逼了吧
? ? ? ? * 可以成功拉起微信簽約頁(yè)面,會(huì)在簽約完成回到自己頁(yè)面前反復(fù)兩次走自己頁(yè)面的onresume和onpause
? ? ? ? * 不能成功拉起頁(yè)面,在簽約完成前不會(huì)走頁(yè)面的onresume
? ? ? ? * 懵逼孩子,告訴你無(wú)論成功與否都只走頁(yè)面activity的onrestart一次,柳暗花明了吧
? ? ? ? * 滿心高興的在activity的onrestart中寫監(jiān)聽(tīng),沒(méi)問(wèn)題了吧,測(cè)試簽約前沒(méi)問(wèn)題,可你媽簽約后→連續(xù)兩次調(diào)用onrestart,尼瑪哭的心都有了,經(jīng)歷前面這些坑后估計(jì)也折騰不起來(lái)了,你兩次就兩次吧,反正都是簽約后還是很快連續(xù)兩次,自己代碼邏輯控制一下就好了
? ? ? ? * 有興趣的可以分析一下這個(gè)生命周期,還是蠻有趣的,研究研究原理么的(閑的蛋疼)
3. 針對(duì)對(duì)接方式微信使用場(chǎng)景,鑒于開(kāi)發(fā)對(duì)產(chǎn)品了解也不是很明白,簡(jiǎn)單分析一下當(dāng)前自動(dòng)扣費(fèi)的使用場(chǎng)景。
? ? * 連續(xù)包月,簽約后,后續(xù)會(huì)每月發(fā)起扣費(fèi)
? ? * 一系列的運(yùn)營(yíng)活動(dòng),比如首月低價(jià)包月
? ? * 免密支付,減少支付流程
資料匯總:
? ? 微信自動(dòng)扣費(fèi)產(chǎn)品說(shuō)明文檔
? ? 微信自動(dòng)扣費(fèi)官方文檔(懵逼還不能不看的文檔)
? ? 微信模板id申請(qǐng)文檔(看看吧,多少有點(diǎn)用)
? ? 微信簽約常見(jiàn)問(wèn)題文檔(救命文檔)
小伙伴們,若是把你從坑里拉出來(lái),別忘了贊賞一下小弟,加個(gè)關(guān)注也好奧