微信公眾號JSAPI支付-多公眾號向同一商戶號支付的問題解決


一、背景

  項目提供公眾號商城集成,在公眾號里進行商品的購買,並與多家公眾號合作增加渠道流量。

二、實現

  有關微信公眾號、商戶號的開通與支付綁定不細說

  從背景里可知,我們需要實現多個公眾號購買向同一個公眾號付錢的功能,微信api地址: https://pay.weixin.qq.com/wiki/doc/api/index.html

看api中的業務流程實現起來也是比較簡單,商戶下訂單--微信下預支付訂單--商戶拉起JSAPI微信支付--微信支付回調商戶進行后處理。

但是由於我們使用的是JSAPI支付,在JSAPI下預支付訂單的時候有點很容易忽視,那就是openid參數。

其他支付方式(二維碼、付款碼等)都不需要傳openid,只有JSAPI支付的時候必須傳openid,而且這個openid是微信用戶在商戶號下的openid,

在我這個場景中,是多個公眾號向一個商戶號支付,所以openid是對應商戶號的,商城所在公眾號的openid是不成功的。

  通過看api知道微信提供獲取對應公眾號的openId的接口:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4

那接下去我們首先要做的事情就是先獲得 微信用戶在商戶號的openid。又翻閱了許多前輩們的資料,https://blog.csdn.net/yusewuhen/article/details/51774010,,https://blog.csdn.net/abcde474524573/article/details/53123641

都是把 獲得的openId存儲在cookie里回傳頁面,其中都用了resbonse.sendRedirect(微信授權URL),這種只有action請求的方式能用,我們用的h5所以都是使用的ajax方式,而ajax不支持sendRedirect,這如何解決呢?

  后來又查了很多資料發現ajax不能直接使用sendRedirect,但是可以把微信授權url返回再用window.location.href去實現重定向。

    后台服務

  前台調用

  因為微信授權url中有一個redirect_uri是獲取授權code后回調我們服務的地址,所以在回調地址里再重定向到商城頁面即可

  

三、總結

  所以我們的解決辦法是在加載商城的時候先獲取用戶對應商戶號的openId存儲在store中,在下訂單時從store中拿這個openId進行下單。

   不管是微信支付還是支付寶,總有復雜的支付場景存在,但是復雜的場景都有技術手段去實現,實在是實現不了的就聯系官方共同研討解決方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM