Laravel使用支付宝进行支付开发实例

2019-09-30 作者:网络时代   |   浏览(171)

    $order = [
        'orderId' => date('YmdHis'),
        'txnTime' => date('YmdHis'),
        'orderDesc' => 'My test order title', //订单名称
        'txnAmt' => '100', //订单价格
    ];

引言&简介

    $gateway = Omnipay::gateway('unionpay');
    $response = $gateway->completePurchase(['request_params'=>$_REQUEST])->send();
    if ($response->isPaid()) {
        exit('支付成功!');
    }else{
        exit('支付失败!');
    }
}

$app->configure('laravel-omnipay');

回调

将laravel-omnipay.php文件复制到config/laravel-omnipay.php,然后在bootstrap/app.php中添加如下代码:

    $gateway = Omnipay::gateway('unionpay');

    // 各个支付网关配置
    'gateways' => [
        'paypal' => [
澳门新葡亰网址大全,            'driver' => 'PayPal_Express',
            'options' => [
                'solutionType' => '',
                'landingPage' => '',
                'headerImageUrl' => ''
            ]
        ],

此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL是unionpay/return。

安装&配置

composer require lokielse/omnipay-unionpay dev-master

    $options = [
        'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),
        'subject' => 'Alipay Test',
        'total_fee' => '0.01',
    ];

'unionpay' => [
    'driver' => 'UnionPay_Express',
    'options' => [
        'merId' => '777290058120462',
        'certPath' => '/path/to/storage/app/unionpay/certs/PM_700000000000001_acp.pfx',
        'certPassword' =>'000000',
        'certDir'=>'/path/to/certs',
        'returnUrl' => 'Your ReturnUrl Here',
        'notifyUrl' => 'Your NotifyUrl Here'
    ]
]

顾名思义,OmniPay for Laravel 5 & Lumen 是基于Laravel 5,通过一个服务提供者集成PHP OmniPay库,从而轻松实现对多种支付网关的支持。这里我们配置支付方式为支付宝。

2、获取银联支付配置信息

public function result(){

将测试卡号对应身份证号码填入输入框,然后点击“免费获取”,最后直接将手机验证码111111填写到验证码输入框,然后点击“确认付款”,页面就会跳转到支付成功页面:

新建控制器AlipayController,定义其pay方法如下:

3、配置文件

安装完成后在config/app.php中注册服务提供者:

4、基本使用

<?php

定义result方法:

支付宝SDK支持如下接口:

废话不多说,下面直接切入正题。由于我们在上一节已经安装了ignited/laravel-omnipay这个包,这里我们只需要安装银联支付包即可:

在开始之前,我们先来了解下OmniPay这个GitHub项目。

支付成功!

这里我们使用支付宝即时到账接口(目前即时到账接口需要商户签约才能使用,个人账户不能使用)。

配置config/laravel-omnipay.php(如果没有该配置文件参考上一节相应操作),添加银联支付配置:

基本使用

//银联支付处理
Route::get('unionpay/pay','UnionpayController@pay');
//支付后回调页面
Route::post('unionpay/return','UnionpayController@result');
支付

    $response = $gateway->completePurchase($options)->send();

卡号 卡性质 机构名称 手机号码 密码 CVN2 有效期 证件号 姓名
6216261000000000018 借记卡 平安银行 13552535506 123456   341126197709218366 全渠道
6221558812340000 贷记卡 平安银行 13552535506 123456 123 1711 341126197709218366 互联网
短信验证码 111111
然后我们去https://open.unionpay.com/ajweb/help/file/techFile下载PHP版本的实例代码,比如我们这里测试的是网关支付,那就下载网关支付对应的实例代码,解压下载的压缩文件,然后将下面这个三个文件拷出来放到Laravel项目指定目录(比如storage/app/unionpay/certs):

此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL是alipay/return。

及测试银行卡信息:

return [

    $response = $gateway->purchase($order)->send();
    $response->redirect();
}  

    $gateway = Omnipay::gateway();

澳门新葡亰网址大全 1

同时添加OmniPay门面到门面数组:

澳门新葡亰网址大全 2

    if ($response->isSuccessful() && $response->isTradeStatusOk()) {
        //支付成功后操作
        exit('支付成功');
    } else {
        //支付失败通知.
        exit('支付失败');
    }

澳门新葡亰网址大全 3

 

我们将测试银行卡号填写到输入框并点击下一步:

运行composer update安装这些依赖。

新建控制器UnionPayController,定义pay方法:

1、使用 OmniPay For Laravel 5 & Lumen

澳门新葡亰网址大全 4

    $gateway = Omnipay::gateway();

在浏览中访问http://laravel.app:8000/unionpay/pay,页面会跳转到银联支付页面:

    // 默认支付网关
    'default' => 'alipay',

OmniPay UnionPay提供了以下支付网关接口:

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

本文由澳门新葡亰网址大全发布于网络时代,转载请注明出处:Laravel使用支付宝进行支付开发实例

关键词: