Thinkcmf对接支付宝支付和获取用户信息
一、 登录支付宝开放平台

二、 创建应用并申请上线
登录后,【进入我的开放平台】,依次点击【开发者中心】->【创建应用】(可以创建生活号或网页&移动应用)我这里申请的是网页&移动应用


创建时,需要设置接口加签方式,这里选择RSA2,然后下载生成签名的工具来生成公钥和私钥,操作步骤官网都有。记得把最后生成的公钥私钥保存起来。
应用网关是异步通知地址,授权回调地址是同步回调地址。

设置完之后,提交审核即可,审核需要1天时间。
审核通过后,记得添加应该用功能【获取会员信息】。↓↓↓↓↓↓


三、 下载支付宝SDK
我这边用的php版本的SDK,框架用的是thinkcmf。下载地址:https://docs.open.alipay.com/54/103419

下载后,将文件放在项目中。

Lotusphp_runtime文件夹和AopSdk文件是从手机网站支付SDK中得到的,下载地址:https://docs.open.alipay.com/203/105910/
以上准备完毕,下面是功能实现和代码。↓↓↓↓↓↓↓↓
四、 功能实现及代码
1、 获取用户信息
- 授权
支付宝授权地址:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=开发者应用的APPID&scope=接口权限值&redirect_uri=回调页面
上面的链接是正式环境下的支付宝授权地址,如果你使用的是沙箱测试号的话,授权地址中alipay改成alipaydev。
代码实现:
/**
* 阿里授权方法
*/
function ali_auth()
{
//appId
$appId = '****';
//回调地址(经过转义 的url链接,url必须以http或者https开头),这里的回调地址就是测试号中的授权回调地址
$url = '****';
//url转义
$url = urlencode($url);
//授权方式(目前只支持auth_userinfo和auth_base两个值)
$scope = 'auth_base';
//授权地址
$authUrl = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=" . $appId . "&scope=" . $scope . "&redirect_uri=" . $url;
header('Location: ' . $authUrl);
}
2.授权回调及获取用户信息
我这里用的是静默授权。
代码如下:
/**
* 授权回调方法(获取用户支付宝信息userid)
*/
function ali_receive()
{
//引入的SDK
Vendor('alipay.AopSdk');
Vendor('alipay.aop.AopClient');
Vendor('alipay.aop.request.AlipaySystemOauthTokenRequest');
Vendor('alipay.aop.request.AlipayUserUserinfoShareRequest'); $code = $_GET['auth_code']; //APPID
$appid = $_GET['app_id']; //应用私钥
$rsaPrivateKey = "***"; //支付宝公钥
$alipayrsaPublicKey = "***"; //初始化
$aop = new \AopClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $appid;
$aop->rsaPrivateKey = $rsaPrivateKey;
$aop->alipayrsaPublicKey = $alipayrsaPublicKey;
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset = 'UTF-8';
$aop->format = 'json'; //获取access_token
$request = new \AlipaySystemOauthTokenRequest();
$request->setGrantType("authorization_code");
$request->setCode($code);//这里传入 code
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
var_dump($result);exit;//静默状态下,到此就可以结束了
$access_token = $result->$responseNode->access_token; //获取用户信息
$request_a = new \AlipayUserInfoShareRequest();
$result_a = $aop->execute ($request_a,$access_token); //这里传入获取的access_token
$responseNode_a = str_replace(".", "_", $request_a->getApiMethodName()) . "_response";
var_dump($result_a);
$user_id = $result_a->$responseNode_a->user_id; //用户唯一id
//var_dump($user_id);
$headimgurl = $result_a->$responseNode_a->avatar; //用户头像
$nick_name = $result_a->$responseNode_a->nick_name; //用户昵称
}
2、 支付
我这边用的第三方公司的支付接口,所以我用他们接口给我返回的tradeNO参数,即可调起支付宝网页支付。JSAPI地址:http://myjsapi.alipay.com/alipayjsapi/index.html
通过支付宝api唤起支付宝付款,这类支付可以使用信用卡花呗支付,调用支付宝api:ap.tradePay,这个操作相当于直接唤起了支付宝选择银行卡支付那个页面。
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>支付</title>
</head>
<script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script>
<body onload="postdata()">
<script>
function postdata() {
ap.tradePay({
tradeNO: 'XXX'
}, function(res){
ap.alert(res.resultCode);
});
}
</script>
</body>
</html>
Thinkcmf对接支付宝支付和获取用户信息的更多相关文章
- app支付宝授权登录获取用户信息
由后台进行地址的拼接(前台进行授权) // 生成授权的参数 String sign = ""; Long userId1 = SecurityUser.getUserId(); S ...
- Java springboot支付宝小程序授权,获取用户信息,支付及回调
参考官方文档https://opendocs.alipay.com/mini/introduce/pay 支付宝小程序的支付和微信小程序的支付一样第一步都是要获取到用户的唯一标识,在微信中我们获取到的 ...
- 小程序wx.getUserInfo获取用户信息方案介绍
问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本 API和组件 - - - - 背景 小程序一个比较重要的能力就是获取用户信息,也就是使用 wx.g ...
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信 ...
- .NET微信开发通过Access Token和OpenID获取用户信息
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言. 本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息 ...
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
今天讲讲利用微信oauth2实现第三方登陆的实现方法. 先说说前提吧! 首先你得是服务号,并且是经过认证的.这样微信会给你很多第三方接口的权限,如果是订阅号或者没有认证的服务号那就不用想了! 一开始你 ...
- QQ登入(2)获取用户信息
private void initView() { mUserInfo = (TextView) findViewById(R.id.user_info); mUserLogo = (ImageVie ...
- [iOS微博项目 - 3.4] - 获取用户信息
github: https://github.com/hellovoidworld/HVWWeibo A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上 ...
- Laravel OAuth2 (一) ---简单获取用户信息
前言 本来要求是使用微信进行第三方登陆,所以想着先用 github 测试成功再用微信测试,可是最近拖了好久都还没申请好微信开放平台的 AppID ,所以就只写 github 的第三方登陆吧,估计微信的 ...
随机推荐
- 关于牛客网C语言结构体位域(bit-fields)的一道题
题目链接地址: https://www.nowcoder.com/questionTerminal/f4e20747a2dd4649bac0c028daa234f4 来源:牛客网 低地址字节 Byte ...
- HTML5视频(自定义视频播放器源码)
video对象 兼容情况: safari浏览器不支持webm格式 Chrome浏览器支持webm格式 ie8以及以下不支持video标签 , ie9支持video标签 ,但是支持mp4格式的 Fire ...
- Redis基础详解
1. Redis是什么.特点.优势 Redis是一个开源的使用C语言编写.开源.支持网络.可基于内存亦可持久化的日志型.高性能的Key-Value数据库,并提供多种语言的API. 它通常被称为 数据结 ...
- KVM命令--使用篇(1)
1. KVM常见使用命令: 1.1 查看命令 列出所有虚拟机 virsh list --all 显示虚拟机信息 virsh dominfo vm_name 显示虚拟机内存和cpu使用情况 virsh- ...
- 2019-08-23 纪中NOIP模拟A组
T1 [JZOJ2908] 矩阵乘法 题目描述 给你一个 N*N 的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第 K 小数. 数据范围 对于 $20\%$ 的数据,$N \leq 100$,$Q ...
- bfs(队列模板)
[题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. [输 ...
- WordPress 背后的故事竟然是这样
原文链接:The Story Behind the New WordPress.com 译者:杰微刊-Leo Xu 一年半以前,我们对使用 WordPress 构建网站所需要采用的技术和开发流程进行大 ...
- 用MyEclipse远程debug
第一步 编辑 tomcat下的文件startup.sh文件,我的路径是 /root/apache-tomcat-6.0.24/bin/startup.sh 命令:vim startup.sh将decl ...
- Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目,常用的项目如下 BeanUtils 提供了一系列对java bean的操作,读取和设置属性值等 map和bean的互相转换 我们 ...
- 逆战:微信小程序(一)
简介 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不用关心是否安 ...