Thinkphp 3.2.1 集成支付宝双接口

1、申请支付宝接口

2、下载osgit上面的代码进行改造,地址http://git.oschina.net/smilease/ThinkPay

     首先是要改成合适自己项目的路径,要注意文件的名字要符合tp的规范,比如XxController.class.php

3、测试的时候会出现问题,因为上面的代码是适用于直接到账的,我申请到的接口是双接口,所以要进行改造。

4、问题1:调试错误,请回到请求来源地,重新发起请求

     这个就是接口类型不对,需要将参数的类型'service' => 'create_direct_pay_by_user',改成 'service' => 'trade_create_by_buyer',

5、问题2:抱歉,无法完成付款! 交易信息有误,请重新核实交易详情再付款。 错误代码:ILLEGAL_

将参数:'total_fee' => $vo->getFee()改成

             'price' => 1,

             'quantity' => 1

6、问题3:Class 'Think\Pay\Driver\' not found

7、问题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;
        }

8、问题5:undefined function fsocketopen() 

fsocketopen 改为了 fsockopen

9、问题6 : Access Denied


你可能感兴趣的:(Thinkphp 3.2.1 集成支付宝双接口)