laravel中生成支付宝 二维码 扫码支付

文档教程模拟:

http://www.023xs.cn/Article/37/laravel5%E9%9B%86%E6%88%90%E6%94%AF%E4%BB%98%E5%AE%9Dalipay%E6%89%AB%E7%A0%81%E6%94%AF%E4%BB%98%E6%B5%81%E7%A8%8B%EF%BC%88Laravel%E6%94%AF%E4%BB%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%89

1、在对应的蚂蚁金服,申请【网页&移动应用】,将对应的应用上线,并签约【电脑网站支付】和【手机网站支付】

2、在项目中composer对应的包【项目里面的vendor/latrell包上传coding的话,需要复制本地后在上传】

3、按照文档修改对应的配置文件,其中各个支付的回调可以单独配置

4、生成对应的地址后,将地址使用二维码生成工具 生成二维码图片 返回即可

示例代码:

订单生成,提交订单代码示例:

public function ccsppUserDoVipOrderAlyPc(Request $request){    $data = $request->all();    $userId = $data[‘user_id‘];    $user = \DB::table(‘user‘)        ->where(‘id‘,$userId)        ->first();    //此处订单和支付一起生成    $money = 0.01;    $order[‘order_uid‘] = $data[‘user_id‘];    $order[‘order_uname‘] = $user->user_name;    $order[‘order_type‘] = 1;    $order[‘order_time‘] = time();    $order[‘order_money‘] = $money;    $order[‘order_status‘] = 1;    $order[‘order_tel‘] = $user->user_tel;    $order[‘order_sid‘] = str_random(4) .time();    \DB::beginTransaction();    // 创建订单    $res_order = \DB::table(‘order‘)        ->insertGetId($order);    if(!$res_order){        \DB::rollback();        \DB::commit();        return [‘code‘ => 1002, ‘data‘ => [‘message‘ => ‘订单生成失败!‘]];    }

    //生成支付宝的订单    $config = config(‘latrell-alipay-web‘);    $alipay = app(‘alipay.web‘);    $alipay->setOutTradeNo($order[‘order_sid‘]);    $alipay->setTotalFee($order[‘order_money‘]);    $alipay->setSubject(‘交易内容‘);    $alipay->setBody(‘交易内容‘);    $alipay->setNotifyUrl($config[‘notifyUrlJkAly‘]);//设置回调地址

    $alipay->setQrPayMode(‘1‘); //该设置为可选1-5,添加该参数设置,支持二维码支付。    $basePath = base_path();    $basePath = $basePath."/public/uploads/code/";    $img_file = $basePath.‘aly‘.$order[‘order_sid‘].‘.png‘;    $alcode = ‘aly‘.$order[‘order_sid‘].‘.png‘;    $alycode = self::urlUsePic . $alcode;    $abc = \QrCode::format(‘png‘)->size(200)->margin(0)->generate($alipay->getPayLink(),$img_file);    // 跳转到支付页面。    $aliPayUrl = $alipay->getPayLink();    //订单生成后给订单生成对应的支付二维码    \DB::commit();    return [‘code‘ => 1000,‘alycode‘ => $alycode];}

回调配置代码示例:

latrell-alipay:

return [

   //合作身份者id,以2088开头的16位纯数字。   ‘partner_id‘ => ‘208****12752‘,

   //卖家支付宝帐户。   ‘seller_id‘ => ‘g******l@da****.com‘];

latrell-alipay-web:

return [

   // 安全检验码,以数字和字母组成的32位字符。   ‘key‘ => ‘bbpjx64******ggve61‘,

   //签名方式   ‘sign_type‘ => ‘MD5‘,

    // 服务器异步通知页面路径。支付1的回调    ‘notify_url‘ => ‘https://test/notify_url‘,

   // 服务器异步通知页面路径。支付2的回调   ‘notifyUrlJkAly‘ => ‘https://test/notifyUrlJkAly‘,

    // 服务器异步通知页面路径。支付3的回调    ‘notifyUrlVideoAly‘ => ‘https://test/notifyUrlVideoAly‘,

    // 服务器异步通知页面路径。支付4的回调(在订单生成时选择参数)    ‘notifyUrlMeetingAly‘ => ‘https://test/notifyUrlMeetingAly‘,

   // 页面跳转同步通知页面路径。// ‘return_url‘ => ‘https://test/aliPayReturn‘   ‘return_url‘ => ‘‘];

回调路由单个代码示例:

官方示例:1

public function notify_url(Request $request){    // 验证请求。    if (!app(‘alipay.web‘)->verify()) {        Log::notice(‘Alipay notify post data verification fail.‘, [            ‘data‘ => $request->instance()->getContent()        ]);        return ‘fail‘;    }    // 判断通知类型。    switch ($request ->input(‘trade_status‘,‘‘)) {        case ‘TRADE_SUCCESS‘:        case ‘TRADE_FINISHED‘:            // TODO: 支付成功,取得订单号进行其它相关操作。            Log::debug(‘Alipay notify post data verification success.‘, [                ‘out_trade_no‘ => $request -> input(‘out_trade_no‘,‘‘),                ‘trade_no‘ => $request -> input(‘trade_no‘,‘‘)            ]);            break;    }    $data = $request->all();    $time_now = time();    \DB::table(‘test‘)->where(‘id‘,1)->update([‘name‘=>$data[‘out_trade_no‘],‘time‘ => $time_now]);    return true;}

自己示例:2 未验证

public function notifyUrlJkAly(Request $request){    $data = $request->all();    $order_sid = $data[‘out_trade_no‘];    $time_now = time();    //修改订单用户和状态    \DB::table(‘order‘)->where(‘order_sid‘,$order_sid)->update([‘order_status‘=>2,‘order_ptime‘ => $time_now]);    //同时根据订单的类型修改用户的会员类型和 版本到期时间 默认加一年    $order_res = \DB::table(‘order‘)->where(‘order_sid‘,$order_sid)->first();    if($order_res){        //如果是版本支付订单,就修改用户的支付状态,和版本使用期限        $uid = $order_res->order_uid;        $date = date(‘Y‘,$time_now) + 1 . ‘-‘ . date(‘m-d H:i:s‘);//一年后日期        $ytime = strtotime($date);        $ress = \DB::table(‘user‘)->where(‘id‘,$uid)->update([‘user_type‘ => 2,‘user_btime‘ => $time_now,‘user_etime‘ => $ytime]);    }    return true;}

原文地址:https://www.cnblogs.com/lvfish/p/10430828.html

时间: 2024-08-30 13:22:29

laravel中生成支付宝 二维码 扫码支付的相关文章

pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式

利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: 1 Datawindow的DataObject的单位必须为像素(Pixels). 2 Datawindow的DataObject中放一个Text控件作为要显示QR二维码的位置和大小,长宽要相同 下面代码演示在Datawindow中直接显示QR二维码的操作: 在Datawindow中显示一行QR码: 1 string ls_Data 2 ls_Data = mle_1.Text//QR码内容 3

Android 开发中使用到二维码生成和解析

二维码生成 二维码解析 在项目的开发中, 使用二维码作为数据传递 交换 已经是常态了! 在这我也讲讲自己在项目开发中使用到的二维码. 生成二维码的开发流程 1 应用google 给我们提供的zxing.jar (建议官网下载) 2 使用zxing.jar 的MultiFormatWriter 类 生成一张二维码图片 核心代码块 /** * 方法说明:生成无图片二维码 */ @SuppressWarnings("unused") private Bitmap createTwoCode(

【转】支付宝 二维码/转账码/生成方式,突破二维码生成数量的限制

支付宝收款的几种方式: 通过xposed 设置金额/备注.然后可以得到一张二维码.这是传统的方式. 通过支付宝的接口,自己拼接字符串.然后根据字符串生成一个二维码对于 对于传统方式.支付宝限制了一天二维码的生成数量.在这之间简直是好用得不要不要得.但是突然间支付宝爸爸说.你搞那么多二维码干啥.还备注...一天给你20张够不够? 于是乎一瞬间哀鸿遍野.有得同学有先见之明,生成好的二维码都存起来了.有存货,现在还可以拿出来用.但是没有存货的怎么办? 第二种方式,就出现了,转账码: 转账码也有多种途径

iOS 花式二维码生成和二维码识别

iOS 原生的二维码识别非常之棒,反正比 ZXing 和 ZBar 效果都好些,所以以后打算尽量用原生的二维码识别,然后最近把原生的二维码生成也顺便做了一遍,并且在原有基础上加了一些样式参数,封了一个小库方便以后使用. 项目地址:https://github.com/EyreFree/EFQRCode EFQRCode 是一个用 Swift 编写的用来生成和识别二维码的库,它基于系统二维码生成与识别进行开发. 生成:利用输入的水印图/图标等资源生成各种艺术二维码: 识别:识别率比 iOS 原生二

公司开发的APP,如何生成一个二维码,供客户下载使用

1.其实和简单,因为一般的用户使用扫一扫,大多数都是用微信自带的扫一扫工具 而,微信打开的二维码页面,会自动屏蔽apk文件,所以显然把apk的url生成一个二维码,让用户扫一扫就能直接下载,这样是行不通的. 2.正确的做法应该是这样的, (1).先做一个下载页面,放在你的服务器上,IOS和android链接都放上去,显得比较专业,如果ios没有做好,就不要放 如下所示: 2.把下载页面的url地址,通过“草料二维码”生成一个二维码 3.如果是在微信扫一扫打开的,当用户点击"Android下载&q

Android之扫描二维码和根据输入信息生成名片二维码

开发中常常遇到二维码扫码操作,前段时间做项目要实现该功能,于是网上查找资料实现了,现在把他做出来给各位分享一下,主要包含了二维码扫描和生成二维码名片. 先来看看效果图:   生成的二维码,打开微信扫一扫即可看到生成的名片了,可以保存在联系人中. 二维码扫描方式如下图: 生成名片代码 public class BusinessCardActivity extends Activity{ private EditText et_only_company; private EditText et_on

利用websocket实现微信二维码码扫码支付

由于业务需要引入微信扫码支付,故利用websocket来实现消息推送技术. 实现大致流程:首先客户端点击微信支付按钮,触发微信支付接口,同时微信支付响应成功参数后,连接websocket客户端,此刻利用微信支付返回的参数生成一个二维码弹框,此时连接websocket 客户端时会发送一个指定的消息内容,然后等待用户扫码支付完成后,微信支付异步通知的地方执行websocket消息推送,根据指定的消息内容,获取到websocketsession,然后对其进行消息推送,等客户 端接收到消息之后,即可执行

用工具实现在微信里面生成带二维码的海报?

公众号粉丝裂变.快速增粉,利用微信第三方平台,自动生成海报二维码,实现统计粉丝来源查询统计系统,将营销活动设计成一张精美的海报背景图,粉丝就可以在公众号里生成一个带自己微信头像.昵称及带统计的专属二维码活动海报,通过活动激励方式让粉丝分享到朋友圈,一而二,二而三--源源不断分裂形成风暴增长! 1.在高级功能中选择->生成二维码海报注意:海报二维码功能状态 开启/关闭 ⑴数据统计报表,查看每天粉丝数量情况汇总 ⑵生成海报设置生成海报触发关键词 ⑶消息提醒设置(扫二维码后推送信息/设置扫二维码数量限

二维码扫码积分系统定制开发

微信积分系统 二维码扫码积分系统定制开发找丽姐[158.1816.6626/电微]二维码营销模式系统定制开发 微信扫二维码营销系统开发 扫码领积分系统开发 一.如何实现扫二维码领红包功能? 1.使用扫描二维码领取红包对活动进行设置,包括红包数量.红包金额.促销地区.中奖概率等. 2.将生成的二维码赋到商品上面并赋涂层,一方面可以起到保证二维码的一次性,另一方面也可以引起消费者的好奇心. 3.通过手机微信打开扫一扫,扫码商品二维码关注公众号并领取红包,如果参与分享还可以获得抽奖的机会. 二.微信扫