tp框架接入支付宝公钥证书支付+回调

了解支付宝支付之前先要了解电子商务,电子商务就是,把在先下购物,放到互联网上,人们可以通过网页或者手机直接的看到商品。
电子商务的模式分为很多,

  1. B2B(企业对企业,例如阿里巴巴)
  2. B2C (企业对个人例如京东)
  3. C2C(个人对个人淘宝等)
  4. O2O(线上与线下例如,滴滴打车,顺风滴滴等)

而电子支付也是应电子商务的存在。用来解决在上线购买的支付问题。

支付宝流程

1.注册支付宝账号(ps|个人或企业)
2.接入电脑支付产品(ps企业支付宝账号需要进行签约)
3.创建应用(ps在开放平台)
4.配置秘钥
5.开发调试
看不懂的点击进入B站视频教程

tp框架接入支付宝支付

你好!有很多人在接入支付宝支付时无从下下手,那么在本篇文件,带你详细的了解并实现支付宝支付,废话不多说,咱们开始

第一步 下载demo

请自行注册开发者账号。

  1. 进入支付宝开放平台,文档中心》APP支付》下载SDK&Demo,放到tp框架的Vendor中
    在这里插入图片描述

4.配置文件
在tp框架中配置接入支付宝需要的配置的参数

 //支付宝 支付配置
    'ALI_CONFIG'  => array(
        'gatewayUrl'            => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)'
        'appId'                 => 'appIDappIDappIDappIDappIDappIDappID',//APPID即创建应用后生成
        //由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串
        'rsaPrivateKey'         =>  'AfewqFEWfefedwfewfewfewfewfewfewfwefewfewfeefwef',
        //支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串
        'alipayrsaPublicKey'    =>  'ewqdwqfwqdfwqfwqfwqfqwfwqfwqfwqfwqfwqferagrGERW',
        )
  1. 控制器代码
    调用alipay之前可根据自己的业务需求传入相应的参数,如我添加了一个订单,我把订单号传入do_alipay的方法中去进行支付,在回调中修改订单状态。进而完成支付。
    公钥证书支付
//支付宝支付
	/*
	* @param $order_no 订单号
	* @param $title 标题
	* @param $price 价格
	* @param $notify 回调地址
	*/
    public function alipay($order_no,$title,$price,$notify)
    {
        //加载支付文件
        require_once root_path() .'/vendor/Alipay/aop/AopCertClient.php';
        require_once root_path() .'/vendor/Alipay/aop/AopCertification.php';
        require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeQueryRequest.php';
        require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeWapPayRequest.php';
        require_once root_path() .'/vendor/Alipay/aop/request/AlipayTradeAppPayRequest.php';
        $appCertPath = "alipay/appCertPublicKey.crt";//应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt
        $alipayCertPath = "alipay/alipayCertPublicKey_RSA2.crt";//支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt
        $rootCertPath = "alipay/alipayRootCert.crt";//支付宝根证书路径(要确
        $out_trade_no = $order_no;//订单号
        $body = $title;//商品名
        $subject = $title;//商品介绍
        $order_amount = $price;//总价

        $aliConfig = Config('app.ALI_CONFIG'); //加载配置项
        $aop = new \AopCertClient();
        $aop->gatewayUrl = $aliConfig['gatewayUrl'];  //赋值网关
        $aop->appId = $aliConfig['appId']; //APPid
        $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; //私钥
//        $aop->alipayrsaPublicKey= $aliConfig['alipayrsaPublicKey'];  //支付宝公钥
        //调用getPublicKey从支付宝公钥证书中提取公钥
        $aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
        //是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
        $aop->isCheckAlipayPublicCert = true;
        //调用getCertSN获取证书序列号
        $aop->appCertSN = $aop->getCertSN($appCertPath);
        //调用getRootCertSN获取支付宝根证书序列号
        $aop->alipayRootCertSN = '687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6'; //固定值2028年之前不变
        $aop->apiVersion = '1.0';
        $aop->postCharset='UTF-8';
        $aop->format='json';
        $aop->signType='RSA2';
        $request = new \AlipayTradeAppPayRequest();
        $bizContent = "{"."\"body\":\"$body\","."\"subject\":\"$subject\","."\"out_trade_no\":\"$out_trade_no\","."\"timeout_express\":\"90m\","."\"total_amount\":\"$order_amount\","."\"product_code\":\"QUICK_MSECURITY_PAY\""."}";
        $request->setBizContent($bizContent);
        $request->setNotifyUrl($notify);//这里是设置回调方法
        //$request->setReturnUrl($aliConfig['returnUrl']);
        // pageExecute 是PC和手机网站 有页面输出
        // Execute  API调用 没页面输出
        // SdkExecute APP服务端的
        // $result = $aop->pageExecute($request);//pc端
        $result = $aop->sdkExecute($request);
        return $result;
    }
  1. 回调方法 回调验签公钥证书验签

回调方法 我在里获取了订单号 对订单号修改了状态

//支付异步回调地址
    public function notify_alipay()
    {
        $param = $this->request->param();
        //支付宝证书验签
        require_once root_path() .'/vendor/Alipay/aop/AopCertClient.php';
        $aop = new \AopCertClient();
        //证书路径
        $alipayCertPath = "alipay/alipayCertPublicKey_RSA2.crt";
        //支付宝公钥赋值
        $aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
        //编码格式
        $aop->postCharset="UTF-8";
        //签名方式
        $sign_type="RSA2";
        //验签代码
        $flag = $aop->rsaCheckV1($param, null, $sign_type);
    
            if ($flag == true){

                echo 'success';
            }else{
                echo 'error';
            }
        }
  1. 回调地址 可以为域名/模块名/控制器/方法
  2. 码字不易,求点赞
  3. 如果任何侵权行为请联系管理员删除
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值