yansongda / pay

可能是我用过的最优雅的 Alipay/WeChat/Douyin/Unipay/江苏银行 的支付 SDK 扩展包了
http://pay.yansongda.cn
MIT License
5.06k stars 1.04k forks source link

扩展支付宝接口返回值处理异常 #400

Closed zhmuyu closed 3 years ago

zhmuyu commented 4 years ago

包版本号

2.3

问题描述

扩展了小程序授权获取buyer_id,返回值类似

array(2) {
["error_response"]=>
array(4) {
["code"]=>
string(5) "40002"
["msg"]=>
string(17) "Invalid Arguments"
["sub_code"]=>
string(16) "isv.code-invalid"
["sub_msg"]=>
string(19) "授权码code无效"
}
["sign"]=>
string(344)"WCPoSFHtgWgBTOy2y5w=="
}

而处理返回值的时候是根据method来处理的,获取的是alipay_system_oauth_token_response,所以导致异常!

你的代码

报错详情

$response = Pay::alipay()->extend('miniAuthorization', function ($payload = []) use($code) {
            return array_merge($payload, [
                'app_id' => config('constants.alipay_mini_program_appid'),
                'code' => $code,
                'timestamp' => (string)now(),
                'grant_type' => 'authorization_code',
                'method' => 'alipay.system.oauth.token'
            ]);
        }, true);

sdk 日志

nginx/apache 日志

涉及到 异步通知、同步通知 的问题,请贴出来

zhmuyu commented 4 years ago
    if (!isset($result['sign']) || '10000' != $result[$method]['code']) {
        throw new GatewayException('Get Alipay API Error:'.$result[$method]['msg'].(isset($result[$method]['sub_code']) ? (' - '.$result[$method]['sub_code']) : ''), $result);
    }

作者不打算改改吗?result里面不一定包含code这个字段,会有一个错误!