支付宝接口
//引入配置文件 public function __construct(){ //引入库文件 require 'res/lib/api/alipay/alipay_core.function.php'; require 'res/lib/api/alipay/alipay_md5.function.php'; require 'res/lib/api/alipay/alipay_notify.class.php'; require 'res/lib/api/alipay/alipay_submit.class.php'; //支付宝配置信息 $this->alipay_config = array( //商户号 'partner' => '', //收款支付宝账号 'seller_email' => '', //安全检验码,以数字和字母组成的32位字符 'key' => '', //签名方式 不需修改 'sign_type' => strtoupper('MD5'), //字符编码格式 目前支持 gbk 或 utf-8 'input_charset' => strtolower('utf-8'), //ca证书路径地址,用于curl中ssl校验 //请保证cacert.pem文件在当前文件夹目录中 'cacert' => getcwd().'/cacert.pem', //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http 'transport' => 'http', ); }
/** * 支付方法 * 2015-11-2 */ public function pay($orderInfo){ //参数设置 $parameter=array( //服务 "service" => "create_direct_pay_by_user", //商户号 'partner' => $this->alipay_config['partner'], //支付宝账号 'seller_email' => "", //支付类型 必填,不能修改 'payment_type' => 1, //服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数 'notify_url' => "http://xxx.com/alipay/pay/notifyurl", //页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ 'return_url' => "http://xxx.com/alipay/pay/returnurl", //商户订单号 商户网站订单系统中唯一订单号,必填 'out_trade_no' => $orderInfo['order_num'], //订单名称 必填 'subject' => $orderInfo['order_name'], //付款金额 必填 'total_fee' => $orderInfo['order_fee'], //订单描述 'body' => $orderInfo['order_desc'], //商品展示地址 需以http://开头的完整路径 'show_url' => '', //防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数 'anti_phishing_key' => '', //客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1 'exter_invoke_ip' => '', //编码 "_input_charset" => trim($this->alipay_config['input_charset']), ); $alipaySubmit = new AlipaySubmit($this->alipay_config); $html_text = $alipaySubmit->buildRequestForm($parameter,"post", "submit"); return $html_text; }
/** * 异步通知方法 * 2015-11-2 */ public function notifyurl(){ $alipay_config=$this->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']; //交易状态 $total_fee = $_POST['total_fee']; //交易金额 $notify_id = $_POST['notify_id']; //通知校验ID。 $notify_time = $_POST['notify_time']; //通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。 $buyer_email = $_POST['buyer_email']; //买家支付宝帐号; $parameter = array( "out_trade_no" => $out_trade_no, //商户订单编号; "trade_no" => $trade_no, //支付宝交易号; "total_fee" => $total_fee, //交易金额; "trade_status" => $trade_status, //交易状态 "notify_id" => $notify_id, //通知校验ID。 "notify_time" => $notify_time, //通知的发送时间。 "buyer_email" => $buyer_email, //买家支付宝帐号; ); if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') { //交易成功 //这里根据订单返回状态判断是否成功,并更新订单信息 } echo "success"; //请不要修改或删除 }else { //验证失败 echo "fail"; } }
/** * 返回页面方法 * 2015-11-2 */ function returnurl(){ $alipay_config=$this->alipay_config; $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']; //交易状态 $total_fee = $_GET['total_fee']; //交易金额 $notify_id = $_GET['notify_id']; //通知校验ID。 $notify_time = $_GET['notify_time']; //通知的发送时间。 $buyer_email = $_GET['buyer_email']; //买家支付宝帐号; $parameter = array( "out_trade_no" => $out_trade_no, //商户订单编号; "trade_no" => $trade_no, //支付宝交易号; "total_fee" => $total_fee, //交易金额; "trade_status" => $trade_status, //交易状态 "notify_id" => $notify_id, //通知校验ID。 "notify_time" => $notify_time, //通知的发送时间。 "buyer_email" => $buyer_email, //买家支付宝帐号 ); //交易成功 if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') { //更新订单信息 //跳转到指定页 header('Location:'); } }else { //验证失败 //如要调试,请看alipay_notify.php页面的verifyReturn函数 echo "支付失败!"; } }