支付宝ecshop qq回调地址址怎么写啊,是ecshop项目

支付宝集成——如何在回调地址中使用自定义参数
时间: 16:06:39
&&&& 阅读:1339
&&&& 评论:
&&&& 收藏:0
支付宝集成&&如何在回调地址中使用自定义参数
来源&http://www.solagirl.net/use-custom-para-in-alipay-return-url.html
2012 年 8 月 15 日&By Sola
支付宝集成时,有同步返回地址return_url和异步通知地址notify_url,这两个地址中的参数与签名验证有非常大的关系,在支付宝的说明中,强调return_url不可以有自定义参数,否则会导致sign和mysign不相等,但有时我们需要一些自定义参数来做判断,怎么办呢?
支付宝集成时,有同步返回地址return_url和异步通知地址notify_url,这两个地址中的参数与签名验证有非常大的关系,在支付宝的说明中,强调return_url不可以有自定义参数,否则会导致sign和mysign不相等,但有时我们需要一些自定义参数来做判断,怎么办呢?
签名验证机制
支付宝签名有两次,第一次是发送的时候,第二次是返回的时候,返回又分为同步返回和异步通知,这两个的签名方式是相同的。
向支付宝发送参数时,调用如下函数产生签名,并构建生成表单的数组
function buildRequestPara($para_temp,$aliapy_config) {
&&&&$para_filter = paraFilter($para_temp);
&&&&$para_sort = argSort($para_filter);
&&&&$mysign = buildMysign($para_sort, trim($aliapy_config[‘key‘]), strtoupper(trim($aliapy_config[‘sign_type‘])));
&&&&$para_sort[‘sign‘] = $mysign;
&&&&$para_sort[‘sign_type‘] = strtoupper(trim($aliapy_config[‘sign_type‘]));
&&&&return $para_sort;
数据返回时,调用下面的函数生成签名
function verifyReturn(){
&&&&if(empty($_GET)) {
&&&&&& &return
&&&&else {
&&&&&& &$mysign = $this-&getMysign($_GET);
&&&&&& &$responseTxt = ‘true‘;
&&&&&& &if (! empty($_GET["notify_id"])) {$responseTxt = $this-&getResponse($_GET["notify_id"]);}
&&&&&& &$log_text = "responseTxt=".$responseTxt."\n notify_url_log:sign=".$_GET["sign"]."&mysign=".$mysign.",";
&&&&&& &$log_text = $log_text.createLinkString($_GET);
&&&&&& &logResult($log_text);
&&&&&& &if (preg_match("/true$/i",$responseTxt) && $mysign == $_GET["sign"]) {
&&&&&& &&& &return
&&&&&& &} else {
&&&&&& &&& &return
function getMysign($para_temp) {
&&&&$para_filter = paraFilter($para_temp);
&&&&$para_sort = argSort($para_filter);
&&&&$mysign = buildMysign($para_sort, trim($this-&aliapy_config[‘key‘]), strtoupper(trim($this-&aliapy_config[‘sign_type‘])));
&&&&return $mysign;
两者最终都要调用buileMysign函数,如下
function buildMysign($sort_para,$key,$sign_type = "MD5") {
&&&&$prestr = createLinkstring($sort_para);
&&&&$prestr = $prestr.$key;
&&&&$mysgin = sign($prestr,$sign_type);
&&&&return $mysgin;
从这些过程可以得出以下结论
支付宝的签名是根据程序构建的参数进行的,发送时参数由本地程序构建,所以受自己控制,只要参数正确,基本可以成功,去除空参数等操作是支付宝的库函数来完成的。
接收回传的参数时,对于同步返回的参数,$_GET数组的内容非常重要,因为验证回传参数时(调用verfyReturn()函数),首先将$_GET的内容全部传给getMysign()方法,支付宝会get给我们一个sign,只有根据回传参数产生出相同的sign,才可以验证通过。这就是我们不能使用自定义参数的原因,如果增加了自定义参数,getMysign()就会带有杂质,跟支付宝生成的sign过程不同了,自然结果就要不对。
如何让自定义参数跟支付宝兼容
这个自定义参数问题只存在于return_url中,因为同步回传使用GET方式,异步通知使用POST方式,POST不受url中的自定义参数影响。
假设你的自定义参数是custom_val
在调用支付宝的验证参数前,将这个自定义参数从$_GET数组中去掉,支付宝验证结束后再恢复就可以了。
$get_temp = $_GET;
unset($_GET[‘custom_val‘]);
$alipayNotify = new AlipayNotify($aliapy_config);
$verify_result = $alipayNotify-&verifyNotify();
$_GET = $get_
unset($get_temp);
为什么notify_url地址不能带有自定义参数
在指定notify_url时,合法的方式如
http://www.solagirl.net/notify_url.php
不合法的方式如
http://www.solagirl.net/notify_url.php?order_id=10
与其说第二种格式不合法,不如说它是无效的。为什么这样说?因为不论你在这个地址后面带上多少自定义的参数,支付宝通过异步方式向你POST数据时,都会把?后面的参数去掉,所以带了也是白带,起不了任何作用,更不可能影响签名判断。这点似乎不如paypal方便,要区分执行过程只能靠POST过来的数据。
因此支付宝的notify_url不是不可以带有自定义参数,而是带了也没用,自作多情而已。
标签:原文地址:http://www.cnblogs.com/u0mo5/p/4577076.html
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)下一篇: 上一篇:支付宝集成——如何在回调地址中使用自定义参数 – ~SolagirL~支付宝回调url怎么填_百度知道
支付宝回调url怎么填
我有更好的答案
首先你的支付宝要申请到支付宝网站的商家服务接口 等通过后,他会有相关的参数给你 然后去支付宝论坛下载支付宝接口文档和实例代码文件,根据这些配置好文件中的参数 比如: 支付宝账户、支付宝商户号、支付宝密匙、支付成功后的异步和同步回调...
采纳率:95%
来自团队:
为您推荐:
其他类似问题
支付宝的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 ecshop qq回调地址 的文章

 

随机推荐