分享一个顺丰同城配送的扩展包并在laravel中使用

发布时间 - 2021-08-11 00:00:00    点击率:

公司项目需要用到顺丰外卖,所以看了下有没有现成的扩展包可用,但是发现没有,官方也没有sdk,所以自己写了一个包,省了不少工作量。

安装

$ composer require ycstar/sfopenic -vvv

配置

在使用本扩展之前,你需要去顺丰同城开放平台注册账号,然后申请开发者ID,获取相应的配置

使用

    use Ycstar\Sfopenic\Sfopenic;

    $config = [
        'host'    => 'xxxxxxxxxxxx',
        'dev_id'  => 'xxxxxxxxxxxx',
        'dev_key' => 'xxxxxxxxxxxx'
    ];

    $sfopenic = new Sfopenic($config);

预创建订单

    $data = [
        'shop_id' => 'xxxxxxxxxxxx',
        'user_address' => "北京市海淀区学清嘉创大厦A座15层",
        'user_lng' => '116.352569',
        'user_lat' => '40.014838',
        'weight' => 100,
        'product_type' => 1,
        'pay_type' => 1,
        'is_appoint' => 0,
        'is_insured' => 0,
        'is_person_direct' => 0
    ];

    $res = $sfopenic->preCreateOrder($data);

创建订单

    $array = [
        'shop_id' => 'xxxxxxxxxxxx',
        'shop_order_id' => 'xxxxxxxxxxxx',
        'order_source' => 'xx',
        'pay_type' => 1,
        'order_time' => time(),
        'is_appoint' => 0,
        'is_insured' => 0,
        'is_person_direct' => 0,
        'version' => 17,
        'order_sequence' => 'xx',
        'remark' => 'xx'
    ];

    $receive =[
        'user_name' => "xx",
        'user_phone' => "xxxxxxxxxx",
        'user_address' => "北京市海淀区学清嘉创大厦A座15层",
        'user_lng' => '116.352569',
        'user_lat' => '40.014838',
    ];

    $order_detail = [
        'total_price' => 1,//总金额
        'product_type' => 1, //物品类型 1:送餐 8:饮品
        'weight_gram' => 100,//物品重量
        'product_num' => 3,//物品个数
        'product_type_num' => 1,//物品种类个数
    ];

    $product_detail[]=[
        'product_name'=>'xxx',//物品名称
        'product_num' => 1,//物品数量
    ];

    $order_detail['product_detail'] = $product_detail;

    $array['order_detail'] = $order_detail;

    $array['receive'] = $receive;

    $res = $sfopenic->createOrder($data);

取消订单

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
        'cancel_code' => 313, //不填时默认cancel_code=313,cancel_reason=商家发起取消
        'cancel_reason' => ''
    ];

    $res = $sfopenic->cancelOrder($data);

预取消订单

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
        'cancel_reason' => ''
    ];

    $res = $sfopenic->preCancelOrder($data);

订单加小费

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
        'gratuity_fee' => 0
    ];

    $res = $sfopenic->addOrderGratuityFee($data);

获取订单加小费信息

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->getOrderGratuityFee($data);

订单状态流查询

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->listOrderFeed($data);

订单实时信息查询

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->getOrderStatus($data);

催单

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->reminderOrder($data);

改单

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
        'user_name'=> '',
        'user_phone'=> '',
        'user_address'=> '',
        'lbs_type'=> 2, //1:百度坐标,2:高德坐标(默认值为2,下面的经纬度依赖这个坐标系,不传默认高德)
        'user_lng'=> '', //传入用户地址经纬度顺丰侧则不根据用户地址解析
        'user_lat'=> '',
    ];

    $res = $sfopenic->changeOrder($data);

获取配送员实时坐标接口

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->riderLatestPosition($data);

获取配送员轨迹H5

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->riderViewV2($data);

订单回调详情

    $data = [
        'order_id' => 'xxxxxxxxxxxx',
        'order_type' => 1 //1、顺丰订单号 2、商家订单号
        'shop_id' => 0,
        'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
    ];

    $res = $sfopenic->getCallbackInfo($data);

获取回调数据及回复内容

    $data = $sfopenic->getNotify();
    .
    .
    .
    return $sfopenic->getNotifySuccessReply();

在laravel中使用

在 Laravel 中使用也是同样的安装方式,【推荐:《laravel教程》】

使用下面的命令来导出配置文件

php artisan vendor:publish --tag="ycstar-sfopenic"

配置写在 config/sfopenic.php 中:

    return [

        'host' => env('SF_OPENIC_HOST'),

        'dev_id' => env('SF_OPENIC_DEV_ID'),

        'dev_key' => env('SF_OPENIC_DEV_KEY')

      ];

然后在 .env 中配置 SF_OPENIC_HOST, SF_OPENIC_DEV_ID, SF_OPENIC_DEV_KEY:

    SF_OPENIC_HOST = xxxxxxxxxxxx    
    SF_OPENIC_DEV_ID = xxxxxxxxxxxx    
    SF_OPENIC_DEV_KEY = xxxxxxxxxxxx

可以用两种方式来获取 Ycstar\Sfopenic\Sfopenic 实例:

  • 方法参数注入
      .
      .
      .
      public function preCreateOrder(Sfopenic $sfopenic)
      {
          $res = $sfopenic->preCreateOrder($data);
      }
      .
      .
      .
  • 服务名访问
      .
      .
      .
      public function preCreateOrder()
      {
          $res = app('sfopenic')->preCreateOrder($data);
      }
      .
      .
      .
相关推荐:最新的五个Laravel视频教程       


# laravel  # 顺丰  # 海淀区  # 北京市  # 回调  # 看了  # 两种  # 可以用  # 写了  # 写在  # 信息查询 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高性能网站服务器配置指南:安全稳定与高效建站核心方案  个人网站制作流程图片大全,个人网站如何注销?  使用Dockerfile构建java web环境  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  轻松掌握MySQL函数中的last_insert_id()  php 三元运算符实例详细介绍  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在IIS中新建站点并配置端口与IP地址?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  JavaScript数据类型有哪些_如何准确判断一个变量的类型  音乐网站服务器如何优化API响应速度?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何在云虚拟主机上快速搭建个人网站?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何快速生成橙子建站落地页链接?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  IOS倒计时设置UIButton标题title的抖动问题  详解Android图表 MPAndroidChart折线图  Android使用GridView实现日历的简单功能  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Android 常见的图片加载框架详细介绍  如何快速查询网址的建站时间与历史轨迹?  网站图片在线制作软件,怎么在图片上做链接?  如何在腾讯云服务器快速搭建个人网站?  如何在万网开始建站?分步指南解析  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel怎么在Controller之外的地方验证数据  javascript中对象的定义、使用以及对象和原型链操作小结  三星网站视频制作教程下载,三星w23网页如何全屏?  如何登录建站主机?访问步骤全解析  高端建站如何打造兼具美学与转化的品牌官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何在建站主机中优化服务器配置?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  移动端脚本框架Hammer.js  如何用PHP工具快速搭建高效网站?  高端云建站费用究竟需要多少预算?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)