Laravel 支付如何实现支付宝扫码支付(Laravel Alipay)

发布时间:2017-09-13 编辑:小张个人博客 查看次数:10492

OmniPay是一个独立于框架的、对多种网关支付处理提供支持的PHP库。其介绍网站是http://omnipay.thephpleague.com/,GitHub项目地址是https://github.com/thephpleague/omnipay。目前支持的支付网关包括支付宝、银联支付、Stripe、PayPal等,更多支付网关可查看其GitHub项目了解。

在composer.json中添加如下依赖:

 "lokielse/omnipay-alipay": "^2.0",

更新依赖(运行composer update安装这些依赖)

composer update -vvv

创建支付宝应用

 使用支付宝的前提是先要去支付宝开放平台(open.alipay.com)入驻成为开发者并创建网站/移动应用,等待审核通过。

然后在个人中心获取应用的APPID和PID:

支付宝PID

定义相关路由:

 //支付宝支付处理
 Route::get('alipay','Home\[email protected]');
 //服务器异步通知页面路径
 Route::post('Notify','Home\[email protected]');
 //页面跳转同步通知页面路径
 Route::any('Return','Home\[email protected]');

调用接口,跳转到支付宝支付:

新建控制器AliPayController,定义其index方法如下,提供生成订单必需的数据,如果订单号,订单金额订单标题等,创建订单,并跳转到支付宝支付。

//支付宝支付处理
public function index(){
    $options = [
        'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),  // 订单号
        'subject' => 'Alipay Test',   // 商品名称
        'total_fee' => '0.01',  // 订单支付金额
    ];
    $gateway = $this -> AliPay();  //获取支付网关
    $response = $gateway->purchase($options)->send();
    $response->redirect();    // 直接跳转到支付宝支付
}

根据返回数据处理订单:

这里是 return url 的内容 ,跟据接受到的参数,联系支付宝验证订单支付状态,根据验证状态确定支付成功,如果支付成功,处理订单(这里是直接显示一个支付成功的字符串),如果支付失败,返回支付失败信息。我这里没有做任何逻辑处理,只是简单的输出了支付成功或者支付失败,如果是在实际项目中使用请根据自己的业务逻辑处理订单数据。

//服务器异步通知页面
public function AliPayNotify(){
    $gateway = $this ->AliPay();
    $options = [
        'request_params'=> $_REQUEST,
    ];
    $response = $gateway->completePurchase($options)->send();
    if ($response->isSuccessful()) {
        //支付成功后操作
        echo "支付成功";
    } else {
        //支付失败通知.
        echo '支付失败';
    }
}
//页面跳转同步通知页面
public function AliPayReturn(){
    $gateway = $this ->AliPay();
    $options = [
        'request_params'=> $_REQUEST,
    ];
    $response = $gateway->completePurchase($options)->send();
    if ( $response->isSuccessful()) {
        //支付成功后操作
        echo "支付成功";
    } else {
        //支付失败通知.
        echo '支付失败';
    }
}


支付宝SDK支持如下接口:

  Alipay_AopApp           APP支付 - new    
  Alipay_AopF2F           当面付 - new    
  Alipay_AopWap           手机网站支付 - new    
  Alipay_LegacyApp       APP支付    
  Alipay_LegacyExpress   即时到账    
  Alipay_LegacyWap       手机网站支付

支付宝商户帐号和密钥配置:

// 创建调用支付宝支付网关的函数,以便在其他文件中调用
function AliPay(){
    $gateway = OmniPay::create('Alipay_LegacyExpress'); // 即时到账 Alipay_LegacyExpress
    $gateway->setSellerEmail('106*********[email protected]');  //收款账户 email
    $gateway->setPartner('2088**************628');   //支付宝 PID
    $gateway->setKey('a6e*****************77uzd');   //支付宝 Key
    $gateway->setReturnUrl('http://web.wan.com/Return');  //页面跳转同步通知页面
    $gateway->setNotifyUrl('http://web.wan.com/Notify');  //服务器异步通知页面

    return $gateway;
}

Omnipay-Alipay

上面的示例代码中,只是简单的介绍了一下Omnipay-Alipay的使用方法和流程,在具体的项目中,我们还是要根据我们的需要,来实现具体的业务逻辑的,这个在这里就不多说了 希望对各位有所帮助。
Omnipay-Alipay其GitHub项目地址是:https://github.com/lokielse/omnipay-alipay。该项目使用说明GitHub上说的很清楚明白。

出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号