ThinkPHP支付功能对接

注:由于对接支付功能需要企业账户,这里测试用的是支付宝的沙盒环境

第一步:

打开支付宝开放平台:https://open.alipay.com/
登录后点击控制台->研发服务
点击研发服务
这里是支付宝为我们提供的测试账号和环境
在这里插入图片描述
直接用系统默认的就行
在这里插入图片描述
下载sdk(这里我用的是pc端支付):https://opendocs.alipay.com/open/270/106291/

第二步:

沙盒环境弄好后就开始实现我们的业务逻辑

  1. 把下载好的sdk放到对应得目录下
  2. 根据自己对应得填写,这里只做同步跳转在这里插入图片描述

接收前端传递过来得参数进行业务代码开发(这里用的是网页重定向方式如果没有被执行查看请求是否被浏览器拦截)

public function pay(){
        $money = input('money'); //接收参数
        $user_id = input('user_id');
        $validate = $this->validate($money,[ //参数验证
            'money|金额' => 'number'
        ]);
        if($validate !== true){
            $this->error($validate);
        }
        if(empty($money) || empty($user_id)){
            $this->error('充值失败','home/index/idnex');
        }
        //生成充值记录
        $order_sn = date('YmdHis').mt_rand(1111,9999);
        $data = [
            'user_id' => $user_id,
            'money' => $money,
            'add_time' => time(),
            'order_sn' => $order_sn
        ];
        $info = db('alpay')->insert($data);
        if(!$info){
            $this->error('充值失败','home/index/index');
        }
        //调用支付宝接口
        echo "<form name=traderefund id='alipayment' action='/plugins/alipay/pagepay/pagepay.php' method='post' style='display:none'>
        <input id='WIDout_trade_no' name='WIDout_trade_no' value='{$data['order_sn']}' />
        <input id='WIDsubject' name='WIDsubject' value='会员充值' />
        <input id='WIDtotal_amount' name='WIDtotal_amount' value='{$data['money']}' />
        <input id='WIDbody' name='WIDbody' value='会员充值记录' />
        </form><script>document.getElementById('alipayment').submit();</script>";

        
    }

请求成功后会有一个同步跳转(在这里实现你的业务逻辑操作)

public function callback(){
        $params = input();
        //修改订单状态
        $status = db('alpay')->where('order_sn',$params['out_trade_no'])->update([
            'status'=> 1,
            'pay_time' => time()
        ]);
        
        if($status){
            $row = db('alpay')->where('order_sn',$params['out_trade_no'])->field('user_id,money')->find();
            //修改会员余额
            db('member')->where('id',$row['user_id'])->setInc('balance',$row['money']);
            //增加一条至今变动记录
            db('account_log')->insert([
                'user_id' => $row['user_id'],
                'money' => $row['money'],
                'change_type' => 1,
                'change_time' => time(),
                'change_desc' => '会员充值'
            ]);
        }
        //修改会员余额
        
        return view('callback',['money'=>$params['total_amount']]);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
thinkphp5 可以通过支付宝开放平台的 SDK 来对接支付支付功能。首先,我们需要在 thinkphp5 的项目中引入支付宝 SDK,可以通过 Composer 来安装 SDK,或者手动下载 SDK 的包来引入。接下来,我们需要在项目中配置支付支付相关的参数,如支付宝的AppID、App 私钥、支付宝公钥等。这些参数可以在支付宝开放平台开发者中心进行获取。 在配置好参数后,我们可以在 thinkphp5 的控制器中编写代码来实现支付支付功能。一般来说,支付支付的流程包括生成支付订单、跳转到支付页面、支付成功回调等步骤。我们可以通过调用支付宝 SDK 提供的相关方法来完成这些步骤。 首先,我们可以使用 SDK 提供的方法来生成支付订单,并将订单信息保存在数据库或其他地方。然后,我们可以使用 SDK 提供的方法来生成支付表单,将用户重定向到支付宝的支付页面上。用户在支付页面上完成支付后,支付宝会将支付结果返回给我们的网站,我们可以通过配置支付宝回调地址,并编写回调方法来接收支付结果。 在接收到支付结果后,我们可以根据支付结果更新订单的状态,并做相应的业务逻辑处理。例如,如果支付成功,我们可以将订单状态改为已支付,并向用户展示支付成功的页面。 综上所述,通过引入支付宝 SDK,配置相关参数,编写相应的代码,我们就可以在 thinkphp5 中实现支付支付功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值