tp5第三方支付-支付宝

本文介绍了如何在ThinkPHP5框架下集成支付宝支付接口。通过创建一个隐藏的HTML表单进行支付请求,并设置订单ID、商品名称、金额等信息。支付成功后的同步回调方法进行了详细说明,包括接收参数、签名验证及验签成功后的处理流程。
摘要由CSDN通过智能技术生成

返回的html页面

"<form id='alipayment' action='/plugins/alipay/pagepay/pagepay.php' method='post' style='display:none'>
    <input id='WIDout_trade_no' name='WIDout_trade_no' value='订单ID'/>
    <input id='WIDsubject' name='WIDsubject' value='什么订单' />
    <input id='WIDtotal_amount' name='WIDtotal_amount' value='订单金额'/>
    <input id='WIDbody' name='WIDbody' value='。。。。' />
</form><script>document.getElementById('alipayment').submit();</script>"

同步回调方法

public function callback()
    {
        //参考/plugins/alipay/return_url.php
        //接收参数
        $params = input();
        //参数检测(签名验证)  接收到的参数 和 支付宝传递的参数 是否发生改变
        require_once("./plugins/alipay/config.php");
        require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';
        $alipaySevice = new \AlipayTradeService($config);
        $result = $alipaySevice->check($params);
        if($result){
            //验签成功
           
            //展示结果
           。。。。。。。。
        }else{
            //验签失败
            //展示结果
           。。。。。。。
        }

    }

public function pay()
{
    //接收参数
    $params = input();
    //检测参数
    $validate = $this->validate($params, [
        'order_sn' => 'require',
        'pay_code|支付方式' => 'require'
    ]);
    if($validate !== true){
        $this->error($validate);
    }
    //查询订单
    $user_id = session('user_info.id');
    $order = \app\common\model\Order::where('order_sn', $params['order_sn'])->where('user_id', $user_id)->find();
    if(!$order){
        $this->error('订单不存在');
    }
    //将选择的支付方式,修改到订单表
    $pay_type = config('pay_type');
    $order->pay_code = $params['pay_code'];
    //$order->pay_name = config('pay_type.' . $params['pay_code'])['pay_name'];
    $order->pay_name = $pay_type[$params['pay_code']]['pay_name'];
    $order->save();
    //支付(根据支付方式进行处理)

}

/**
 * 页面跳转 同步通知地址  get请求
 */
public function callback()
{
    //参考/plugins/alipay/return_url.php
    //接收参数
    $params = input();
    //参数检测(签名验证)  接收到的参数 和 支付宝传递的参数 是否发生改变
    require_once("./plugins/alipay/config.php");
    require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';
    $alipaySevice = new \AlipayTradeService($config);
    $result = $alipaySevice->check($params);
    if($result){
        //验签成功
        $order_sn = $params['out_trade_no'];
        $order = \app\common\model\Order::where('order_sn', $order_sn)->find();
        //展示结果
        return view('paysuccess', ['pay_name' => '支付宝', 'order_amount'=>$params['total_amount'], 'order' => $order]);
    }else{
        //验签失败
        //展示结果
        return view('payfail', ['msg' => '支付失败']);
    }

}

//支付方式
'pay_type' => [
    'alipay' => ['pay_code'=>'alipay', 'pay_name'=>'支付宝', 'logo'=>'/static/home/img/_/pay2.jpg'],
    'wechat' => ['pay_code'=>'wechat', 'pay_name'=>'微信支付', 'logo'=>'/static/home/img/_/pay3.jpg'],
    'union' => ['pay_code'=>'union', 'pay_name'=>'银联', 'logo'=>'/static/home/img/_/pay4.jpg'],
],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值