• laravel 接入蚂蚁金服SDK(以支付宝APP支付为例)开发步骤


     

    一、创建应用及配置

    首先需要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),并且配置应用,主要是签约应用,这个需要审核,一般2-5个工作日,审核通过后,去生成公钥私钥这些东西,具体步骤参考蚂蚁金服官方文档,上面说明的比较清楚;

    二、下载对应SDK

    下载的是服务端SDK,注意不要下错,下载地址:https://docs.open.alipay.com/54/103419/

    三、准备好域名

    这个一般都已经有了吧。

    四、接入SDK

    因为SDK不能用composer安装,所以需要自定义laravel的第三方库。

    具体的步骤:

    1:首先将下载下来的包解压后,放到laravel可以自动加载的地方,我放在app/packages/alipay(packages是自己新建的文件夹,下载下来的包我重命名了alipay),结构如图:

    2:在composer.json中的autoload下的classmap下加入"app/Packages/alipay";

    3:运行composer dumpautoload 命令

     这样接入SDK算是完成了。

    5.具体使用案例

    首先在config/alipay.php文件中,配置好相关参数,具体如图:

    然后我直接在AopSdk.php的同名目录新建了一个Alipay.php

    文件中简单写了一个生产APP支付订单信息的方法

     1 <?php
     2 /**
     3  * Created by PhpStorm.
     4  * User: 寞小陌
     5  * Date: 2018/4/18
     6  * Time: 9:49
     7  */
     8 
     9 namespace appPackagesalipay;
    10 use MockeryCountValidatorException;
    11 
    12 require ('AopSdk.php');
    13 
    14 class Alipay
    15 {
    16   
    17 
    18     /**
    19      * 生成APP支付订单信息
    20      * @param string $orderId   商品订单号
    21      * @param string $subject   支付商品的标题
    22      * @param string $body      支付商品描述
    23      * @param float $total_amount  商品总支付金额
    24      * @param int $expire       支付过期时间,分
    25      * @return bool|string  返回支付宝签名后订单信息,否则返回false
    26      */
    27     public function generateOrder($orderId, $subject, $body, $total_amount, $expire){
    28         try{
    29             $aop = new AopClient();
    30             $aop->gatewayUrl = config('alipay.gatewayUrl');
    31             $aop->appId = config('alipay.app_id');
    32             $aop->rsaPrivateKey = config('alipay.private_key');
    33             $aop->alipayrsaPublicKey = config('alipay.public_key');
    34             $aop->format= 'json';//固定
    35             $aop->charset = config('alipay.charset');
    36             $aop->signType = config('alipay.sign_type');
    37             $request = new AlipayTradeAppPayRequest();
    38             //SDK已经封装掉了公共参数,这里只需要传入业务参数
    39             $bizcontent = "{"body":"{$body}","      //支付商品描述
    40                 . ""subject":"{$subject}","        //支付商品的标题
    41                 . ""out_trade_no":"{$orderId}","   //商户网站唯一订单号
    42                 . ""timeout_express":"{$expire}m"," //该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
    43                                                         //注:若为空,则默认为15d。
    44                 . ""total_amount":"{$total_amount}"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
    45                 . ""product_code":"QUICK_MSECURITY_PAY""
    46                 . "}";
    47             $request->setNotifyUrl(config('alipay.notify_url'));
    48             $request->setBizContent($bizcontent);
    49             //这里和普通的接口调用不同,使用的是sdkExecute
    50             $response = $aop->sdkExecute($request);
    51             //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
    52             return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
    53         }catch(Exception $e){
    54           //失败返回false
    55             return false;
    56         }
    57     }
    58 }

    注意:一定要引入SDK的入口文件AopSdk.php,require ('AopSdk.php');

    否则会报 AopClient Not Found这类的错误信息;

    注意:$aop = new AopClient();这里有个“”。

    至此,支付宝的SDK就可以用了,还有许多其他的业务比如退款,对账等功能,参考其官方文档就好,迈出了第一步,接下来的路就好走多了。

    本文属于个人原创,欢迎转载,转载请附链接:http://www.cnblogs.com/x-x-j/p/8875636.html

  • 相关阅读:
    密码安全等级效果
    随机生成不区分大小写的验证码
    css3的box方法实现文本水平垂直居中
    echarts省市地图显示
    mysql 连接数据库
    mysql 高版本order by 报错解决方案
    mysql 命令行操作
    mac本地运行php文件
    js 获取url参数
    js 每三位数添加逗号
  • 原文地址:https://www.cnblogs.com/x-x-j/p/8875636.html
Copyright © 2020-2023  润新知