先到支付宝官网下载,担宝交易程序,然后集成thinkphp
class PayAction extends Action{
public function doalipay(){
require_once(VENDOR_PATH."Alipay/alipay.config.php");
// require_once("lib/alipay_submit.class.php");
require_once(VENDOR_PATH."Alipay/lib/alipay_submit.class.php");
//$alipay_config=C('alipay_config');
/**************************请求参数**************************/
$payment_type = "1"; //支付类型 //必填,不能修改
$notify_url = ""; //服务器异步通知页面路径
$return_url = ""; //页面跳转同步通知页面路径
$seller_email = "xxxxx@";//卖家支付宝帐户必填
$out_trade_no = $_POST['trade_no'];//商户订单号 通过支付页面的表单进行传递,注意要唯一!
$subject = $_POST['ordsubject']; //订单名称 //必填 通过支付页面的表单进行传递
$price = $_POST['ordtotal_fee']; //付款金额 //必填 通过支付页面的表单进行传递
$quantity = "1"; //商品数量//必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品
$logistics_fee = "0.00"; //物流费用 //必填,即运费
$logistics_type = "EXPRESS"; //物流类型 //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
$logistics_payment = "SELLER_PAY"; //物流支付方式
$parameter = array(
"service" => "create_partner_trade_by_buyer",
"partner" => trim($alipay_config['partner']),
"payment_type" => $payment_type,
"notify_url" => $notify_url,
"return_url" => $return_url,
"seller_email" => $seller_email,
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"price" => $price,
"quantity" => $quantity,
"logistics_fee" => $logistics_fee,
"logistics_type" => $logistics_type,
"logistics_payment" => $logistics_payment,
"body" => '',
"show_url" => '',
"receive_name" => '',
"receive_address" => '',
"receive_zip" => '',
"receive_phone" => '',
"receive_mobile" => '',
"_input_charset" => trim(strtolower($alipay_config['input_charset']))
);
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
echo $html_text;
}
/******************************
服务器异步通知页面方法
其实这里就是将notify_url.php文件中的代码复制过来进行处理
*******************************/
function notifyurl(){
require_once(VENDOR_PATH."Alipay/alipay.config.php");
require_once(VENDOR_PATH."Alipay/lib/alipay_notify.class.php");
//$alipay_config=C('alipay_config');
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
$out_trade_no = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'WAIT_BUYER_PAY') {
//该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$data['status'] = 0;
// echo "success"; //请不要修改或删除
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
else if($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
//该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$data['status'] = 1;
// echo "success"; //请不要修改或删除
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
else if($_POST['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
//该判断表示卖家已经发了货,但买家还没有做确认收货的操作
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$data['status'] = 2;
// echo "success"; //请不要修改或删除
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
else if($_POST['trade_status'] == 'TRADE_FINISHED') {
//该判断表示买家已经确认收货,这笔交易完成
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$data['status'] = 3;
// echo "success"; //请不要修改或删除
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
else {
//其他状态判断
// echo "success";
//调试用,写文本函数记录程序运行情况是否正常
//logResult ("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
$data['trade_no']=$trade_no;
M('orderinfo')->where(array('order_sn'=>$out_trade_no))->save($data);
echo "success";
}
else {
//验证失败
echo "fail";
}
}
function returnurl(){
require_once(VENDOR_PATH."Alipay/alipay.config.php");
require_once(VENDOR_PATH."Alipay/lib/alipay_notify.class.php");
$alipayNotify = new AlipayNotify($alipay_config);//计算得出通知验证结果
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {
//请在这里加上商户的业务逻辑程序代码
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
//商户订单号
$out_trade_no = $_GET['out_trade_no'];
//支付宝交易号
$trade_no = $_GET['trade_no'];
//交易状态
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'WAIT_BUYER_PAY') {
$data['status'] = 0;
}
else if($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
$data['status'] = 1;
}
else if($_GET['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
$data['status'] = 2;
}
else if($_GET['trade_status'] == 'TRADE_FINISHED') {
$data['status'] = 3;
}
else {
}
$where['order_sn']=$out_trade_no;
M('orderinfo')->where($where)->save($data);
showmessage('付款成功.继续购其它物品',U(GROUP_NAME.'/Index/index'));
}else {
showmessage('支付失败',U(GROUP_NAME.'/Index/index'));
}
}
}
转载请注明来自88导购: ~~~