关于支付宝API

source:http://www.cnblogs.com/zhangyi85/archive/2008/11/12/1332326.html

[原]关于支付宝API开发的一点心得

支付宝(www.alipay.com)的产生的确对于促进网络支付的确起到了很大的推动作用,笔者就在目前自己使用支付宝API接口开发中,遇到的一些问题,解决办法,做了简短的记录,由此与大家共分享,由于作者水平有限,难免出现错误,请大家指出,谢谢。

目前,申请支付宝接口主要有两种方式,1.免费接口,淘宝抽取手续费2%;2.付费接口,比如600元允许48000元交易金额的配额等,笔者使用的是前者,免费接口。在免费接口中,又分为两种,标准双接口交易类型和即时到账交易,这两种支付方式中,前者为淘宝担保交易+即时到账交易,而后者仅仅为即时到账交易,可根据自己的需要进行申请。

具体申请的过程在这里就不赘述了,如有需要,可以通过留言的方式,我会告知您。

支付接口申请成功后,会的到两个重要的参数支付宝安全校验码(key)和合作伙伴id(partner),这两个参数起到了支付是否成功的重要作用,申请成功后,都可以在支付宝后台商家工具中获得。

支付宝的原理其实就是通过浏览器传参数到支付网关(https://www.alipay.com/cooperate/gateway.do),支付网关是由Struts构建的,笔者感觉是通过ActionForm获得浏览器参数,进行内部解析的,浏览器传的参数都进过了MD5加密处理。

笔者遇到的第一个问题:
HAS_NO_PRIVILEGE,在官方给出的API介绍中是这样解释的:“该错误提示的是,您没有使用该接口的权限,那么登陆自己的支付宝账户,商家工具,查看实物交易服务或者虚拟物品交易服务,如果没有申请,请立刻申请并且当时开通。”我很肯定的是我已经开通了服务,那么问题就不是出在这儿,仔细查阅了API发现,在service的参数中,设置错误了,所以,在以后的开发中请注意,如果您选择的是:
标准双接口交易->service=trade_create_by_buyer
即时到帐交易->service=create_direct_pay_by_user
这里一定要填写正确,否则就会出现没有权限这样的问题,这里请注意一下。

笔者遇到的第二个问题:
支付成功了,但是总是返回的错误页面,首先请看下面的代码:

Code
……
//生成Md5摘要;
string mysign = GetMD5(prestr.ToString(), _input_charset);

string sign = Request.QueryString["sign"];

if (mysign == sign && responseTxt == "true") //验证支付发过来的消息,签名是否正确
{
Response.Write(
"success"); //返回给支付宝消息,成功

}
else
{
Response.Write(
"fail");
}

……

这里如果mysign和responseTxt为flase,则会显示错误信息,这是由于在Return页面中,没有设置支付宝安全校验码(key)和合作伙伴id(partner),解决方法,在page_lode中加入常量:
String key = "xxxxxxxxxxxxxxxxx";//你的安全效验码
String partner = "xxxxxxxxxxxxxx";//你的合作伙伴id;

这样,加入后,当付款成功时,就会返回到正确的Success了!

笔者使用的是.net版的支付方式,Java版也许会有所不同,不过原理应该和这个是一样的,我已经下载了官方给出的Java实例,待看后与大家分享经验心得。

欢迎拍砖:)

posted @ 2008-11-12 21:05 张谊 阅读(1682) 评论(17)   编辑 收藏 网摘 所属分类: ASP.net

   回复   引用   查看     
#1楼  [ 楼主]2008-11-12 21:06 | 张谊       
实物商品交易服务集成技术文档.pdf,商家工具.pdf这两个文档建议大家下载下来仔细阅读,这里详细的阐述了支付宝接口开发的详细过程。

   回复   引用   查看     
#2楼  2008-11-12 21:57 | T2噬菌体       
谢谢分享
   回复   引用   查看     
#3楼  2008-11-12 22:04 | Jason Cui       
现在好像没地儿申请免费的了。
   回复   引用     
#4楼  2008-11-12 22:49 | 2343为 [未注册用户]
楼主就一傻X,明明是转的,写自己原创。

而且,早就不能用了。
   回复   引用   查看     
#5楼  2008-11-13 08:24 | 郄坚锐       
我说这种东西 看他提供的文档比你的清楚多了
   回复   引用   查看     
#6楼  2008-11-13 09:01 | 玉开       
关注一下,这个很有用。
   回复   引用   查看     
#7楼  2008-11-13 09:22 | 阿牛 - 专注Web开发       
能不能说说其他银行接口的编程知识.谢了.
   回复   引用     
#8楼  2008-11-13 10:09 | zcr11 [未注册用户]
支付宝安全校验码(key)和合作伙伴id(partner)

支付宝后台商家工具中获得
??
怎么没有这项的
   回复   引用     
#9楼  2008-11-13 11:32 | ziyouyong [未注册用户]
是啊,好像没有免费的接口了啊
   回复   引用   查看     
#10楼  [ 楼主]2008-11-13 11:42 | 张谊       
--引用--------------------------------------------------
2343为: 楼主就一傻X,明明是转的,写自己原创。

而且,早就不能用了。
--------------------------------------------------------
你凭什么说不是我自己写的?
谁说早不能用了?我现在就正在用它做支付!
你自己搞清楚在说!拜托!
   回复   引用   查看     
#11楼  [ 楼主]2008-11-13 11:43 | 张谊       
--引用--------------------------------------------------
郄坚锐: 我说这种东西 看他提供的文档比你的清楚多了
--------------------------------------------------------
确实,官方提供的文档确实很清晰,我在这儿只是写出了我自己在开发中遇到的问题,只是希望遇到同样的问题能尽快的解决,并没有指导开发的任何意思。
   回复   引用   查看     
#12楼  [ 楼主]2008-11-13 11:44 | 张谊       
--引用--------------------------------------------------
zcr11: 支付宝安全校验码(key)和合作伙伴id(partner)

支付宝后台商家工具中获得
??
怎么没有这项的
--------------------------------------------------------
需要先申请支付接口,申请成功后,就可以查看到Key合合作伙伴ID。
   回复   引用   查看     
#13楼  [ 楼主]2008-11-13 11:45 | 张谊       
--引用--------------------------------------------------
ziyouyong: 是啊,好像没有免费的接口了啊
--------------------------------------------------------
有的,我正在使用中。
   回复   引用   查看     
#14楼  2008-11-13 13:02 | 韦恩卑鄙       
之前作了10多家的银行、平台、神州行、短信支付接口
个别的接口建立的时候 几乎就是给丫做免费的接口测试 还要和对方的测试一起修改例子和文档

   回复   引用     
#15楼  2008-11-13 13:28 | what is? [未注册用户]
我有首信支付平台的,原理也是:

双方有一个默认的密钥,用此密钥来验证信息是否正确,从而操作数据库。

支持.net/asp/php/java,哈哈,谁要找我,现在我们的系统与客户的系统做接口都是用这个,非常方便。

string str_key="1111111111111111";//密钥
string str_data="gongxingtao2@sohu.comwlotx http://www.wlotx.com";//需要加密的数据
md5_VB.md5classClass md5=new md5classClass();
string str_info==md5.hmac(str_data,str_key);
if(str_info=="3a64addc05447650c168a056ed141cdc")
{...}
else
{
...
}


HMAC 是一种经加密的散列消息验证码,是一种使用加密散列函数和密钥计算出来的一种消息验证码(MAC)。就像任何 MAC 一样,它也可以对信息数据的完整性和真实性进行同步检查。任意的迭代加密散列函数都可以用于 HMAC 的计算
aspx@hotmail.com
   回复   引用   查看     
#16楼  2008-11-13 15:21 | S.Sams       
想起之前做支付的即时到帐接口都遇到点小小问题, 但是仔细看下官方的文档,问题就可以解决.再不是到社区看下其它人是否都遇到这些问题,基本上就可以解决啦.
   回复   引用   查看     
#17楼  2008-11-13 17:08 | 轻风       
支付宝的接口基本没什么难点问题的,关键在于字符集编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值