支付宝api教程,支付宝根据交易号自动充值
最近公司要用php做一个网站支付宝自动充值的功能,具体就是客户把钱直接转到公司的支付宝账号里,然后在我们网站上填写上交易号,我们网站程序自动获取交易信息,自动给网站的账户充值。
我的具体想法就是利用支付宝的api根据交易号查找跟公司账号交易的信息,获取信息以后把金额、交易人、交易时间等信息存入网站数据库。
然后这两天就研究了一下支付宝的api,以前没用过支付宝的api,走了一些弯路,把经验记下,给后来者参考。
一、找接口
在找接口的过程中我发现阿里巴巴有两套接口。一套是支付宝api,简称Aop,只有企业实名认证的账户才可以申请。另一套是淘宝开放平台的api,简称Top,个人可以申请,有的接口也需要企业认证。这两套接口应该使用哪一个想必很好分辨了,跟支付宝有关就申请支付宝的Aop,跟淘宝相关的就申请Top。
我需要的是支付宝接口,就在支付宝文档里找想要的接口。alipay.user.trade.search
二、使用接口
怎么使用接口呢?在这两个平台上都是要创建应用,通过应用的id和一些token来获取权限,再进行相应的操作。这里我只用过支付宝的api,所以只说一下Aop的了。
打开控制面板创建应用。
创建完成以后,会分配一个App ID给你。当你修改应用的时候还提示你需要填写一个回调地址,回调地址是什么呢?暂且一等,一步一步的来。
当应用创建完了以后是需要根据App ID来进行用户授权的,要不然你没有权限获取用户账号的交易信息。
授权的地址是:
现在你就可以通过这个code来进行操作获取用户的authtoken。
authtoken是什么?authtoken是你在调用支付宝函数的时候需要传入的参数。
找到函数以后可以用测试工具获取测试代码示例:
https://sandbox.alipaydev.com/home/apiTestTools.htm?method=alipay.user.trade.search
代码说明:
$c = new AopClient;//AopClient是Aop的sdk里给出的工具类,首先实例化一个工具类对象
$c->appId = appId;//给对象appid赋值
$c->privateKey = rsaPrivateKeyFilePath;//给privatekey赋值,这里有个bug,就是AopClient里面根本没定义 privateKey这个属性,我擦。。坑爹的api,实际上是名为 rsaPrivateKeyFilePath的属性。。。这个属性是什么意思呢?这个就是openssl加密方式的私钥路径,私钥是需要放到你服务器上的。openssl在你配置应用的时候就让你配置了公钥,这里需要把私钥路径放到这里,openssl不知道啥意思看这个地址:https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236615_428849&type=info
$c->format = format;//这个format是格式,具体是分为"xml"和"json"
//总的来说上面这个AopClient就是相当于权限认证,系统根据appid和密钥文件验证你的权限
$req = new AlipayUserTradeSearchRequest();//这个地方是实例化了一个api具体请求方法类
$req->setEndTime("2015-2-7 00:07:37");//设置结束时间,具体就不说了
$req->setAlipayOrderNo("111");//交易号
$req->setStartTime("2015-2-7 00:07:35");//开始时间 $resp = $c->execute($req, authToken);//执行,这里要说一下,这个authtoken从哪里取啊。。这个就是比较坑爹的地方了,我找了半天才知道
//这个地方就是要调用一下alipay.system.oauth.token这个api来获取token,具体代码我放到下一个片段里
$c = new AopClient();
$c->appId = "102014123000022415";//应用id
$c->rsaPrivateKeyFilePath = APPLICATION_PATH . '/../public/res/rsa_private_keyShaxiang.pem';//设置密钥的路径
$c->format = "json";//指定格式 $req = new AlipaySystemOauthTokenRequest();//获取token的request
$req->setGrantType("authorization_code");//设置要操作的类型
$req->setCode("");//回调地址给你传回的code参数,code原来是用来生成authtoken的。。。好吧。。
$resp = $c->execute($req);//执行,很重要的一点,这个地方官方给的地代码实例传了一个AuthToken,其实这个方法不需要传AuthToken的,本来就是获取AuthToken的方法。。。这个函数是重载方法
echo "<pre>";
var_dump($resp);//打印一下,就看到 access_token这个属性了,就是它了,它就是AuthToken。。。
echo "</pre>";
听别的教程里说这个AuthToken有效期是一年。。不知道真假,待验证。有效期过了需要根据update_token来更新AuthToken,这个地方是获取token调用AlipaySystemOauthToken和更新AuthToken的详细介绍:
到这里就可以基本上搞定了这个获取信息的api了。。。
然后就可以利用各种request类来操作了,如下
$c = new AopClient();
$c->appId = "1020141230000224";//id
$c->rsaPrivateKeyFilePath = APPLICATION_PATH . '/../public/res/rsa_private_keyShaxiang.pem';
$c->format = "json";
$req = new AlipayUserTradeSearchRequest();//此处实例化各种请求就可以各种操作了
$req->setEndTime("2015-2-7 00:07:37");//设置结束时间,具体就不说了
$req->setAlipayOrderNo("111");//交易号
$req->setStartTime("2015-2-7 00:07:35");//开始时间 $resp = $c->execute($req, “201502BBa66dd2645f10418fb8ba1ef953a3dX”);//获取的AuthToken
返回的信息如下:
只是做一个指引。。。有不懂的问题可以咨询阿里旺旺“alipay开放平台”会有专门的技术人员给解答问题,不过自己能解决的尽量还是自己搞定吧。。
还有补充一下:他们有个沙箱测试这么一说,PHP下沙箱好像有些问题,强烈建议直接申请上线,然后修改api,上面的沙箱测试我也忘了为何成功了,之后用的时候都失败了,浪费了很多时间。总是获取私钥解析失败,有人说是因为给的私钥是经过pkcs8编码过的。有不懂的就多看几遍api,表示他们的api文档写的很烂唉。。。伤不起。。没有细节说明
2015-3-14补充:
最近有朋友说沙箱测试PHP获取不到auth_token,提示缺少sign参数。我又测试了一下,原因是在对回调地址的code处理时出了问题。私钥不能生成sign参数。Aopclient里面openssl_get_privatekey()这个方法返回false,换了openssl_pkey_get_private()还是不行。我当时可能是直接申请上线的。
估计是支付宝沙箱给出的私钥是经过PKCS8编码过的。参考一下:http://blog.csdn.net/zhouzme/article/details/38380621
建议大家直接应用上线吧,把Apache升级到2.29,openssl升级到1.02就可以通过安全监测了。
申请周期大概在四五个工作日。
支付宝api教程,支付宝根据交易号自动充值的更多相关文章
- ECSHOP 支付宝发货确认接口,记录支付宝返回的交易号
1,在order_info 数据表尾添加trade_no 字段 数据表尾怎么添加trade_no 字段 ECSHOP为了支付宝发货确认接口,需要记录支付宝返回的交易号 1,在order_info 数据 ...
- yii2 支付宝支付教程 [ 2.0 版本 ]
yii2 支付宝支付教程 [ 2.0 版本 ] 支付宝支付流程个人理解大致就这三步1.前台页面将支付信息数据通过立即支付按钮 ajax提交到订单处理层2.在订单处理层引用支付宝的接口 将支付数据写入 ...
- 支付宝api指南
tyle="margin:20px 0px 0px; line-height:26px; font-family:Arial"> 在这些服务中,服务类型大致可以分为以下几类: ...
- Python撸支付宝红包教程,行走在灰色产业边缘的程序员!
2018年刚到就作死撸羊毛(支付宝).2017年用分享给支付宝好友链接的官方通道"撸"了400大洋. 如许天天早上7:30便起床开愉快心的分享红包链接.200多个老友分享完一次 ...
- 支付宝-API接口解析-转账到银行
支付宝-API接口解析-转账到银行 扫码转账 测试地址 解析内容: alipays://platformapi/startapp?appId=09999988&actionType=toCar ...
- 支付宝API
1. 业务场景描述:在我们的爱旅行项目中,用户只有报名并且付款之后才能算作参加旅行团成功,因此必须提供快速便捷的支付功能:这里,我们选择了阿里的支付宝api来实现快捷支付,基于此,我们向蚂蚁金服发起申 ...
- 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...
- C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后 ...
- 【分享·微信支付】 C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后 ...
随机推荐
- UITabBarController详解
UITabBarController使用详解 UITabBarController是IOS中很常用的一个viewController,例如系统的闹钟程序,ipod程序等.UITabBarControl ...
- 找回丢失的SQL Server性能计数器
There was one time when I was delivering a Service using a tool that gathers performance data throug ...
- HDU 5501 The Highest Mark 背包dp
The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- 设计模式 - 策略模式(Strategy Pattern) 具体解释
策略模式(Strategy Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26577879 本文版权全 ...
- Android 访问权限设置记录-存档留着有用!
Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: <uses-permission android:name=”and ...
- procps工具集 ----Linux中的可用内存指的是什么?
https://gitlab.com/procps-ng/procps free - Report the amount of free and used memory in the system k ...
- 迷你template
JavaScript Micro-Templatinghttp://ejohn.org/blog/javascript-micro-templating/ //Simple JavaScript ...
- IIS 之 添加MIME扩展类型及常用的MIME类型列表
经常用IIS作为下载服务器的时候有时传上去的文件比如 example.mp4 文件名上传后,但是用http打开的时候确显示为 404 文件不存在.其实是IIS对文件的一种保护,不在IIS指定的MIME ...
- Android_sharePreference_ex1
xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...
- 修改UIBarButtonItem字体大小、颜色等相关属性
在ios中如果想修改UIBarButtonItem里面的内容有很多种方法,常见的就是自定义contentView 但是有时候因为懒不想自定义只想在原来的文字上进行修改 如果只是修改UIBarButt ...