Coder Social home page Coder Social logo

laravel-pay's Introduction

Pay

依赖

  • php >= 8.0
  • composer
  • laravel || lumen >= 8.0

安装

composer require yansongda/laravel-pay:~3.7.0

laravel 用户

配置文件

php artisan vendor:publish --provider="Yansongda\LaravelPay\PayServiceProvider" --tag=laravel-pay

lumen 用户

配置文件

请手动复制配置文件

service provider

$app->register(Yansongda\LaravelPay\PayServiceProvider::class);

使用方法

支付宝

use Pay;

$order = [
    'out_trade_no' => time(),
    'total_amount' => '1',
    'subject' => 'test subject - 测试',
];

return Pay::alipay()->web($order);

// 下面这个方法也可以
// return Pay::web($order);

微信

use Pay;

$order = [
    'out_trade_no' => time(),
    'body' => 'subject-测试',
    'total_fee'      => '1',
    'openid' => 'onkVf1FjWS5SBIixxxxxxxxx',
];

$result = Pay::wechat()->mp($order);

具体使用说明请传送至 https://github.com/yansongda/pay

License

MIT

laravel-pay's People

Contributors

a443939412 avatar calchen avatar hanson avatar jieanthony avatar niefufeng avatar puzzle9 avatar remxcode avatar wybcp avatar yansongda avatar zingimmick avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

laravel-pay's Issues

一个项目双配置的问题

我发现我自定义传进去的配置被冲掉了 只会保留原始配置文件里wechat的配置。所以我想问一下laravel中有没有出现这个问题的人
帮忙解决一下,或者解惑一下

Undefined class constant 'SIGN_FAILED'

沙盒环境,调用scan 方法,验证签名失败
$result=Pay::alipay(config('pay.alipay'))->scan([
'id'=>$order->id,
'out_trade_no'=>$order->order_no,
'total_amount'=>$order->final_amount,
'subject'=>$order->name
]);

得到下边错误
"message": "Undefined class constant 'SIGN_FAILED'",
"exception": "Symfony\Component\Debug\Exception\FatalThrowableError",
"file": "/var/www/html/vendor/yansongda/pay/src/Gateways/Alipay/Support.php",
"line": 336,
"trace": [
{
"file": "/var/www/html/vendor/yansongda/pay/src/Gateways/Alipay/Support.php",
"line": 138,
"function": "processingApiResult",
"class": "Yansongda\Pay\Gateways\Alipay\Support",
"type": "::"
},

自定义中间件函数报错, header function not found

public function handle($request, Closure $next)
{
    $response = $next($request);
    # if the app env isn't production
    if(config('app.env') !== 'production'){
        $response->header('Access-Control-Allow-Origin', '*');
        $response->header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Cookie, Content-Type, Accept, Authorization');
        $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
        $response->header('Access-Control-Allow-Credentials', 'false');
    }
    return $response;
}

header不存在。。。

openssl_verify(): supplied key param cannot be coerced into a public key

你这个巨坑啊,验签的时候,根本就获取不到这个配置里面的信息,不行你自己打印

 $publicKey = self::$instance->ali_public_key;
\vendor\yansongda\pay\src\Gateways\Alipay
public static function verifySign(array $data, $sync = false, $sign = null): bool
    {
        dd( self::$instance);
        $publicKey = self::$instance->ali_public_key;

        if (is_null($publicKey)) {
            throw new InvalidConfigException('Missing Alipay Config -- [ali_public_key]');
        }

        if (Str::endsWith($publicKey, '.pem')) {
            $publicKey = openssl_pkey_get_public($publicKey);
        } else {
            $publicKey = "-----BEGIN PUBLIC KEY-----\n".
                wordwrap($publicKey, 64, "\n", true).
                "\n-----END PUBLIC KEY-----";
        }



        $sign = $sign ?? $data['sign'];

        $toVerify = $sync ? mb_convert_encoding(json_encode($data, JSON_UNESCAPED_UNICODE), 'gb2312', 'utf-8') :
                            self::getSignContent($data, true);

        return openssl_verify($toVerify, base64_decode($sign), $publicKey, OPENSSL_ALGO_SHA256) === 1;
    }

输出

Support {#635 ▼
  #baseUri: "https://openapi.alipay.com/gateway.do"
  #config: Config {#627 ▼
    #items: array:6 [▼
      "app_id" => ""
      "notify_url" => ""
      "return_url" => ""
      "ali_public_key" => ""
      "private_key" => ""
      "log" => array:1 [▼
        "file" => "E:\www\server\storage\logs/alipay.log"
      ]
    ]
  }
  #httpClient: null
  #httpOptions: []
}

都是空的。

laravel 7.x

Conclusion: don't install yansongda/pay v2.9.1
- Conclusion: remove monolog/monolog 2.0.2
- Conclusion: don't install monolog/monolog 2.0.2

可以升下版本么?

可以更新下composer.json 文件么?

    "extra": {
        "laravel": {
            "providers": [
                "Yansongda\\LaravelPay\\PayServiceProvider::class"
            ],
            "aliases": {
                 "Pay"" => "Yansongda\\LaravelPay\\Facades\\Pay::class"
            }
        }
},

如何添加分账接口

公司业务需要用到微信分账功能,该扩展包没有此接口,如何自己添加,只能自己对接微信的接口吗

关于配置的问题

我一直以为这个包可以默认配一份配置,然后在调用的时候能临时传参,覆盖部分配置(也可以不传,就用默认的)
结果看了半天源码,不知道我理解的对不对——
yansongda/pay这个包不含有默认配置的功能,必须调用的时候手动传配置参数。
yansongda/laravel-pay这个包只是把上面那个包调用了一下,并且默认读取laravel的配置,传入上面那个包里,相当于免去了手动传配置参数,并提供了一个定死的配置方法,反而把配置的灵活性搞没了。
而我一开始以为的,既有默认配置,又可以手动传参覆盖部分默认配置的特性,一开始就不存在?
所以这个laravel包只适用于只有一个支付帐号、一套参数的情况下,如果系统里包含多个支付帐号,想要灵活使用不同的帐号,则必须使用yansongda/pay才行,对不对?

配置文件 vendor:publish

$ php artisan vendor:publish --provider="Yansongda\\LaravelPay\\PayServiceProvider" --tag=config

应改为

$ php artisan vendor:publish --provider="Yansongda\LaravelPay\PayServiceProvider" --tag=config

代码不可测

项目里安装了这个package,然后进行单元测试,发现无法mock:

    public function testTransfer()
    {
        $amount = $this->faker->numberBetween(10, 19);
        $balance = $this->faker->numberBetween($amount, $amount + 10000);
        $user = factory(User::class)->create(['balance' => $balance]);
        Pay::shouldReceive('wechat')->once()->andReturnTrue();

        $wechat = Pay::wechat();
        $order = [
            'partner_trade_no' => $record->id,
            'openid' => $user->openid,
            'check_name' => 'NO_CHECK',
            'amount' => $amount,
            'desc' => '小程序提现',
            'type' => 'miniapp',
            'spbill_create_ip' => '127.0.0.1',
        ];

        $result = $wechat->transfer($order);
    }
./vendor/bin/phpunit tests/Feature/WeChatTest.php

微信app退款: Get Wechat API Error:appid参数长度有误

微信app 支付都没有问题, 但是退款却出现这个错误:

$order = [
  'out_trade_no' => $event->order->order_number,
   'out_refund_no' => $event->order->order_number,
   'total_fee' => $event->order->pay_amount * 100,
   'refund_fee' => $event->order->pay_amount * 100,
   'refund_desc' => $event->order->order_number . '取消订单退款',
   'type' => 'app',
];


// $config, app 支付配置
Pay::wechat($config)->refund($order);

IOS下支付宝H5支付后无法跳回到网页上去

IOS12iPhone用safari发起的支付宝支付,唤起支付宝APP,支付成功后直接进入支付宝的首页(就是打开支付宝app的默认页面),没有跳转回到safari浏览器。传入的参数有no,amount,name,passback_params
使用的版本为
yansongda/laravel-pay v2.0.2
yansongda/pay v2.8.2

请教一下微信支付需要配置哪些地方?

这问题应该不算是这个组件的问题.
当前微信扫码支付出现不能收到通知的问题.
已做配置:

  1. 微信商户平台配置扫码支付通知地址
  2. 配置文件中配置通知地址
  3. 通知地址可以在公网打开

想请教下是不是微信上还有什么地方需要配置.

@yansongda

感谢你的扩展包,抱着学习的目的,发了这个issues

你好,你的扩展包很棒,很感谢呢。这段时间稍微不是那么忙了,就看下源码,写得很好。然后我看到很多扩展包里类的顶上都有像laravel-pay这样的“ @method”标签,想问下这个是编辑器生成的吗,是主要是生成文档用的吗,还是其他作用呢。PHPstorm显示能点,但是没能正常跳转,有插件是能帮助跳转吗。感谢。

/**
 * @method Response app(array $config) APP 支付
 * @method Collection groupRedpack(array $config) 分裂红包
 * @method Collection miniapp(array $config) 小程序支付
 * @method Collection mp(array $config) 公众号支付
 * @method Collection pos(array $config) 刷卡支付
 * @method Collection redpack(array $config) 普通红包
 * @method Collection scan(array $config) 扫码支付
 * @method Collection transfer(array $config) 企业付款
 * @method RedirectResponse wap(array $config) H5 支付
 */
class Wechat implements GatewayApplicationInterface
{

还是不明白pay提供的是什么功能。

请求pay提供http请求处理吗?

请问微信支付的话提供xml格式包装吗?
<return_code></return_code><return_msg></return_msg>"

还是说pay只是提供参数处理,然后我自己再用xml包装一下发送http请求?

验签失败

验签失败
支付宝app支付接口
返回值为如图
default

default

驗簽出錯:Alipay Sign Verify FAILED

版本號

"laravel/framework": "5.8.*",
"yansongda/laravel-pay": "^2.1"

問題描述

支付寶支付成功回傳出現 Alipay Sign Verify FAILED 的錯誤訊息

支付寶密鑰取得方式

支付寶
公私鑰是按照網站說明產生
https://opendocs.alipay.com/open/291/105971

代碼

config/pay.php

'alipay' => [
        // 支付宝分配的 APPID
        'app_id' => env('ALI_APP_ID', ''),

        // 支付宝异步通知地址
        'notify_url' => env('APP_URL').'/api/pay/alipay/notify',

        // 支付成功后同步通知地址
        'return_url' => env('APP_URL').'/api/pay/alipay/return',

        // 阿里公共密钥,验证签名时使用
        'ali_public_key' => env('ALI_PUBLIC_KEY', ''),

        // 自己的私钥,签名时使用
        'private_key' => env('ALI_PRIVATE_KEY', ''),

        'log' => [
            'file' => storage_path('logs/alipay.log'),
            'level' => 'debug',
            'type' => 'single', // optional, 可选 daily.
        ],
],

OrderController.php

public function notify($method)
{
    if ($method == 'wechat') {
        Log::info('Pay method wechat');
        $pay = Pay::wechat();
    } else {
        Log::info('Pay method alipay');
        $pay = Pay::alipay();
    }
    try{
        Log::info('Pay notify message');
        $data = $pay->verify();

        $order = Order::where('order_no', $data->out_trade_no)->first();
        if(!$order->status) {
            $order->status = true;
            $order->payment_time = Carbon::now()->toDateTimeString();
            $order->save();
        }
        Log::debug('Pay notify', $data->all());
        return response()->json([
            'status' => 'success',
            'data' => $pay->success()
        ]);
    } catch (\Exception $e) {
        Log::error($e->getMessage());
        return response()->json([
            'status' => 'error',
            'message' => trans('api.pay_error')
        ]);
    }
}

public function return($method)
{
    $data = Pay::alipay()->verify();
}

Alipay 日誌

yansongda.pay.WARNING > Alipay Sign Verify FAILED {"gmt_create":"2020-05-05 10:39:11","charset":"utf-8","seller_email":"*****","subject":"企业方案-10","sign":"*****","buyer_id":"2088522069415796","invoice_amount":"0.01","notify_id":"2020050500222103912015791423061300","fund_bill_list":"[{\"amount\":\"0.01\",\"fundChannel\":\"ALIPAYACCOUNT\"}]","notify_type":"trade_status_sync","trade_status":"TRADE_SUCCESS","receipt_amount":"0.01","app_id":"2017082308341861","buyer_pay_amount":"0.01","sign_type":"RSA2","seller_id":"2088721642933483","gmt_payment":"2020-05-05 10:39:12","notify_time":"2020-05-05 10:39:12","version":"1.0","out_trade_no":"e94ce5b7a47827a9bc3fb9c48beca5ad","total_amount":"0.01","trade_no":"2020050522001415791446123599","auth_app_id":"2017082308341861","buyer_logon_id":"183****4684","point_amount":"0.00"} 

Laravel 日誌

[2020-05-05 10:39:13] local.INFO: Pay method alipay  
[2020-05-05 10:39:13] local.INFO: Pay notify message  
[2020-05-05 10:39:13] local.ERROR: INVALID_SIGN: Alipay Sign Verify FAILED

支付宝回调验证失败

包版本号

1.0.*

问题描述

image
image

代码

涉及到 异步通知、同步通知 的问题,请将 nginx/Apache 的相关日志贴出来

报错详情

微信支付以及回调都没有问题,在支付宝调用支付也是可以的,但是在支付宝回调的时候一直验证为false

支付宝支付成功,但在查询订单时出错,请问是什么原因?

$order = [
'out_trade_no' => '201808071545335463',
'bill_type' => 'trade'
];
$alipay = Pay::alipay();
return $alipay->find($order);
这个商户订单是支付成功了的。
错误提示:
ErrorException: openssl_verify(): supplied key param cannot be coerced into a public key in file /data/zyzxpay/vendor/yansongda/pay/src/Gateways/Alipay/Support.php on line 157

请教大侠,如何解决。谢谢!

支付宝转账状态查询

接口里面实现了支付宝转账的功能,但是find()查询功能中没有不能进行转账查询,只能进行交易查询

异常接收不到,直接抛出了

      try {
              $pay = Pay::wechat($this->config['wechat'])->wap($config_biz);

		} catch(GatewayException $e) {

			file_put_contents(storage_path('logs/wechat.log'), date("H:i:s")." 订单{$order->order_sn}", FILE_APPEND);

			if(strpos($e->getMessage(), 'OK该订单已支付') === false) {

				// 不是已支付订单

			} else {

				// 再次支付时微信返回订单已支付消息,但是异步通知还未成功处理

			}

		}

异常时直接报出错了,就是进不到catch里

Yansongda \ Pay \ Exceptions \ GatewayException (20000)
Get Wechat API Error:OK该订单已支付

实在想不出是哪里问题了,求问一下

用的事件非laravel标准事件

所以用laravel无法捕获。
如果要捕获事件,只能写一个class 继承 Pay,然后在class里Event::addSubscribe(新的class),

仅此

微信支付下单和退款异步通知的问题

目前配置文件里面只有一个 notify_url, 但实际上下单的异步通知和退款的异步通知逻辑是不一样的
下单:

 $pay->verify();

退款

 $pay->verify(null, true);

有办法可以使下单和退款的notify_url设置成不同的吗

fatal error

Too few arguments to function Yansongda\Pay\Pay::__construct(),

支付宝验证签名失败

找了很久实在不知道问题在哪里,求助:
代码:
/**
* 支付宝同步回调
*/
public function aliReturn()
{

    $this->config = config('pay.alipay');
    return Pay::alipay($this->config)->verify(); // 是的,验签就这么简单!

    // 订单号:$data->out_trade_no
    // 支付宝交易号:$data->trade_no
    // 订单总金额:$data->total_amount
}

日志:
2018-09-26 22:50:16 > WARNING > Alipay Sign Verify FAILED {"gmt_create":"2018-09-26 22:49:55","charset":"GBK","gmt_payment":"2018-09-26 22:50:15","notify_time":"2018-09-26 22:50:16","subject":"会员充值","sign":"yoOu96rpxpQeDnudju/0LqUfsm/YvTZh8iBmhw9jaiuTSQ8rD6MqYqJxh9xqvYQC4Rz1w7Vn+N+cKG4hJLxmQZgO04b3C483Tnvl48lOK2KRfti/W6czKyTOPSPoL+HT+eFpbvBlZGV2HqEh8IJA5rjxg/HJG8mn43Ke8oFT2RDxv57B0vIhK03XHhlWAsA7IgMofqYUBdHKpepSfnOYGjNYq5nfH9j2J5rj1/9RDYIQfy180WLQaAyoto+yc20jp+DZP8wv3qwYTYyKnaLj3BNLDQYP/noh4qNacGO/hgoQ4heCfdiHxPjItlwU7R/xVClxY8/HnJ2ObYc66oH1Cg==","buyer_id":"2088302521568545","invoice_amount":"0.01","version":"1.0","notify_id":"2018092600222225016068540520681832","fund_bill_list":"[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]","notify_type":"trade_status_sync","out_trade_no":"20180926224832","total_amount":"0.01","trade_status":"TRADE_SUCCESS","trade_no":"2018092622001468540594256659","auth_app_id":"2*****","receipt_amount":"0.01","point_amount":"0.00","app_id":"2018042802604410","buyer_pay_amount":"0.01","sign_type":"RSA2","seller_id":"2088031556623290"} []

2018-09-26 22:50:27 > WARNING > Alipay Sign Verify FAILED {"charset":"GBK","out_trade_no":"20180926224832","method":"alipay.trade.page.pay.return","total_amount":"0.01","sign":"YLrXsbeEEoCFx1r830saLe1Q3wweqDKpuz1jF6Nkrirdy4PZ86BJtwuNDoc8nOaZEJuQ5N4g/iI1G4r1mMvAOZkUXMMBod+4rSD+DTdhxDaF+GfMeNjnj+/lc6mV8EavrBH0Ba99cE5fyh5eDVLXm70co92hC08zINBQCzWYQSHDQbuVO8GlTvkUVxF1ObrktPHo3l3BZEERRAUehJD4bQOh40UKhWsVScWlcgd3aFpcEGswsvyvPBSIlgZds+FX8d4jjbOvfDoXNSiBWGYeMhe5QbyOf78UyFg61K6OgZmIHh7nJN3oG3W9czg9D+oNPERh0CLDsG6UTj5+fKROLA==","trade_no":"2018092622001468540594256659","auth_app_id":"2018042802604410","version":"1.0","app_id":"2******410","sign_type":"RSA2","seller_id":"2088031556623290","timestamp":"2018-09-26 22:50:23"} []

动态的传入config参数

框架:lumen


需求:动态的传入config参数


详情:我的config参数不是固定的,需要动态的传入;我在文档中看到有这种写法
$alipay = Pay::alipay($config)->web($order);
所以我在使用时不新建config中的pay文件是否可以

支付宝查询订单失败

使用代码Pay::alipay(config('pay.alipay'))->find($number)报ErrorException: call_user_func() expects parameter 1 to be a valid callback, non-static method Yansongda\Pay\Gateways\Alipay\WapGateway::find()请问是什么原因用的版本是v2.0和v2.2都不行

Get Wechat API Error:参数错误:appid字段必填,最长为32个字符

业务描述:

  1. app用户提现,使用的是app调用微信返回的OpenID,不是web端调用微信公众号返回的OpenID。
  2. 商户 企业付款给用户零钱

实例化时使用的配置如下:

$data = [
    'app_id' => config('pay.wechat.app_id'),
    'appid' => config('pay.wechat.appid'),
    'mch_id' => config('pay.wechat.mch_id'),
    'notify_url' => config('pay.wechat.notify_url'),
    'key' => config('pay.wechat.key'),
    'cert_client' => config('pay.wechat.cert_client'),
    'cert_key' => config('pay.wechat.cert_key')
];

调用 transfer 方法 , 企业付款给用户零钱,如下:

public function transfer($partner_trade_no = '', $open_id = '', $amount = 0, $desc = '', $type = '')
{
$order = [
    'partner_trade_no' => $partner_trade_no, //商户订单号
    'openid' => $open_id,                    //收款人的openid
    'check_name' => 'NO_CHECK',              //NO_CHECK:不校验真实姓名\FORCE_CHECK:强校验真实姓名
//            're_user_name' => '张三',              //check_name为 FORCE_CHECK 校验实名的时候必须提交
    'amount' => $amount,                     //企业付款金额,单位为分
    'desc' => $desc,                         //付款说明
];
if ($type) $order['type'] = $type;

return $this->wechat->transfer($order);

发现问题(重点):
当追踪代码时,文件:vendor/yansongda/pay/src/Gateways/Wechat/TransferGateway.php,会发现

public function pay($endpoint, array $payload): Collection
{
    if ($this->mode === Wechat::MODE_SERVICE) {
        unset($payload['sub_mch_id'], $payload['sub_appid']);
    }
//        $type = isset($payload['type']) ? ($payload['type'].($payload['type'] == 'app' ?: '_').'id') : 'app_id';
    $type = isset($payload['type']) && $payload['type'] == 'app' ? $payload['type'] . 'id' : 'app_id';

    $payload['mch_appid'] = $this->config->get($type, '');
    $payload['mchid'] = $payload['mch_id'];
    php_sapi_name() === 'cli' ?: $payload['spbill_create_ip'] = Request::createFromGlobals()->server->get('SERVER_ADDR');

    unset($payload['appid'], $payload['mch_id'], $payload['trade_type'],
        $payload['notify_url'], $payload['type']);

    $payload['sign'] = Support::generateSign($payload, $this->config->get('key'));

    Log::debug('Paying A Transfer Order:', [$endpoint, $payload]);

    return Support::requestApi(
        'mmpaymkttransfers/promotion/transfers',
        $payload,
        $this->config->get('key'),
        $this->config->get('cert_client'),
        $this->config->get('cert_key')
    );
}
  1. 其中的$type 变量获取到的是 “app1id”,报“Get Wechat API Error:参数错误:appid字段必填,最长为32个字符”,是错误的,$type应该返回 “appid”
  2. $type = isset($payload['type']) ? ($payload['type'].($payload['type'] == 'app' ?: '_').'id') : 'app_id';
    改成 $type = isset($payload['type']) && $payload['type'] == 'app' ? $payload['type'].'id' : 'app_id';
    修改后程序方能获取到 APP 引用的 appid,才能企业付款成功

望作者能够重视,说错的地方请指出,谢谢,盼复

只是加了一个provider嘛?

1、暴露的api呀
2、callback
3、event
4、数据库记录

甚至:
一个默认的订单支付页面

在未来有没有这个计划?

alipay transfer 接口一直都存在问题,不解决一下么

转账明明成功就是一直被异常抓走,无奈之下自己改了yansongda/pay/src/Gateways/Alipay/Support.php 文件中的processingApiResult 方法

protected static function processingApiResult($data, $result): Collection
    {
        $method = str_replace('.', '_', $data['method']).'_response';
        if (!isset($result['sign']) || '10000' != $result[$method]['code']) {
            if($result[$method]['sub_code'] == 'PAYEE_NOT_EXIST'){
//                dd($result[$method]);
                throw new GatewayException($result[$method]['sub_msg'],$result[$method]['sub_code']);
            }else{
                throw new GatewayException('Get Alipay API Error:'.$result[$method]['msg'].(isset($result[$method]['sub_code']) ? (' - '.$result[$method]['sub_code']) : ''), $result);
            }
        }
//        if (self::verifySign($result[$method], true, $result['sign'])) {
        return new Collection($result[$method]);
//        }
        Events::dispatch(new Events\SignFailed('Alipay', '', $result));

        throw new InvalidSignException('Alipay Sign Verify FAILED', $result);
    }

H5支付 ajax调用 返回的结果如何取到跳转地址

RedirectResponse {#518
#targetUrl: "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx111649337720935c6a28bec83268885069&package=199169225"
+headers: ResponseHeaderBag {#519
#computedCacheControl: array:2 [
"no-cache" => true
"private" => true
]
#cookies: []
#headerNames: array:3 [
"cache-control" => "Cache-Control"
"date" => "Date"
"location" => "Location"
]
#headers: array:3 [
"cache-control" => array:1 [
0 => "no-cache, private"
]
"date" => array:1 [
0 => "Thu, 11 Oct 2018 08:49:33 GMT"
]
"location" => array:1 [
0 => "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx111649337720935c6a28bec83268885069&package=199169225"
]
]
#cacheControl: []
}
#content: """
\n
\n
\n
\n
\n
\n
<title>Redirecting to https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx111649337720935c6a28bec83268885069&amp;package=199169225</title>\n
\n
\n
Redirecting to https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx111649337720935c6a28bec83268885069&amp;package=199169225.\n
\n

"""
#version: "1.0"
#statusCode: 302
#statusText: "Found"
#charset: null
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.