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