手机端支付宝的异步回调

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

异步回调的数据是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;
}

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

排序拼接之后的字符串:
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