下载官方demo 放入extend下
<?php
namespace app\index\controller;
use think\Loader;
Loader::import('alipay.wappay.service.AlipayTradeService',EXTEND_PATH,'.php');
Loader::import('alipay.wappay.buildermodel.AlipayTradeWapPayContentBuilder',EXTEND_PATH,'.php');
Loader::import('alipay.config.php');
use think\Controller;
class Alipay extends Controller
{
public function index(){
return $this->fetch();
}
public function pay(){
$config = array (
//应用ID,您的APPID。
'app_id' => "your app_id",
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' => "121321313",
//异步通知地址
'notify_url' => "324234",
//同步跳转
'return_url' => "23423423",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => "23423423423",
);
$price = $this->request->post('price');
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = rand(100000,99999999);
//订单名称,必填
$subject = '测试';
//付款金额,必填
$total_amount = $price;
//商品描述,可空
$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 function notify_url(){
$arr=$_POST;
$alipaySevice = new \AlipayTradeService($config);//这里引入的配置 如果懒得引入 就自己写一下demo中的配置
$alipaySevice->writeLog(var_export($_POST,true));
$result = $alipaySevice->check($arr);
if($result) {//验证成功
/
//请在这里加上商户的业务逻辑程序代
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
//商户订单号
$out_trade_no = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
} elseif ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//付款完成后,支付宝系统发送该交易状态通知
}
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
echo "success"; //请不要修改或删除
}else {
//验证失败
echo "fail"; //请不要修改或删除
}
}
就是这么简单,你学会了吗