• thinkphp整合系列之支付宝RSA加密方式


    thinkphp整合系列之支付宝RSA加密方式
    上篇博客写的是MD5加密方式;thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75

    但是呢;移动支付是没有MD5加密的;只能是RSA加密;

    long long ago;支付宝官方是没有给RSA加密的demo的;

    这次为了写博客整理代码的时候;竟然发现了官方给了一份demo;

    但是;竟然把MD5和RSA分成了2个SDK;

    好吧;这里给出的是二合一版的SDK;切换加密方式只需在配置项中设置下即可;

    示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

    一:导入sdk

    /ThinkPHP/Library/Vendor/Alipay

    这个sdk和上篇文章中的MD5加密方式的sdk是一套;



    二:配置项

    /Application/Common/Conf/config.php

        'ALIPAY_CONFIG'          => array(
            'partner'            => '', // partner 从支付宝商户版个人中心获取
            'seller_email'       => '', // email 从支付宝商户版个人中心获取
            'key'                => '', // key 从支付宝商户版个人中心获取
            'sign_type'          => strtoupper(trim('MD5')), // 可选md5  和 RSA 
            'input_charset'      => 'utf-8', // 编码 (固定值不用改)
            'transport'          => 'http', // 协议  (固定值不用改)
            'cacert'             => VENDOR_PATH.'Alipay/cacert.pem',  // cacert.pem存放的位置 (固定值不用改)
            'notify_url'         => 'http://baijunyao.com/Api/Alipay/alipay_notify', // 异步接收支付状态通知的链接
            'return_url'         => 'http://baijunyao.com/Api/Alipay/alipay_return', // 页面跳转 同步通知 页面路径 支付宝处理完请求后,当前页面自 动跳转到商户网站里指定页面的 http 路径。 (扫码支付专用)
            'show_url'           => 'http://baijunyao.com/User/Order/index', // 商品展示网址,收银台页面上,商品展示的超链接。 (扫码支付专用)
            'private_key_path'   => '', //移动端生成的私有key文件存放于服务器的 绝对路径 如果为MD5加密方式;此项可为空 (移动支付专用)
            'public_key_path'    => '', //移动端生成的公共key文件存放于服务器的 绝对路径 如果为MD5加密方式;此项可为空 (移动支付专用)
            ),

    既然是RSA加密方式;那主要就是来接收移动支付支付成功后的支付结果了;

    那么就不需要管return_url、show_url这两个参数了;

    RSA私钥及公钥生成方式在这:https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1

    需要强调的是注释中说的;路径要是php可以访问的绝对路径;

    三:接收异步通知

    我们是需要给移动端开发人员一个接收支付结果通知的url既notify_url;

    移动端支付成功后;支付宝的服务器会向我们指定的notify_url发送post通知;

    当判断支付成功后;就更改订单状态;

    /Application/Api/Controller/AlipayController.class.php

        /**
         * notify_url接收页面
         */
        public function alipay_notify(){
            // 引入支付宝
            vendor('Alipay.AlipayNotify','','.class.php');
            $config=$config=C('ALIPAY_CONFIG');
            $alipayNotify = new AlipayNotify($config);
            // 验证支付数据
            $verify_result = $alipayNotify->verifyNotify();
            if($verify_result) {
                echo "success";
                // 下面写验证通过的逻辑 比如说更改订单状态等等 $_POST['out_trade_no'] 为订单号;
                            
            }else {
                echo "fail";
            }
        }

    ok;到这里;支付宝的两种加密方式就整合完成了;

  • 相关阅读:
    TSQL--按某字段列分组,在将各组中某列合并成一行
    疑难杂症--SQL SERVER 2012下数据库内存异常回收
    TSQL--删除登陆相关的用户
    杂谈--一次”失败“问题处理过程
    layer.open如何关闭自身弹出窗口
    简单的Http请求数据保存到Hdfs
    layui栅格布局问题
    redis单机版安装
    redis详细配置文件
    批量修改mysql数据库引擎
  • 原文地址:https://www.cnblogs.com/CHEUNGKAMING/p/5706423.html
Copyright © 2020-2023  润新知