zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    题解 CF171G 【Mysterious numbers
    题解 P1157 【组合的输出】
    题解 P3955 【图书管理员】
    题解 P2036 【Perket】
    题解 CF837A 【Text Volume】
    题解 CF791A 【Bear and Big Brother】
    题解 CF747A 【Display Size】
    题解 P1332 【血色先锋队】
    题解 P2660 【zzc 种田】
    题解 P4470 【[BJWC2018]售票】
  • 原文地址:https://www.cnblogs.com/x-x-j/p/8875636.html
Copyright © 2011-2022 走看看