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

 3611

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


安装

  1. $ composer require ycstar/sfopenic -vvv


配置

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


使用

  1. use Ycstar\Sfopenic\Sfopenic;
  2.  
  3. $config = [
  4.     'host'    => 'xxxxxxxxxxxx',
  5.     'dev_id'  => 'xxxxxxxxxxxx',
  6.     'dev_key' => 'xxxxxxxxxxxx'
  7. ];
  8.  
  9. $sfopenic = new Sfopenic($config);


预创建订单

  1. $data = [
  2.     'shop_id' => 'xxxxxxxxxxxx',
  3.     'user_address' => "北京市海淀区学清嘉创大厦A座15层",
  4.     'user_lng' => '116.352569',
  5.     'user_lat' => '40.014838',
  6.     'weight' => 100,
  7.     'product_type' => 1,
  8.     'pay_type' => 1,
  9.     'is_appoint' => 0,
  10.     'is_insured' => 0,
  11.     'is_person_direct' => 0
  12. ];
  13.  
  14. $res = $sfopenic->preCreateOrder($data);


创建订单

  1. $array = [
  2.     'shop_id' => 'xxxxxxxxxxxx',
  3.     'shop_order_id' => 'xxxxxxxxxxxx',
  4.     'order_source' => 'xx',
  5.     'pay_type' => 1,
  6.     'order_time' => time(),
  7.     'is_appoint' => 0,
  8.     'is_insured' => 0,
  9.     'is_person_direct' => 0,
  10.     'version' => 17,
  11.     'order_sequence' => 'xx',
  12.     'remark' => 'xx'
  13. ];
  14.  
  15. $receive =[
  16.     'user_name' => "xx",
  17.     'user_phone' => "xxxxxxxxxx",
  18.     'user_address' => "北京市海淀区学清嘉创大厦A座15层",
  19.     'user_lng' => '116.352569',
  20.     'user_lat' => '40.014838',
  21. ];
  22.  
  23. $order_detail = [
  24.     'total_price' => 1,//总金额
  25.     'product_type' => 1, //物品类型 1:送餐 8:饮品
  26.     'weight_gram' => 100,//物品重量
  27.     'product_num' => 3,//物品个数
  28.     'product_type_num' => 1,//物品种类个数
  29. ];
  30.  
  31. $product_detail[]=[
  32.     'product_name'=>'xxx',//物品名称
  33.     'product_num' => 1,//物品数量
  34. ];
  35.  
  36. $order_detail['product_detail'] = $product_detail;
  37.  
  38. $array['order_detail'] = $order_detail;
  39.  
  40. $array['receive'] = $receive;
  41.  
  42. $res = $sfopenic->createOrder($data);


取消订单

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6.     'cancel_code' => 313, //不填时默认cancel_code=313,cancel_reason=商家发起取消
  7.     'cancel_reason' => ''
  8. ];
  9.  
  10. $res = $sfopenic->cancelOrder($data);


预取消订单

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6.     'cancel_reason' => ''
  7. ];
  8.  
  9. $res = $sfopenic->preCancelOrder($data);


订单加小费

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6.     'gratuity_fee' => 0
  7. ];
  8.  
  9. $res = $sfopenic->addOrderGratuityFee($data);


获取订单加小费信息

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->getOrderGratuityFee($data);


订单状态流查询

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->listOrderFeed($data);


订单实时信息查询

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->getOrderStatus($data);


催单

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->reminderOrder($data);


改单

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


获取配送员实时坐标接口

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->riderLatestPosition($data);


获取配送员轨迹H5

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,   //order_type=2时必传shop_id与shop_type
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->riderViewV2($data);


订单回调详情

  1. $data = [
  2.     'order_id' => 'xxxxxxxxxxxx',
  3.     'order_type' => 1 //1、顺丰订单号 2、商家订单号
  4.     'shop_id' => 0,
  5.     'shop_type' => 1, //1、顺丰店铺ID 2、接入方店铺ID
  6. ];
  7.  
  8. $res = $sfopenic->getCallbackInfo($data);


获取回调数据及回复内容

  1. $data = $sfopenic->getNotify();
  2. .
  3. .
  4. .
  5. return $sfopenic->getNotifySuccessReply();


laravel中使用

在 Laravel 中使用也是同样的安装方式,使用下面的命令来导出配置文件

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

配置写在 config/sfopenic.php 中:

  1. return [
  2.     'host' => env('SF_OPENIC_HOST'),
  3.     'dev_id' => env('SF_OPENIC_DEV_ID'),
  4.     'dev_key' => env('SF_OPENIC_DEV_KEY')
  5. ];

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

  1. SF_OPENIC_HOST = xxxxxxxxxxxx    
  2. SF_OPENIC_DEV_ID = xxxxxxxxxxxx    
  3. SF_OPENIC_DEV_KEY = xxxxxxxxxxxx

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

方法参数注入

  1. ...
  2. public function preCreateOrder(Sfopenic $sfopenic)
  3. {
  4.     $res = $sfopenic->preCreateOrder($data);
  5. }
  6. ...


服务名访问

  1. ...
  2. public function preCreateOrder()
  3. {
  4.     $res = app('sfopenic')->preCreateOrder($data);
  5. }
  6. ...


本文网址:https://www.zztuku.com/index.php/detail-9069.html
站长图库 - 分享一个顺丰同城配送的扩展包并在laravel中使用
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐