ThinkPHP5.0集成支付宝扫码支付
首先,下载支付宝提供的demo。
下载demo,目录结构如下:

把 alipay.trade.wap.pay-PHP-UTF-8文件夹拿出来,放到tp5根目录 vendor 文件夹下,重命名为alipay:

配置config.php内的内容
<?php $config = array ( //应用ID,您的APPID。 'app_id' => "2016102212345813", //商户私钥 'merchant_private_key' => "MIIEvQIBADAN HQL9bkGvrVR/R2QlXFMSBD+HTtH2qjY=", //异步通知地址 'notify_url' => "http://域名/Pay/Alipay/notifyUrl", //同步跳转 'return_url' => "http://域名/Pay/Alipay/returnUrl", //编码格式 'charset' => "UTF-8", //签名方式 'sign_type'=>"RSA2", //支付宝网关 //'gatewayUrl' => "https://openapi.alipay.com/gateway.do",//正式支付地址 'gatewayUrl' => "https://openapi.alipaydev.com/gateway.do",//沙盒支付地址 //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 'alipay_public_key' => "MIIBIj gD3ogRaVNGHdQIDAQAB", );
添加Alipay.php控制器

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Db;
class Alipay extends Controller
{
public function index(Request $request){
header("Content-type:text/html;charset=utf-8");
require_once VENDOR_PATH.'/alipay/config.php';
require_once VENDOR_PATH.'/alipay/pagepay/service/AlipayTradeService.php';
require_once VENDOR_PATH.'/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$param = $request->param();
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = trim($param['out_trade_no']);
//订单名称,必填
$subject = trim($param['subject']);
//付款金额,必填
$total_amount = trim($param['total_amount']);
//商品描述,可空
$body = trim($param['body']);
//公用回传参数
// $passback_params = http_build_query($param['purchaseInfo']);
//$passback_params = urlencode($param['buyer']);
//构造参数
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
//电脑网站支付请求
$aop = new \AlipayTradeService($config);
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
//输出表单
var_dump($response);
}
/**
* 异步
* @param Request $request
* @throws \Exception
*/
public function notifyUrl(Request $request){
$param = $request->param();
require_once VENDOR_PATH.'/alipay/config.php';
require_once VENDOR_PATH.'/alipay/pagepay/service/AlipayTradeService.php';
require_once VENDOR_PATH.'/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$alipaySevice = new \AlipayTradeService($config);
$alipaySevice->writeLog(var_export($param,true));
$result = $alipaySevice->check($param);
if($result) {
//验证成功
$out_trade_no = urldecode($param['out_trade_no']);
if($param['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//付款完成后,支付宝系统发送该交易状态通知
}
echo "success";
}else {
//验证失败
echo "fail";
}
}
/**
* 同步
* @param Request $request
* @throws \Exception
*/
public function returnUrl(Request $request){
$param = $request->param();
require_once VENDOR_PATH.'/alipay/config.php';
require_once VENDOR_PATH.'/alipay/pagepay/service/AlipayTradeService.php';
require_once VENDOR_PATH.'/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$alipaySevice = new \AlipayTradeService($config);
$result = $alipaySevice->check($param);
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
4、验证app_id是否为该商户本身。
*/
if($result) {
//验证成功
echo "验证成功";
}
else {
//验证失败
echo "验证失败";
}
}
}
?>
添加自己处理数据的方法
web页面
<!DOCTYPE html>
<html>
<head>
<title>alipay_test</title>
</head>
<body>
<form name=alipayment action="{:url('Alipay/index')}" method="post" target="_blank">
商户订单号:<input type="text" name="out_trade_no" value="{$out_trade_no}" /><br/>
订单名称:<input type="text" name="subject" value="{$subject}"/><br/>
付款金额:<input type="text" name="total_amount" value="{$body}" /><br/>
商品描述:<input type="text" name="body" value="{$body}"/><br/>
<button type="submit">付 款</button>
</form>
</body>
</html>
效果:

众生皆苦,喜从何来。心有极乐,则身处极乐,心有地狱,则身处地狱

浙公网安备 33010602011771号