搞完了微信搞支付宝~~~
还是先下载支付宝电脑网站支付demo,目录结构如下:
把demo文件夹放到tp5的 vendor 文件夹下面,重命名为alipay:
配置 config.php 的支付参数,去蚂蚁金服商家中心找,或者使用沙箱测试环境。注意签名方式要和私钥、公钥的签名方式相同。
<?php
$config = array (
//APPID。
'app_id' => "xxx",
//商户私钥
'merchant_private_key' => "xxx",
//异步通知地址
'notify_url' => "https://www.oyhdo.com/alipay/alinotify",
//同步跳转
'return_url' => "https://www.oyhdo.com/alipay/alinotify",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>'RSA2',
//支付宝网关 (我使用的沙箱环境)
'gatewayUrl' => "https://openapi.alipaydev.com/gateway.do",
//'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => "xxx",
);
设置 log.txt 权限为777,以便记录日志。
Alipay.php控制器:
<?php
namespace app\index\controller;
use think\Controller;
class Alipay extends Controller
{
public function index(){
header("Content-type:text/html;charset=utf-8");
$total_amount = input('post.total_amount');
if($total_amount){
//引入支付宝支付
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';
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = input('post.out_trade_no');
//订单名称,必填
$subject = input('post.goods_name');
//付款金额,必填
$total_amount = $total_amount;
//商品描述,可空
$body = input('post.goods_body');
//构造参数
$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);
}else{
$out_trade_no = 'ALPAY'.date('YmdHis'); //订单号
$goods_name = '在线支付'; //商品名称
$goods_body = 'test'; //商品描述
$this->assign('out_trade_no',$out_trade_no);
$this->assign('goods_name',$goods_name);
$this->assign('goods_body',$goods_body);
return view();
}
}
}
前台测试页面:
<!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="goods_name" value="{$goods_name}"/><br/>
付款金额:<input type="text" name="total_amount" /><br/>
商品描述:<input type="text" name="goods_body" value="{$goods_body}"/><br/>
<button type="submit">付 款</button>
</form>
</body>
</html>
扫码支付:
支付成功: