力动网络
Lidon外贸商城系统

网站整合支付宝网页在线支付接口代码?使用TP系统其它系统类似

发布时间:2022-10-20  点击次数:571
力动自助建站系统接入支付宝代码,使用TP系统。
首选要到支付宝开放平台下载支付宝网页支付SDK,获得接口文件后把文件放到:vendor目录里。命名为Alipay。我们知道SDK发起支付的代码是比较原生的,现在我们要把支付代码整合进TP系统。
主要有2个功能要完成:支付订单的调起,和支付完成后的回调。

首选在Alipay目录下面建立一个Alipay.php文件,这个文件将主要负责调起订单和付款回调。

代码如下:


require_once dirname ( __FILE__ ).DIRECTORY_SEPARATOR.'wappay/service/AlipayTradeService.php';
require_once dirname ( __FILE__ ).DIRECTORY_SEPARATOR.'wappay/buildermodel/AlipayTradeWapPayContentBuilder.php';


class Alipay{
	
	public static function pay($args){
 		require dirname ( __FILE__ ).DIRECTORY_SEPARATOR.'config.php';
	
		/**************************请求参数**************************/
		if (!empty($args['out_trade_no'])&& trim($args['out_trade_no'])!=""){
		//商户订单号,商户网站订单系统中唯一订单号,必填
		$out_trade_no = trim($args['out_trade_no1']);
	
		//订单名称,必填
		$subject = trim($args['name1']);
	
		//付款金额,必填
		$total_amount = trim($args['total1']);
	
		//商品描述,可空
		$body = '';
	
		//超时时间
		$timeout_express="1m";
		
 		$payRequestBuilder = new AlipayTradeWapPayContentBuilder();
		$payRequestBuilder->setBody($body);
		$payRequestBuilder->setSubject($subject);
		$payRequestBuilder->setOutTradeNo($out_trade_no);
		$payRequestBuilder->setTotalAmount($total_amount);
		$payRequestBuilder->setTimeExpress($timeout_express);
	
		$payResponse = new AlipayTradeService($config);
		$result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
	
		return ;
      }
	
	}
	
 
  
  public static function notifyurl($result_arr)
  {
		require dirname (__FILE__).DIRECTORY_SEPARATOR.'config.php';
        $arr=$result_arr;
		$alipaySevice = new AlipayTradeService($config); 
		$alipaySevice->writeLog(var_export($_POST,true));
		$result = $alipaySevice->check($arr);
		return $result;
  }
}
 
pay($args)用于发起订单,$args代入您的支付参数,具体支付参数参考,sdk原来的代码。
notifyurl($result_arr)用于处理支付宝的回调信息。$result_arr数组是支付宝支付后返回的参数。
在您的应用里建立一个ZfbpayController.php控制器。主要实现订单发起和回调。调用上面的类。 代码:

 public function dobuy2(){
 
	   $orderid=input("get.orderid");
 	   
	   if(!empty($orderid))
	   {
		 $rs=db("Orders_pay")->where("orderids='".$orderid."'")->find();
		  // 提交数据给支付宝
		  $baseurl = 'http://'.$_SERVER['HTTP_HOST'];
 
		  $args = array(
			  'out_trade_no'=>$rs['orderid'],// 商户订单号		
			  'name'=>"商品订单",// 订单名称
			  'total'=>$rs['zhongjia'],// 订单金额
	 
		  );
		  \Alipay::pay($args);
	   }
	   else
	   {
		  $this->error("参数错误!"); 
	   }
    }
回调代码:
 public function notifyurl(){   $arr=$_POST;   $verify_result=\Alipay::notifyurl($arr);
        
        if($verify_result) {//验证成功
            $out_trade_no = $_POST['out_trade_no'];
            //支付宝交易号
            $trade_no = $_POST['trade_no'];
            //交易状态
            $trade_status = $_POST['trade_status'];

            if($_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS')  {   //订单处理逻辑
             }
            echo "success";     //请不要修改或删除
            
        }
        else {
            //验证失败
            echo "fail";          }
    }

实现了以上的主要代码基本上就可以使用支付宝支付了。代码里的表格之类的信息仅供参考,实际中要换成自己的。处理回调的方法自己写一下一般是验证订单是否存在,然后修改订单状态,很简单。




本文地址:https://www.shengbios.com/news/new_content/391,转载请注明。

版权所有:shengbios © Copyright 2007-2022 All Rights Reserved
管理员email:shengbios#163.com