开发文档地址:
https://openbank.abchina.com/Portal/serIntroduced/fastEtransfer.html

授权登录农行暂时是没有php版本,而且文档中API参数没有说明,示例传参有一些错误,下面我就来说说我遇到的坑

1.一般授权登录需要获取用户信息,首先要进行一下两步(具体获取看开发文档):

1.获取Authorization Code
2.通过Authorization Code获取Access Token

2.通过AccessToken获取用户的个人信息 :

访问资源服务器的接口使用方法,在访问特定的接口时需要在Header头部加入Authorization,值为”Bearer accessToken” 。

“encrypt_data”: “ENCRYPTDATA”,encrypt_data这个参数不是要你传 "encrypt_data"这个值,是传biz_data使用AES加密后的字符串

AES具体加密请查看我上一篇文章

代码详细说明请求接口参数传递加密及返回参数解密

public function getUserInfo(){$appSecret='';//查看自己的配置$key=substr($this->config['appSecret'],0,24);$iv = substr($this->config['appSecret'],24);$encrypt_data=$this->encrypt($data ['biz_data'], $key,$iv);$data ['sign_type'] = 'SHA256';$data ['timestamp'] = date("Y-m-d H:i:s",time());$data ['encrypt_data'] = $encrypt_data;$data ['encrypt_type'] = 'AES';$data ['nonce'] = $this->getRandom(32);//生成32位随机谁$data ['sign'] = $this->_makeSign($data);//使用私钥进行签名$api_url = ‘https://openbank.abchina.com/GateWay/openabc/api/ket/userinfo/v1‘;$result2 = $this->http_post2($api_url, $data, $header);$result2 = @json_decode($result2,true);if($result2['code'] == '0000' && $result2['biz_encrypt']){//对biz_encrypt解密$biz_encrypt = $result2['biz_encrypt'];$biz_encrypt_result =$this->decrypt($biz_encrypt,$key,$iv);$biz_encrypt = json_decode($biz_encrypt_result,true);if($biz_encrypt['RetCode'] == '0000'){$this->abcLogin($biz_encrypt);}private function getRandom($param){$str="0123456789abcdefghijklmnopqrstuvwxyz";$key = "";for($i=0;$i<$param;$i++){$key .= $str{mt_rand(0,32)};    //生成php随机数}return $key;}
//对数据进行签名
private function _makeSign(array $data){$signData = '';ksort($data);foreach ($data as $k => $v){if (!$v || $v==' ')continue;$signData .= $v.'@';}$signData = trim($signData, '@');$pkcs12=file_get_contents(‘test.pfx’);$keyPass = '******';//pfx证书密码;$certs=array();openssl_pkcs12_read($pkcs12,$certs,$keyPass)$privateKey = $certs['pkey'];//加密openssl_sign($signData, $signature, $pkey, OPENSSL_ALGO_SHA256);openssl_free_key($pkey);$signature = base64_encode($signature);return $signature;}
protected function http_post2($url, $data,$header = array()) {if(!is_array($data))return array();$data = @json_encode($data);$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$url);if($header){curl_setopt($ch, CURLOPT_HTTPHEADER,$header);}curl_setopt($ch, CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_TIMEOUT, 60);//超时时间$res = curl_exec($ch);curl_close($ch);return $res;}
//解密function decrypt($code,$key,$iv) {$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');mcrypt_generic_init($td, $key, $iv);$str = mdecrypt_generic($td, base64_decode($code));mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);mcrypt_generic_deinit($td);mcrypt_module_close($td);return $this->strippadding($str);}

PHP对接农行快e通授权登录相关推荐

  1. 记录农行快e通授权获取openId对接踩过的坑

    1 准备工作 :银行人员先建立测试产品  获取appid  appsercret  证书 2 会发送到你邮箱里一份demo 3 进入正题:将demo里的h5后台代码copy到自己项目里,或者直接执行当 ...

  2. PHP 农行快e通获取用户信息

    1.获取Authorization Code 2.通过Authorization Code获取Access Token 3.通过AccessToken获取用户的个人信息 注意:签名的时候是所有参数都要 ...

  3. 【JAVA】对接苹果授权登录流程

    背景 苹果公司要求所有使用第三方登录的 App,都必须接入Sign in with Apple. 接入方式 基于JWT identityToken的算法验证 基于授权码的验证 校验流程 上图为苹果对接 ...

  4. 淘宝授权登录对接文档

    对接淘宝授权登录 官方对接文档:https://open.m.taobao.com/doc.htm?spm=a219a.7386653.0.0.c549669anDR2sm#?treeId=420&a ...

  5. 干货|JustAuth三方账号授权登录免费搭建全流程

    三方登录的方式想必大家都很熟悉,基本健全的网页都会整几个入口,比如日常的微信.QQ,金融的支付宝,音视频的抖音.快手,码农领域的Github.Gitee等. 作为功能测试,我们就随机取一个简单的三方授 ...

  6. 亿美软通一键登录升级:扩大适用范围、更高安全保障

    时至今日,一键登录已不再是开发人员的"新宠",随着越来越多APP的应用,也在用户心中形成愈发强烈的感知:相比传统身份核验方式,一键登录的确"快"出了新速度. 一 ...

  7. 回顾篇:淘宝API web开发一 授权登录

    重新回顾了之前做的淘宝API模块,记录一下思路. (1) 在开始开发之前,先要注册成为一个开发者,创建自己的应用. 步骤在淘宝开发平台中http://open.taobao.com/doc/detai ...

  8. ios微信登录不上服务器,iOS微信授权登录

    首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录.支付等功能还涉及付费,具体申请流程就不再这里说了.到开放平台->管理中心->移动应用->查看应用,确认你 ...

  9. php中qq授权登录,ThinkPHP利用QQ互联实现网站第三方登录(QQ登录)

    接入QQ互联平台后,我们就可以让用户通过QQ帐号登录来登陆我们的网站,这样减少了注册的繁琐,可以更快 .更便捷的为了我带来更多的用户,下面我们一一起来看下如何通过QQ互联来实现第三方登录. ####申 ...

最新文章

  1. java编程石头剪刀布图片_石头、剪刀、布!10分钟带你打开深度学习大门,代码已开源...
  2. 华为5G手机芯片被唱衰:美研究机构拆解6款量产机,不谈能力对标高通骁龙X50...
  3. solr的认识、linux下安装、java下使用(含下载资源)
  4. CentOS 5.5升级网卡驱动
  5. idea redis 插件_Redis客户端RDM收费后,还有哪些开源的替代品呢?
  6. 视频 + PPT | 打开用户标签 “五扇门”,高效赋能银行业数字化运营
  7. 修改 mybatis-generator 中数据库类型和 Java 类型的映射关系
  8. 新版Microsoft Edge支持跨平台跨设备浏览
  9. 为什么空格拷贝到linux 会变成两个
  10. TIOBE 3月榜单:新功能将加入,C语言仍高居榜首
  11. Git命令之查看及设置用户名邮箱
  12. Leetcode——C++突击面试
  13. 第五章 神经网络和误差逆传播法算法(BP)的推导
  14. There are 1 missing blocks. The following files may be corrupted:
  15. No Target connected Target DLL has been cancelled(电压问题记录)
  16. 腾讯云灯塔计划——云行业研究报告
  17. 5.docker image (镜像)
  18. Bitmovin首席执行官Stefan:开发者正在构建视频产品的未来
  19. 我的第一台手提 | 关于你的第一台手提征文活动
  20. 微信公众号网页开发——实用真机调试

热门文章

  1. c语言字符串输入梳理总结
  2. 【数学建模】连续系统模拟实例: 追逐问题
  3. 员工计算机办公培训报道,加强工作技能学习 提高职工办公能力--县自然资源和规划局开展计算机技能培训...
  4. Unity:CritterAI与Recast Navigation寻路
  5. git commit 后出现了Aborting commit due to empty commit message。乐学偶得
  6. GCC编译工具集和nasm编译器
  7. java HashMap 与HashTable的区别
  8. php计算百分比值,请教一个计算百分比的语句
  9. 计算机蓝屏分析报告,终于有蓝屏报告了,请帮忙分析一下
  10. 微信公众平台开发-发送模板消息