做的项目用到支付宝及时到账,后来再去支付宝看时,首页改版了,找了半天,先总结如下
首先需要签约:
方式一:在线申请
申请地址(即时到账收款):https://b.alipay.com/order/productDetail.htm?productId=2015110218012942
提交申请后,会有一个审核阶段,审核通过才能使用该接口。
登录b.alipay.com->我的商家服务,可在“签约管理”中查看审核进度。
方式二:开放平台创建应用
- 登录开放平台——管理中心,选择“创建应用”,选择“自用型应用——网页应用”。
- 填写应用名称,提交后,会跳转到提示等待审核的页面,审核时间为两个工作日内。
-
应用审核通过后,在“功能信息”页找到“即时到账”功能,点击“申请开通”。
然后获取PID及密钥:
获取PID
更新时间:2017/01/10 访问次数:94080 1.开发者登录支付宝开放平台,点击右上角的“账户中心”。
2.选择“mapi网关产品密钥”,即可查询到合作伙伴身份(PID),以2088开头的16位纯数字。
可以操作了,快速接入:
1.DEMO下载
下载即时到账接口DEMO,内含JAVA、PHP、CSHARP三种编程语言,以及MD5和RSA两种签名方式的DEMO
<a href="http://aopsdkdownload.cn-hangzhou.alipay-pub.aliyun-inc.com/demo/alipaydirect.zip?spm=a219a.7629140.0.0.ZXTiAo&file=alipaydirect.zip" >下载DEMO</a>
2.配置DEMO中的开发者信息
说明:调用接口时需要开发者信息。
编程语言 | 配置文件路径 |
JAVA | 找到目录下src->com->alipay->config->AlipayConfig.java文件并打开。 |
PHP | 找到目录下alipay.config.php文件并打开。 |
.NET | 找到目录下app_code->AlipayConfig.cs文件并打开。 |
在配置文件中找到以下参数进行对应配置:
partner | 合作者身份ID,签约账号,当你成为支付宝的签约用户时会分配一个以2088开头由16位纯数字组成的字符串,参见本文档“获取PID”。 |
seller_id | 收款支付宝账号,一般情况下收款账号就是签约账号,使用partner即可。 |
-
若您选择MD5签名方式,请根据以下内容配置:
key MD5安全校验码,详见本文档“配置密钥——查看MD5密钥(Key)”。
-
若您选择RSA签名方式,请根据以下内容配置:
private_key - 在本地生成商户自己的RSA私钥和公钥->详见本文档“配置密钥——配置RSA密钥”;
- 将生成的公钥去掉“-----BEGIN PUBLIC KEY-----”和“-----END PUBLIC KEY-----”且去空格去回车,上传到支付宝->详见本文档“配置密钥——配置RSA密钥”。
注:JAVA将生成的原始私钥转PKCS8格式后,去掉“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”且去空格去回车填写在此。
PHP和.NET使用原始私钥格式,去掉“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”且去空格去回车填写在此。alipay_public_key 此处是支付宝公钥,不是商户刚刚生成的公钥,用于验证返回回调信息,详见本文档“配置密钥——配置RSA密钥”。
注:DEMO已经配置,无需修改。
3.运行DEMO
配置完成并且放至对应环境(环境需要自己搭建)服务器,即可运行DEMO,进行支付体验。
- JAVA:JDK1.5以上。
- .NET:framework 3.5以上
- PHP:PHP5.0以上,且需要开启CURL服务、SSL服务。
- 商户端是否有对DNS设置,是否有做防火墙策略。
- 是否有限制端口,需要开通的端口:80或443。
4.配置同步返回和异步回调
配置同步返回(同步跳转通知)和异步回调(异步通知)。在配置文件中有return_url和notiry_url两个参数,可分别配置到DEMO中的return_url页面和notify_url页面。
注意:DEMO两个页面的处理区别在于以下两点,其他相同。
- 同步返回使用GET方式获取,异步通知使用POST方式获取;
- 同步返回验证有1分钟超时,异步通知验证没有时间限制。
以JAVA版DEMO异步通知页面处理逻辑为例
- 使用POST方式接收所有数据
- 将数据使用AlipayNotify.verify() 验签方法验证。
(1)验证签名是否正确。
(2)验证是否是支付宝发来的通知。 - 通过返回参数中的trade_status字段(交易状态)判断并可写入执行业务逻辑代码。
- 使用out.print("success"); 打印success。不可有其他任何HTML代码。
注:notify_url页面只能返回success,异步通知页面上不可有任何HTML代码。支付结果请以异步通知为准。
最后需要确认是否是https,如果是https,那么需要安装ssl证书,证书要求如下:
要求“正规的证书机构签发,不支持自签名”,如果不理解请咨询证书供应商。
域名证书检测地址参考:https://cryptoreport.websecurity.symantec.com/checker/