手机端支付宝的异步回调 20C

异步回调接收的sign值跟加密的sign不相等,接收到的值怎么处理才能使两者相等,在线等

3个回答

异步回调的数据是post形式的数组,基本思想是先把接收的数据去掉空值和签名参数,进行排序后生成字符串拼上配置的key时进行对应的加密,然后再与返回的sign匹配。
支付宝对应的demo包验签函数:
function getSignVeryfy($para_temp, $sign) {
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilter($para_temp);

    //对待签名参数数组排序
    $para_sort = argSort($para_filter);

    //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
    $prestr = createLinkstring($para_sort);

    $isSgin = false;
    switch (strtoupper(trim($this->alipay_config['sign_type']))) {
        case "MD5" :
            $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
            break;
        default :
            $isSgin = false;
    }

    return $isSgin;
}
qq_35095295
欣馨密语 排序拼接加密,再去对比两个就是不相等,能帮我看一下参数哪有问题吗
大约 3 年之前 回复

该做的都做了,就是两者的值不一样

排序拼接之后的字符串:
buyer_email=***@qq.com&buyer_id=2088112986139655&code=alipay&gmt_create=2017-01-04 16:37:57&gmt_payment=2017-01-04 16:37:57&is_t
otal_fee_adjust=N&notify_id=8631a212a4391d15efd789cf3b143f7l0m&notify_time=2017-01-04 16:37:58&notify_type=trade_status_sync&out_trade_
no=2017010416744O2740&payment_type=1&price=1.00&quantity=1&seller_email=***&seller_id=2088121689618866&subject=201701
0416744&total_fee=1.00&trade_no=2017010421001004650259639555&trade_status=TRADE_SUCCESS&use_coupon=Nr2hnegaflj7ab6y6v4g2k0vien01ogi9

qq_35095295
欣馨密语 回复奋斗_Qsheng: 订单支付是成功的,
大约 3 年之前 回复
qiufengwuqing123
奋斗_CQS 个人建议:1、先到支付宝后台查看订单是否支付成功;2、把返回的参数记录起来;3、把这些参数套进去程序里面,一步步往下走应该就可以发现
大约 3 年之前 回复
qiufengwuqing123
奋斗_CQS 个人建议:1、先到支付宝后台查看订单是否支付成功
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问