站长图库向大家介绍了ThinkPHP3.2,支付宝支付接口等相关知识,希望对您有所帮助
整个接口核心类文件
alipay.config.php是相关参数的配置文件
alipayapi.php 是支付宝接口入口文件
notify_url.php 是服务器异步通知页面文件;
return_url.php 是页面跳转同步通知文件;
第一步:
把接口包放到项目中 在ThinkPHP的框架文件下,找到Library进入,再进入Vendor,在Vendor文件夹下,新建文件夹Alipay,把支付宝作为第三方类库引入。然后,复制支付宝接口文件包中上面4个文件。一共4个文件放入项目Alipay中

打开Submit.php和Notify.php把以下两段代码注释掉;
require_once("alipay_core.function.php");require_once("alipay_md5.function.php");因为在项目中会通过vendor来引入4个核心文件,所以,这里不再需要导入。
第二步:
1、在配置文件中Conf/Config.php文件中对支付宝相关参数进行配置:
'alipay_config'=>array( 'partner' => '*****', //这里是你在成功申请支付宝接口后获取到的PID; //收款支付宝账号,一般情况下收款账号就是签约账号 'seller_id' => '*****', //安全检验码,以数字和字母组成的32位字符 'key' => '***', //这里是你在成功申请支付宝接口后获取到的Key //签名方式 不需修改 //这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法; 'notify_url'=>'http://update.my/index.php/Home/Pay/notifyurl.html', //这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法; 'return_url'=>'http://update.my/index.php/Home/Pay/returnurl.html', 'sign_type' => strtoupper('MD5'), //字符编码格式 目前支持 gbk 或 utf-8 'input_charset'=> strtolower('utf-8'), //ca证书路径地址,用于curl中ssl校验 //请保证cacert.pem文件在当前文件夹目录中 'cacert' => VENDOR_PATH.'Alipay/cacert.pem', //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http 'transport' => 'http', // 支付类型 ,无需修改 'payment_type' => "1", // 产品类型,无需修改 'service' => "create_direct_pay_by_user", //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ // 防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数 'anti_phishing_key' => "", 'exter_invoke_ip' => "",), //以上配置项,是从接口包中alipay.config.php 文件中复制过来,进行配置;'alipay' =>array( //支付成功跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参payed(已支付列表) 'successpage'=>'/index.php/', //支付失败跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参unpay(未支付列表) 'errorpage'=>'/index.php/Home/Test',),2、新建一个PayController控制器代码如下:
<?phpnamespace Home\Controller;use Think\Controller;class PayController extends Controller{ //在类初始化方法中,引入相关类库 public function _initialize() { vendor('Alipay.Corefunction'); vendor('Alipay.Md5function'); vendor('Alipay.Notify'); vendor('Alipay.Submit'); } /*该方法其实就是将接口文件包下alipayapi.php的内容复制过来 然后进行相关处理 */ public function doalipay(){ $alipay_config=C('alipay_config'); $order_sn = filter_var(I('get.order_sn'),FILTER_SANITIZE_NUMBER_INT); if(empty($order_sn)) { //$this->redirect('Myorder/index',3,'您提交的订单号无效,请提交正确的订单'); echo "<script>alert('您提交的订单号无效,请提交正确的订单!');window.location.href='".U('/Home/Pay/index')."';</script>"; exit(); } else { $order = M()->table('[meeting_order]')->where(array('trade_no'=>$order_sn))->find(); if(empty($order)) { //$this->redirect('Myorder/index',3,'您提交的订单号未知,请提交正确的订单'); echo "<script>alert('您提交的订单号未找到,请提交正确的订单!');window.location.href='".U('/Home/Pay/index')."';</script>"; exit(); } if($order['paystatus'] >0) { //$this->redirect('Myorder/index',3,'请不要重复提交订单'); echo "<script>alert('请不要重复提交订单!');window.location.href='".U('/Home/Pay/index')."';</script>"; exit(); &nbs

