laravel接入支付宝sdk网页支付

作者:谢高升 发布:2018-09-03 浏览:3567次

记录一下laravel接入支付宝sdk;

1,直接从支付宝官网下载sdk https://docs.open.alipay.com/54/103419

2,把下载好的sdk复制到一个目录下面,我的是放到了app/Packages下面,

把下载的sdk目录改成alipay,目录如下图

image.png

3,在config目录下新建alipay.php,在composer.json中加入下面的内容  

"app/Packages/alipay"
//然后运行
composer dumpautoload

 

image.png

$config = array (
    //应用ID,您的APPID。
    'app_id' => env('ALIPAY_APPID'),

    //商户私钥,您的原始格式RSA私钥
    'merchant_private_key' => env('PRIVATE_KEY'),
       
    //异步通知地址
    'notify_url' => env('NOTIFY_URL'),//"http://工程公网访问地址/alipay.trade.wap.pay-PHP-UTF-8/notify_url.php",

    //同步跳转
    'return_url' => 'http://www.xiegaosheng.com/alicallback',//"http://mitsein.com/alipay.trade.wap.pay-PHP-UTF-8/return_url.php",

    //编码格式
    'charset' => "UTF-8",

    //签名方式
    'sign_type'=>"RSA",

    //支付宝网关
    'gatewayUrl' => "https://openapi.alipay.com/gateway.do",

    //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    'alipay_public_key' =>env('PUBLIC_KEY'),

);
return $config;

4,在alipay目录下面新建一个alipay.php的类

<?php
/**
 * Created by PhpStorm.
 * User: xiaoxie
 * Date: 2018/9/2
 * Time: 14:13
 **/

namespace app\Packages\alipay;

require ('AopSdk.php');

class Alipay
{

    public static function alipays($data)
    {
        if (!$data)
        {
            exit('param is numm');
        }
        $out_trade_no = $data['order_no'];

        //订单名称,必填
        $subject = $data['order_name'];

        //付款金额,必填
        $total_amount = $data['total_num'];

        //商品描述,可空
        $body = $data['body'];

        //超时时间
        $timeout_express="1m";

        $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
        $payRequestBuilder->setBody($body);
        $payRequestBuilder->setSubject($subject);
        $payRequestBuilder->setOutTradeNo($out_trade_no);
        $payRequestBuilder->setTotalAmount($total_amount);
        $payRequestBuilder->setTimeExpress($timeout_express);

        $config = config('alipay');
        $payResponse = new \AlipayTradeService($config);
        $result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);

        return ;
    }
}

5,新建controller,里面调用

//控制器中新建一个方法
public function alipay(Request $request)
{
    $total_fee = $request->input('total_fee');
    $out_trade_no = $request->input('order_no');
    $name = $request->input('name');
    $body = '上网套餐';
    $data['order_no'] = $out_trade_no;
    $data['order_name'] = $name;
    $data['body'] = $body;
    $data['total_num'] = sprintf("%1\$.2f",$total_fee/100);
    Alipay::alipays($data);
}

7,支付宝的sdk中的encrypt和decrypt函数和laravel中的相同了,所以要修改一下sdk中的函数

aop/AopEncrypt.php
aop/AopClient.php
lotusphp_runtime/Cookie/Cookie.php
在文件中查找encrypt/decrypt替换为alipayEncrypt/alipayDecrypt即可。


标签: 支付宝