最近比较忙,一直没有时间给大家发技术文章,为了补偿大家,把支付宝wap支付接口放给大家。感谢大家一直以来对我的关注和支持。下面说一下接入步骤。
1,首先是接口代码下载地址,两个地址都可以下载
1)更多产品中,打开快捷支付图标,选择技术集成里面有代码下载:https://b.alipay.com/newIndex.htm
2)相关接口资料下载地址:http://club.alipay.com/read-htm-tid-9976972.html
2,测试dmeo
Wap接口支持两种签名方式,MD5和rsa,现在先以MD5为列,后面介绍rsa的。这个接口有三种语言,目前就这三种语言demo,其他语言的话需要自己写下了。现在以php为例,其他语言的配置顺序也是一样的。
1)找到alipayconfig这个文件,这个是一个配置文件,MD5需要在里面填写账号和key
打开后的页面,各个语言文件后缀名不一样,文件名都差不多的
2)配置好这个页面就可以测试支付了,如果想支付后再返回到一个页面,那就把call_back_url这个参数设置下,在alipayapi页面
这里需要注意的是java和c#需要导入工程,这里就不示范了,如果有编译问题,可以自己排查下,dmeo本身不存在这个问题的。我们建议真机测试,用火狐上的模拟手机浏览器也可以,如果模拟环境报错,再用真机测试下,输入index页面地址就可以测试了
点“确认”就到收银台了
支付成功后会返回到call_back_url页面
我这里设置的百度,支付后返回到了百度的页面
这个是地址栏中的返回参数
到这里就MD5就测试ok了,如果你在测试中出现“缺少参数”等错误就是配置的问题,重新配置测试。
下面来说下rsa的测试过程,我这里要把php和java、c#语言分开,只有php的公私钥使用
比较特殊,其他语言的一样的,那我们说下php的rsa签名过程
1)先生成php rsa签名用的公私钥,其实在规则文档中已经有写明的,但是很多商户还是在这方面出现问题,我觉得应该是文档写的还不够具体,那我这里一步一步演示下:
2)打开opensSL文件,打开bin
3)打开生成命令txt文件和bin下的opensSL.exe:
4)这样就可以把生成命令输入到opensSL中了,三条命令输入后是这样滴:
红色框中的命令生成的从上到下的顺序的商户私钥pem文件和商户公钥pem文件,绿色框中的是转过pkcs8的商户私钥
5)然后我们返回到bin里面看下
里面多了两个红色框中的文件,绿色是我整理后的文件,可以先不看,rsa_private_key.pem这个是我们php接口key文件中需要的内容,把里面的内容原样放在key文件rsa文件中,注意复制进去的时候前后不要有空格。rsa_public_key.pem这个文件中的内容是我们要上传的内容,打开这个文件
6)需要做的一步是把商户公钥格式改下:
删除文件头“-----BEGIN PUBLIC KEY-----”与文件尾“-----END PUBLIC KEY-----”及空格、换
行。最后得到一行字符串并保存该txt文件为“public_key.txt”。样例就是这样滴:
(因为去掉公钥中的开头和结尾注释的话比较长我这里把文件放小了,不是换行!真实中就
是一行的)
是我之前绿色框中的rsa_public_key.txt文件了,这个文件到这里上传:
7)上传商户公钥路径:https://ms.alipay.com/index.htm--我的商家服务--账号信息(右上角)--密钥管理(注意不要点到b.alipay.com)
8)上传后,从页面上复制下来支付宝公钥,复制下来的支付宝公钥中有两个空格的,把空格去掉并换成换行,加上前后缀放在key文件中的支付宝公钥pem文件中即可。
整理好后类似这样的格式,注意:前后都是没有空格的,放在key文件中
9)现在就可以准备测试了,还有一步就是配置config文件,账号配置,key就不用配置,把之前改成MD5的参数改回0001,用默认的值
然后就可以测试了,测试流程跟MD5一样的,这里就不再截图了,如果在支付的过程中出现缺少参数等错误,还是配置的问题 ,重新生成公私钥重新上传。
我们来讲下java和c#的rsa测试过程,
我们看下4)这个图
ava 和c#跟php唯一不同的就是秘钥的格式,java用绿框中的转过pkcs8的商户私钥,商户公钥上传地址和格式跟php的是一样的,复制下来支付宝公钥后,去掉空格保存成一行放在demo中,其他的就每有什么不同了,好的,大家可以测试下了。
在调试过程中遇到最多的就是“参数缺失”这个已经讲过了,是配置的问题,单独测试dmeo一般是token没有获取到,如果已经集成到自己的代码中了,最好把请求参数打印出来看下。
还有一个就是验签失败,同步的验签失败主要有三个原因:一个是支付宝公钥错误,一个是自定义参数(尤其是thinkphp,这个系统会自己加个_url_这个参数影响签名),还有一个就是乱码,这些都可以一个个排查,比较难排查的是异步notify url验签失败,当然这个原因也涉及到支付宝公钥错误,自定义参数和乱码,还有一个就是顺序,验签的时候需要排序的,因为hashmap的功能根据jdk版本不同他也不一样,所以有些商户会出现验签的参数顺序的倒序的,这个可以把排序后的参数打印出来检查很容易发现,换linkhashmap或者其他方法都可以,最后要告诉大家,我们的dmeo中有日志语句,在类文件中的alipaynotify页面,注释去掉后,根据日志中的内容调试。
易生科技www.eeeson.com /PHP外包/开发/定做/企业应用/CMS/CRM/OA/美工设计/网站logo/java定做/flash/运维,八年企业应用 PHPZendFramework开发经验团队开发/程序/美工/技术大牛,纯源码,手工,保证程序质量,稳定高效....
http://www.eeeson.com
备注:杭州地区项目长久可以面谈.
联系QQ:1176818244.