ThinkPHP5.0集成支付宝扫码支付(PC端)

相关文章:ThinkPHP5.0集成微信扫码支付(PC端)

搞完了微信搞支付宝~~~

还是先下载支付宝电脑网站支付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>


扫码支付:

支付成功:

lws博客
评论功能尚未完善
  • 最新评论
  • 总共0条评论
  • 个人开源博客网站 © 2017-2019 李维山博客 版权所有 备案号:冀ICP备18008903号-1
  • 联系邮箱:666@oyhdo.com