发起支付: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) 这三个参数即可。