发起支付:pay.php
require('Alipay.php'); $alipay_config =require('config.php'); $price = isset($_GET['price'])?$_GET['price']:0; $subject = isset($_GET['subject'])?$_GET['subject']:'测试商品'; $out_trade_no = isset($_GET['orderid'])?$_GET['orderid']:time().rand(10000,99999); if(!$price){ exit('请填写支付金额'); } /* 业务参数 */ $params = [ 'subject' => $subject, 'out_trade_no' => $out_trade_no, //商户网站唯一订单号 'price' => $price, 'quantity' => 1, //'total_fee' => $total_price, /* 规则:price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。 */ 'payment_type' => 1, ]; $alipay = new \com\Alipay(); $alipay->alipay_config = array_merge($alipay_config,$params); $url = $alipay->buildRequest(); header('Location:'.$url);
异步通知例子:notify.php
require('Alipay.php'); //异步通知例子 $alipay = new \com\Alipay(); $alipay->alipay_config = require('config.php'); if( !$alipay->verifyNotify() ) { savelog(date('Y-m-d H:i:s').':'.json_encode($_POST)."\r\n",'fail'); exit('fail'); }else{ $out_trade_no = isset($_POST['out_trade_no'])?$_POST['out_trade_no']:''; //TODO 这里根据订单ID改变数据状态 //其他业务逻辑 exit('success'); }
config.php配置文件
return [ 'key' => 'xxxxxxxxxxxxxx', //交易安全校验码,用于签名的32位密钥 'transport' => 'http', //消息验证地址使用访问方式 'seller_email' => 'yvsm@163.com', //卖家支付宝账号,即收款账户 'service' => 'create_direct_pay_by_user', //接口名称 'partner' => '2088002005554666', //合作者身份ID '_input_charset' => 'utf-8', //参数编码字符集 'sign_type' => 'MD5', //签名方式,不参加签名 // 与业务相关参数 'notify_url' => 'http://preview.wdphp.com/pay/alipay/notify.php', //服务器异步通知页面路径 'return_url' => 'http://preview.wdphp.com/pay/alipay/index.php', //页面跳转通知页面路径 ];
该接口使用的是支付宝mapi网关,相关支付参数可以在:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner 获取。
只需要 卖家支付宝账号(seller_email)、合作伙伴身份PID(partner) 、 MD5密钥(key) 这三个参数即可。