微信公眾平台無法使用支付寶收付款的解決方案


信心慢慢的在網頁上試通了支付寶網頁支付,結果微信不買賬,把微信好一通抱怨,問題還要解決,就在網上找解決方法,

網上解決方法很多,有的能看明白,有的看不明白,反正最后搞出來了,其實也很簡單,給大家看一下我的處理方法

參考官網demo:https://docs.open.alipay.com/203/105285/

ap.js和pay.htm是必須的,放好位置,配置好調用鏈接

首先還是原本的調用方式,代碼如下,還需要把接口中echo $result給注掉

 1 public function getResult()
 2 {
 3     vendor('AliPay.wappay.service.AlipayTradeService');
 4     vendor('AliPay.wappay.buildermodel.AlipayTradeWapPayContentBuilder');
 5     $config = C('AliPayConf');
 6     
 7     $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
 8     $payRequestBuilder->setBody($this->body);
 9     $payRequestBuilder->setSubject($this->subject);
10     $payRequestBuilder->setOutTradeNo($this->out_trade_no);
11     $payRequestBuilder->setTotalAmount($this->total_amount);
12     $payRequestBuilder->setTimeExpress($this->timeout_express);
13     $payResponse = new \AlipayTradeService($config);
14     $result=$payResponse->wapPay($payRequestBuilder,$this->return_url,$this->notify_url);
15         
16     return $result;
17 }

正常的話把上面返回結果輸出頁面就可以了,微信公眾號里面就要稍作處理,這里參考官網demo,我使用了post請求,因為上述返回結果直接就是一個form表單提交,所以就把返回結果中js部分去掉,換用官網demo中js方法,就可以了

php

1 $form = $alipay->getResult();
2 $script = "<script>document.forms['alipaysubmit'].submit();</script>";//form中js部分
3 $form = substr($form,0,strrpos($form,$script));//將form中js部分去掉
4 $this->assign('form',$form);
5 $this->display(":alipay");

html

因為form包含所有參數,所以js配置直接把input[type=hidden]獲取到就行,另外form的id需要改為alipaysubmit,和返回數據一致

 1 <div id="pay-methods-panel" class="pay-methods-panel">
 2     {$form}
 3     <div class="wrapper buy-wrapper">
 4         <a href="javascript:void(0);" class="J-btn-submit btn mj-submit btn-strong btn-larger btn-block">確認支付</a>
 5     </div>
 6 </div>
 7 <script type="text/javascript" src="themes/simplebootx/Public/assets/js/ap.js"></script>
 8 <script>
 9     var btn = document.querySelector(".J-btn-submit");
10     btn.addEventListener("click", function (e) {
11         e.preventDefault();
12         e.stopPropagation();
13         e.stopImmediatePropagation();
14         var queryParam = '';
15                                  Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
16                    queryParam += '&' + ele.name + "=" + encodeURIComponent(ele.value);
17             });
18         var gotoUrl = document.querySelector("#alipaysubmit").getAttribute('action') + queryParam;
19          _AP.pay(gotoUrl);
20 
21         return false;
22     }, false);
23 </script>

還有幾點要注意,ap.js中location.href要配置正確,pay.htm的ap.js要引用對,

另外api版本要弄對,我用的最新api,但官網解決方法demo應該是老版本的,因為js參數配置都不一樣,按照demo中js配置參數不好使,好在我這種方式直接忽略掉了這種問題

好了就到這里,我是懶人懶辦法,不過感覺挺省事的,歡迎大家有問題討論

轉載於:https://www.cnblogs.com/YearsOfDrunk/p/9581519.html

轉載:https://blog.csdn.net/weixin_33961829/article/details/93580723

 

 

-----------------------------------------------------------------------------自己項目--------------------------------------------------------------------

 

 

 

 

 

 

<script type="text/javascript" src="__STATIC__/zfb_pay/ap.js"></script>
    <script>
        var btn = document.querySelector(".J-btn-submit");
        btn.addEventListener("click", function (e) {
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
            
            var queryParam = '';
           // queryParam += 'bizcontent=' + encodeURIComponent(bizStr);
            Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
                queryParam += '&' + ele.name + "=" + encodeURIComponent(ele.value);
            });
            var gotoUrl = document.querySelector("#alipaysubmit").getAttribute('action') + queryParam;
            _AP.pay(gotoUrl);

            return false;
        }, false);
    </script>

 

 

必須修改ap.js中

 

 

 

 

 

 

 

 

 

注:這里有一個坑需要注意,在官方SDK的wappay/service/AlipayTradeService.php的aopclientRequestExecute方法中,有一個echo $result操作,這個操作是在你調用支付接口后直接跳轉支付寶方的支付頁的,這對我們后面做微信公眾號中支付寶支付是一個大坑(親測),一定要注釋掉這一行代碼喲!
————————————————
版權聲明:本文為CSDN博主「袁威」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/joelingwei/article/details/81019993

 

 

 

 

 

 

 

index.php中
define('EXTEND_PATH',CMF_ROOT . 'extend/');

  require  EXTEND_PATH . "alipay/wappay/buildermodel/AlipayTradeWapPayContentBuilder.php";
        require EXTEND_PATH . "alipay/wappay/service/AlipayTradeService.php";

 

 

 注意啦,官方文檔都是坑啊!!!!!---要把我搞死了 ---555555555~

這個“?”要去掉

 


免責聲明!

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



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