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