Thinkphp 3.2.1 集成支付寶雙接口

一、申請支付寶接口php

二、下載osgit上面的代碼進行改造,地址http://git.oschina.net/smilease/ThinkPay git

     首先是要改爲合適本身項目的路徑,要注意文件的名字要符合tp的規範,好比XxController.class.phpsocket

三、測試的時候會出現問題,由於上面的代碼是適用於直接到帳的,我申請到的接口是雙接口,因此要進行改造。測試

四、問題1:調試錯誤,請回到請求來源地,從新發起請求ui

     這個就是接口類型不對,須要將參數的類型'service' => 'create_direct_pay_by_user',改爲 'service' => 'trade_create_by_buyer',this

五、問題2:抱歉,沒法完成付款! 交易信息有誤,請從新覈實交易詳情再付款。 錯誤代碼:ILLEGAL_url

將參數:'total_fee' => $vo->getFee()改爲 spa

             'price' => 1, .net

             'quantity' => 1調試

六、問題3:Class 'Think\Pay\Driver\' not found

七、問題4:抱歉,沒法完成付款 物流信息有誤,請從新覈對後再付款。錯誤代碼:ILLEGAL_LOGISTICS_FORMAT

解決辦法:修改配置參數以下,

        public function buildRequestForm(\Think\Pay\PayVo $vo) {
        	//付款金額
        	$price = "1";
        	//必填
        	//商品數量
        	$quantity = "1";
        	//必填,建議默認爲1,不改變值,把一次交易當作是一次下訂單而非購買一件商品
        	//物流費用
        	$logistics_fee = "0.00";
        	//必填,即運費
        	//物流類型
        	$logistics_type = "EXPRESS";
        	//必填,三個值可選:EXPRESS(快遞)、POST(平郵)、EMS(EMS)
        	//物流支付方式
        	$logistics_payment = "SELLER_PAY";
        	//必填,兩個值可選:SELLER_PAY(賣家承擔運費)、BUYER_PAY(買家承擔運費)
                $param = array(
                    'service' => 'trade_create_by_buyer',
                    'payment_type' => '1',
                    '_input_charset' => 'utf-8',
                    'seller_email' => $this->config['email'],
                    'partner' => $this->config['partner'],
                    'notify_url' => $this->config['notify_url'],
                    'return_url' => $this->config['return_url'],
                    'out_trade_no' => $vo->getOrderNo(),
                    'subject' => $vo->getTitle(),
                    'body' => $vo->getBody(),
                    //'total_fee' => $vo->getFee()
                	'price'	=> $price,
                	'quantity'	=> $quantity,
                	'logistics_fee'	=> $logistics_fee,
                	'logistics_type'	=> $logistics_type,
                	'logistics_payment'	=> $logistics_payment,
                		
                );

                ksort($param);
                reset($param);

                $arg = '';
                foreach ($param as $key => $value) {
                        if ($value) {
                                $arg .= "$key=$value&";
                        }
                }

                $param['sign'] = md5(substr($arg, 0, -1) . $this->config['key']);
                $param['sign_type'] = 'MD5';

                $sHtml = $this->_buildForm($param, $this->gateway,'get');

                return $sHtml;
        }

八、問題5:undefined function fsocketopen() 

fsocketopen 改成了 fsockopen

九、問題6 : Access Denied

相關文章
相關標籤/搜索