摘要:這個(gè)坑就是要注意回調(diào)結(jié)束要返回成功的響應(yīng)這幾天做微信支付暫時(shí)遇到的問題就這么多,只能說注意細(xì)節(jié)吧,爬過的坑記錄下來以后遇到就懂處理了。
前言
其實(shí)任何接口開發(fā)只要按照給出來的接口文檔和例子開發(fā)基本上不會(huì)有太大問題的,一些問題都是出在雜七雜八的小細(xì)節(jié)上,現(xiàn)在分享一下微信支付開發(fā)中自己遇到的小細(xì)節(jié)。
按照文檔做完開發(fā)前配置,比如JS安全域名配置、網(wǎng)頁授權(quán)域名、公眾號(hào)授權(quán)目錄等等...
看完微信支付的文檔,了解接口的規(guī)則,微信支付的流程基本是:獲取openid -> 生成統(tǒng)一下單參數(shù) -> 用戶支付 -> 回調(diào) ,其實(shí)沒有太復(fù)雜
在配置上面說的東西的時(shí)候也會(huì)有一些小問題
支付授權(quán)目錄需要配置到接口的上一級(jí)目錄,斜杠(/)結(jié)尾,必須是斜杠結(jié)尾,而且是你寫的后端接口的請(qǐng)求路徑,不管是否做了路由跳轉(zhuǎn)之類的坑二: openid的獲取
下載微信支付DEMO 鏈接
文檔中也有給出了例子,在example文件夾,當(dāng)時(shí)在第一步獲取openid就卡住了。
先講一下我這邊代碼框架是前端vue + 后端thinkphp給出api接口實(shí)現(xiàn)數(shù)據(jù)交互這樣的。
在第一步獲取openid中,需要做header("Location:....")重定向獲取到code然后跳轉(zhuǎn)回來Curl訪問access_token接口獲取到用戶openid。
如果前端下單本身就是一個(gè)頁面跳轉(zhuǎn)那可以按照demo的寫法直接用,但是如果是前端post請(qǐng)求是沒法做重定向操作,所以獲取openid和生成統(tǒng)一訂單參數(shù)不能放在同一個(gè)方法內(nèi)實(shí)現(xiàn)。
在前端異步的請(qǐng)求中會(huì)報(bào)Access-Control-Allow-Origin的跨域問題,而且是報(bào)api.weixin.qq.com不能跨域到api.weixin.qq.com。
所以如果遇到以上跨域問題~那就是你的前端異步請(qǐng)求和獲取openid寫到一起了,但是異步請(qǐng)求無法響應(yīng)header重定向的原因。
如果你的項(xiàng)目中在其他地方已經(jīng)獲取到openid那這部分就不存在問題了
第一個(gè)坑的結(jié)果:如果前端是異步請(qǐng)求數(shù)據(jù)的話,openid不能和統(tǒng)一下單寫在一起~openid需要做一次重定向來獲取。坑二: 生成統(tǒng)一訂單
生成統(tǒng)一訂單參數(shù)要嚴(yán)格對(duì)照 參數(shù)文檔的參數(shù)寫,example文件夾的例子中有寫好的組裝參數(shù)方法,可以直接調(diào)用沒有太大問題,但是要注意的有以下幾點(diǎn)
嚴(yán)格 大小寫
參數(shù)必須是 字符串
附加參數(shù)attach值的最大長(zhǎng)度是127
前端接收到參數(shù)后,必須組成對(duì)象寫到WeixinJSBridge.invoke的getBrandWCPayRequest請(qǐng)求中,注意是對(duì)象?。?!對(duì)象?。?!對(duì)象?。?! 我跟前端開發(fā)溝通的過程中前端就把參數(shù)轉(zhuǎn)成字符串寫到getBrandWCPayRequest里面了,我加班好久查資料最后才發(fā)現(xiàn)是這里的問題
在這一步會(huì)遇到以下報(bào)錯(cuò):
支付缺少參數(shù):appId (因?yàn)檎麄€(gè)參數(shù)組不是一個(gè)對(duì)象所以報(bào)錯(cuò))
chooseWXPay:fail (不能在開發(fā)者工具上調(diào)試微信支付,在工具上會(huì)報(bào)這個(gè)錯(cuò)誤。其實(shí)去網(wǎng)上查的一大堆資料都說的解決都是在說這個(gè)原因)
這個(gè)坑的問題就在于:各種參數(shù)要對(duì)照文檔寫好而且格式正確。坑三:支付成功回調(diào)
支付回調(diào)的例子里面有重寫NotifyProcess的方法,如果你要另外寫業(yè)務(wù)可以吧notify.php寫成一個(gè)文件然后再寫另外的回調(diào)接口來請(qǐng)求這個(gè)類。
我這邊的話就重寫了一下方法返回回調(diào)數(shù)據(jù)。
回調(diào)的坑在于你回調(diào)業(yè)務(wù)處理完了之后要在最后加上以下:
return "
否則的話微信沒有收到你的回調(diào)成功返回,會(huì)不斷重復(fù)回調(diào)5次然后停止,如果回調(diào)中寫了業(yè)務(wù)那就會(huì)重復(fù)操作了。
這個(gè)坑就是:要注意回調(diào)結(jié)束要返回成功的xml響應(yīng)END
這幾天做微信支付暫時(shí)遇到的問題就這么多,只能說注意細(xì)節(jié)吧,爬過的坑記錄下來以后遇到就懂處理了。
哦,還有微信支付的相關(guān)問題網(wǎng)上能搜到很多...但是不一定跟自己遇到的能匹配上,而且大部分都是很久的了....
這個(gè)略坑
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26320.html
摘要:背景最近項(xiàng)目需要上線支付寶小程序,同時(shí)需要走用戶的授權(quán)流程完成用戶信息的存儲(chǔ),以前做過微信小程序的開發(fā),本以為實(shí)現(xiàn)授權(quán)的過程是很簡(jiǎn)單的事情,但是再實(shí)現(xiàn)的過程中還是遇到了不少的坑,因此記錄一下實(shí)現(xiàn)的過程學(xué)到的知識(shí)支付寶開放接口的調(diào)用模式以及實(shí) 背景 最近項(xiàng)目需要上線支付寶小程序,同時(shí)需要走用戶的授權(quán)流程完成用戶信息的存儲(chǔ),以前做過微信小程序的開發(fā),本以為實(shí)現(xiàn)授權(quán)的過程是很簡(jiǎn)單的事情,但是...
摘要:原文見我的博客,點(diǎn)擊進(jìn)入使用開發(fā)微信公眾號(hào)下站點(diǎn)的填坑之旅本文為我創(chuàng)業(yè)過程中,開發(fā)項(xiàng)目的填坑之旅。作為一個(gè)技術(shù)宅男,我的項(xiàng)目是做一個(gè)微信公眾號(hào),前后端全部自己搞定,不浪費(fèi)國(guó)家一分錢。 原文見我的博客,點(diǎn)擊進(jìn)入使用vue開發(fā)微信公眾號(hào)下SPA站點(diǎn)的填坑之旅 本文為我創(chuàng)業(yè)過程中,開發(fā)項(xiàng)目的填坑之旅。作為一個(gè)技術(shù)宅男,我的項(xiàng)目是做一個(gè)微信公眾號(hào),前后端全部自己搞定,不浪費(fèi)國(guó)家一分錢^_^。 ...
摘要:由于初版需求及開發(fā)工作都沒有參與,在接手項(xiàng)目后過了遍前端結(jié)構(gòu)發(fā)現(xiàn)所有交互及組件都是現(xiàn)擼,并未使用市面上已有的優(yōu)秀前端框架從我個(gè)人角度理解上出發(fā),后續(xù)需求變更中當(dāng)需要實(shí)現(xiàn)某些常用組件樣式或交互時(shí),基本上都需要現(xiàn)擼或者尋找合適的組件。 2016悄無聲息的過去了,再過不久便是農(nóng)歷新年 這幾天相對(duì)清閑梳理了一下去年所做的工作,希望在新的一年能發(fā)展的更好 今年一共研發(fā)或升級(jí)了五款產(chǎn)品:合伙人、奪...
摘要:發(fā)布應(yīng)用市場(chǎng)的平臺(tái)搶紅包工具紅包精靈開源啦掘金紅包精靈,如果喜歡,點(diǎn)個(gè)開源不易。作者將原素材文章進(jìn)行了新內(nèi)容的添加和重新排列,但是因?yàn)槲恼赂咝У拇a編寫技巧總結(jié)前端掘金本文總結(jié)了代碼編寫技巧,來提升你的和代碼。 收藏安卓開發(fā)中非常實(shí)用優(yōu)秀的庫! 有圖有真相! - Android - 掘金本來是打算收藏工具類的,但轉(zhuǎn)念一想,已經(jīng)有這么多優(yōu)秀的庫了,就沒必要再去重復(fù)造輪子了,便歸納工作中比...
摘要:所以在小程序出現(xiàn)之后,一股框架之風(fēng)也很快的出現(xiàn),微信小程序剛推出之后,就出現(xiàn)了兩個(gè)比較出名的小程序開發(fā)框架,。 原文地址:https://ant-move.github.io/we... 這里說的去除小程序框架其實(shí)并不嚴(yán)謹(jǐn),因?yàn)樾〕绦虮旧硪菜闶且粋€(gè)框架,而且是一個(gè)功能更加完善的框架系統(tǒng)。在前端的概念中,我們一般說一個(gè)框架是指一個(gè)用來幫助開發(fā)者構(gòu)建用戶界面的框架,而小程序框架本身不僅僅包...
閱讀 800·2023-04-26 00:30
閱讀 2710·2021-11-23 09:51
閱讀 1056·2021-11-02 14:38
閱讀 2596·2021-09-07 10:23
閱讀 2254·2021-08-21 14:09
閱讀 1395·2019-08-30 10:57
閱讀 1611·2019-08-29 11:20
閱讀 1160·2019-08-26 13:53