123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873 |
- <?php
- /**
- * lionfish 狮子鱼社区团购系统
- *
- *
- * @author fish
- * @desc 微信小程序自定义版交易组件及开放接口
- *
- */
- namespace Seller\Model;
- class MpModifyTradeCompontsModel extends UserModel {
- /**
- * @author yj
- * @demo array(2) { ["errcode"]=> int(1040002) ["errmsg"]=> string(56) "该小程序已经接入 rid: 6078dde8-7955f8e0-309fe346" } errcode=0
- * @desc 接入申请
- */
- public function apply()
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/register/apply?access_token={$access_token}";
- $result_json = $this->sendhttps_post( $url , json_encode([]) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @demo array(2) { ["errcode"]=> int(0) ["data"]=> array(3) { ["status"]=> int(2) ["reject_reason"]=> string(0) "" ["access_info"]=> array(2) { ["spu_audit_success"]=> int(0) ["pay_order_success"]=> int(0) } } }
- * @desc 如果账户未接入,将返回错误码1040003 查询接入结果
- * @return mixed
- */
- public function registerCheck()
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/register/check?access_token={$access_token}";
- $result_json = $this->sendhttps_post( $url , json_encode([]) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 获取运营类目
- * @demo
- * {
- "errcode": 0,
- "errmsg":"ok",
- "third_cat_list":
- [
- {
- "third_cat_id": 6493,
- "third_cat_name": "爬行垫/毯",
- "qualification": "",
- "qualification_type": 0,
- "product_qualification": "《国家强制性产品认证证书》(CCC安全认证证书)",
- "product_qualification_type": 1,
- "first_cat_id": 6472,
- "first_cat_name": "玩具乐器",
- "second_cat_id": 6489,
- "second_cat_name": "健身玩具"
- },
- ...
- ]
- }
- 请求
- */
- public function shopCatList()
- {
- $wepro_appid = D('Home/Front')->get_config_by_name('wepro_appid');
- $key = "{$wepro_appid}mpweixin_shop_list";
- $data = json_decode( S($key) , true);
- if ( empty( $data ) || $data['expire_time'] < time() )
- {
- //重新获取
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/cat/get?access_token={$access_token}";
- $result_json = $this->sendhttps_post( $url , json_encode([]) );
- $result = json_decode( $result_json, true );
- if( $result['errcode'] == 0 )
- {
- $third_cat_list = $result['third_cat_list'];
- $need_data = [];
- $need_data['expire_time'] = time() + 86400;
- $need_data['third_cat_list'] = $third_cat_list;
- S( $key ,json_encode($need_data));
- return ['code' => 0, 'data' => $third_cat_list ];
- }else{
- return ['code' => 1, 'message' => $result['errmsg'].':'.$result['errcode'] ];
- }
- }
- else{
- return ['code' => 0, 'data' => $data['third_cat_list']];
- }
- }
- /**
- * @author yj
- * @desc 添加商品到腾讯接口
- * @return array
- */
- public function addGoods()
- {
- M()->startTrans();
- $goods_id = I('post.goods_id', 0);
- $tx_cate_id = I('post.tx_cate_id', 0);
- $thumbs = I('post.thumbs', [] );
- $is_need_qualification = I('post.is_need_qualification', 0);
- if( $goods_id <= 0 )
- {
- M()->rollback();
- return ['code' => 1, 'message' => '请选择商品'];
- }
- if( $tx_cate_id == 0 )
- {
- M()->rollback();
- return ['code' => 1, 'message' => '请选择分类'];
- }
- if( $is_need_qualification == 1 )
- {
- if( empty($thumbs) )
- {
- M()->rollback();
- return ['code' => 1, 'message' => '需要上传资料,请上传后提交'];
- }
- }
- //判断商品状态是否正常,需要提交去审核的
- $goods_info = M('lionfish_comshop_goods')->where(['id' => $goods_id ])->find();
- if( $goods_info['grounding'] != 1 )
- {
- M()->rollback();
- return ['code' => 1, 'message' => '商品必须是已上架状态'];
- }
- $goods_option = M('lionfish_comshop_goods_option')->where(['goods_id' => $goods_id ])->find();
- if( empty($goods_option) )
- {
- //M()->rollback();
- // return ['code' => 1, 'message' => '腾讯要求商品必须有规格,您可以仅设置1个规格'];
- }
- //0、入库商品的申请资料
- //判断是否存在
- $tradecomponts_info = M('lionfish_comshop_goods_tradecomponts')->where(['goods_id' => $goods_id ])->find();
- $ins_data = [];
- $ins_data['goods_id'] = $goods_id;
- $ins_data['state'] = 0;
- $ins_data['qualification_imagelist'] = serialize( $thumbs );
- $ins_data['third_cate_id'] = $tx_cate_id;
- $ins_data['addtime'] = time();
- if( empty($tradecomponts_info) )
- {
- $tradecomponts_id = M('lionfish_comshop_goods_tradecomponts')->add( $ins_data );
- // //1、开始构造商品数据结构 2、提交给腾讯审核
- $result = $this->sendTradeGoodsToApply( $tradecomponts_id , 0 );
- }else{
- unset( $ins_data['addtime'] );
- M('lionfish_comshop_goods_tradecomponts')->where( ['id' => $tradecomponts_info['id']] )->save( $ins_data );
- $tradecomponts_id = $tradecomponts_info['id'];
- // //1、开始构造商品数据结构 2、提交给腾讯审核
- $result = $this->sendTradeGoodsToApply( $tradecomponts_id , 1 );
- }
- //3、判断审核状态
- //提交给腾讯审核时报错。
- if( $result['errcode'] != 0 )
- {
- M()->rollback();
- return ['code' => 1, 'message' => $result['errmsg'].',errcode'.$result['errcode'] ];
- }
- $tx_product_id = $result['data']['product_id'];
- M('lionfish_comshop_goods_tradecomponts')->where( ['goods_id' =>$goods_id ] )->save( ['tx_product_id' => $tx_product_id ] );
- M()->commit();
- return ['code' => 0];
- }
- /**
- * @author yj
- * @desc 发送审核给腾讯
- * @param $tradecomponts_id
- * @return mixed
- */
- public function sendTradeGoodsToApply( $tradecomponts_id , $is_update = 0)
- {
- $trade_info = M('lionfish_comshop_goods_tradecomponts')->where( ['id' => $tradecomponts_id ] )->find();
- if( empty($trade_info) )
- {
- return ['code' =>1, 'message' => '没有找到交易组件商品'];
- }
- $goods_option = M('lionfish_comshop_goods_option')->where(['goods_id' => $trade_info['goods_id'] ])->find();
- if( empty($goods_option) )
- {
- //return ['code' => 1, 'message' => '腾讯要求商品必须有规格,您的商品不符合审核要求'];
- }
- $goods_info = M('lionfish_comshop_goods')->where(['id' => $trade_info['goods_id'] ])->find();
- $goods_common_info = M('lionfish_comshop_good_common')->where(['goods_id' => $trade_info['goods_id'] ])->find();
- $piclist_arr = M('lionfish_comshop_goods_images')->where( array('goods_id' => $trade_info['goods_id'] ) )->order('id asc')->select();
- $piclist = [];
- foreach($piclist_arr as $val)
- {
- $piclist[] = tomedia($val['image']);
- }
- if( empty($goods_common_info['big_img']) )
- {
- $big_img = $piclist[0];
- }else{
- $big_img = tomedia($goods_common_info['big_img']);
- }
- $qualification_imagelist = unserialize( $trade_info['qualification_imagelist']);
- if( !empty($qualification_imagelist) )
- {
- foreach( $qualification_imagelist as $key => $val )
- {
- $qualification_imagelist[$key] = tomedia( $val );
- }
- }
- //开始构造资料
- $data = [];
- $data['out_product_id'] = $trade_info['goods_id'];
- $data['title'] = $goods_info['goodsname'];
- $data['path'] = "lionfish_comshop/pages/goods/goodsDetail?id=".$trade_info['goods_id'];
- $data['head_img'] = $piclist;
- if( !empty($qualification_imagelist) )
- {
- $data['qualification_pics'] = $qualification_imagelist;
- }
- $data['third_cat_id'] = $trade_info['third_cate_id'];
- $data['brand_id'] = '2100000000';
- $goods_option_item_value = M('lionfish_comshop_goods_option_item_value')->where(['goods_id' => $trade_info['goods_id'] ])->order('id asc')->select();
- $sku_list = [];
- if( !empty($goods_option_item_value) )
- {
- foreach($goods_option_item_value as $value )
- {
- $option_item_ids = $value['option_item_ids'];
- $productprice = $value['productprice'];
- $marketprice = $value['marketprice'];
- $stock = $value['stock'];
- $option_item_ids_arr = explode('_', $option_item_ids );
- $sku_attr = [];
- $image = '';
- foreach( $option_item_ids_arr as $option_item_id )
- {
- $option_item_value = M('lionfish_comshop_goods_option_item')->where(['id' => $option_item_id ])->find();
- $title = $option_item_value['title'];
- $goods_option_id = $option_item_value['goods_option_id'];
- $thumb = empty($option_item_value['thumb']) ? '' : tomedia( $option_item_value['thumb'] );
- if( !empty($thumb) )
- {
- $image = $thumb;
- }
- $goods_option_value = M('lionfish_comshop_goods_option')->where(['id' => $goods_option_id])->find();
- $option_title = $goods_option_value['title'];
- $sku_attr['attr_key'] = '请选择'.$option_title;
- $sku_attr['attr_value'] = $title;
- }
- $sku = [];
- $sku['out_product_id'] = $trade_info['goods_id'];
- $sku['out_sku_id'] = $value['id'];
- $sku['thumb_img'] = empty($image) ? $big_img : $image;
- $sku['sale_price'] = round($productprice, 2 );
- $sku['market_price'] = round($marketprice, 2 );
- $sku['stock_num'] = $stock;
- $sku['skus'] = $sku_attr;
- $sku_list[] = $sku;
- }
- }else{
- $sku = [];
- $sku['out_product_id'] = $trade_info['goods_id'];
- $sku['out_sku_id'] = $trade_info['goods_id'];
- $sku['thumb_img'] = empty($image) ? $big_img : $image;
- $sku['sale_price'] = round($goods_info['price'], 2 );
- $sku['market_price'] = round($goods_info['productprice'], 2 );
- $sku['stock_num'] = $goods_info['total'];
- $sku_attr = [];
- $sku_attr[0]['attr_key'] = '请选择商品';
- $sku_attr[0]['attr_value'] = empty($goods_info['subtitle']) ? $goods_info['goodsname'] : $goods_info['subtitle'];
- $sku['skus'] = $sku_attr;
- $sku_list[] = $sku;
- }
- $data['skus'] = $sku_list;
- $access_token = $this->getMpAccessToken();
- if($is_update == 1)
- {
- $url = "https://api.weixin.qq.com/shop/spu/update?access_token={$access_token}";
- }else{
- $url = "https://api.weixin.qq.com/shop/spu/add?access_token={$access_token}";
- }
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 上传图片获取mediaid
- * @param $file_path
- * @demo array(2) { ["code"]=> int(0) ["media_id"]=> string(96) "wxashop_OwtQWWaTP5KqZ0Y6RECb5bcWKg2hI9W7E/vTIAPaNAvqxnibXr3xcD/KEowcvTzbSEDkD3Q6lvhTB6437AHymw==" }
- * @return mixed
- */
- public function uploadImg( $file_path )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/img/upload?access_token={$access_token}";
- $data = [];
- $data['media'] = '@'.$file_path;
- $cfile = new \CURLFile($file_path );
- $imgdata = array('media' => $cfile);
- $result_json = $this->sendhttps_post( $url , $imgdata );
- $result = json_decode( $result_json, true );
- if( $result['errcode'] == 0 )
- {
- return ['code' => 0, 'media_id' => $result['img_info']['media_id'] ];
- }else{
- return ['code' => 1, 'message' => $result['errmsg'].':errcode='.$result['errmsg'] ];
- }
- }
- /**
- * @author yj
- * @desc 上传品牌信息
- * @param $license 营业执照或组织机构代码证,图片url/media_id
- * @param $brand_audit_type 认证审核类型 RegisterType
- * @param $trademark_type 商标分类 TrademarkType
- * @param $brand_management_type 选择品牌经营类型 BrandManagementType
- * @param $commodity_origin_type 商品产地是否进口 CommodityOriginType
- * @param $brand_wording 商标/品牌词
- * @param $sale_authorization 销售授权书(如商持人为自然人,还需提供有其签名的身份证正反面扫描件),图片url/media_id
- * @param $trademark_registration_certificate 商标注册证书,图片url/media_id
- * @param $trademark_change_certificate 商标变更证明,图片url/media_id
- * @param $trademark_registrant 商标注册人姓名
- * @param $trademark_registrant_nu 商标注册号/申请号
- * @param $trademark_authorization_period 商标有效期,yyyy-MM-dd HH:mm:ss
- * @param $trademark_registration_application 商标注册申请受理通知书,图片url/media_id
- * @param $trademark_applicant 商标申请人姓名
- * @param $trademark_application_time 商标申请时间, yyyy-MM-dd HH:mm:ss
- * @param string $imported_goods_form 中华人民共和国海关进口货物报关单,图片url/media_id
- * @说明:
- * 枚举-WxaAuditSourceType
- 1 注册
- 2 改名
- 3 新增品牌
- 4 新增类目
- 5 新增品牌类目
- 6 新增商品
- 7 支付审核
- *枚举-RegisterType
- * 1 国内品牌申请-R标
- 2 国内品牌申请-TM标
- 3 海外品牌申请-R标
- 4 海外品牌申请-TM标
- * 枚举-TrademarkType
- "1" 第1类
- "2" 第2类
- "3" 第3类
- ... ...
- "45" 第45类
- *
- * 枚举-BrandRegistrationType
- 枚举值 描述
- 1 R标
- 2 TM标
- 枚举-enum BrandManagementType
- 枚举值 描述
- 1 自有品牌
- 2 代理品牌
- 3 无品牌
- 枚举-CommodityOriginType
- 枚举值 描述
- 1 是
- 2 否
- */
- public function auditBrand( $license ,$brand_audit_type , $trademark_type , $brand_management_type , $commodity_origin_type , $brand_wording, $sale_authorization,
- $trademark_registration_certificate, $trademark_change_certificate ,
- $trademark_registrant, $trademark_registrant_nu , $trademark_authorization_period, $trademark_registration_application ,
- $trademark_applicant, $trademark_application_time , $imported_goods_form = '')
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/audit/audit_brand?access_token={$access_token}";
- $data = [];
- $data['audit_req'] = [];
- $data['audit_req']['audit_req'] = $license;
- $data['audit_req']['brand_info'] = [];
- $data['audit_req']['brand_info']['brand_audit_type'] = $brand_audit_type;
- $data['audit_req']['brand_info']['trademark_type'] = $trademark_type;
- $data['audit_req']['brand_info']['brand_management_type'] = $brand_management_type;
- $data['audit_req']['brand_info']['commodity_origin_type'] = $commodity_origin_type;
- $data['audit_req']['brand_info']['brand_wording'] = $brand_wording;
- $data['audit_req']['brand_info']['sale_authorization'] = $sale_authorization;
- $data['audit_req']['brand_info']['trademark_registration_certificate'] = $trademark_registration_certificate;
- $data['audit_req']['brand_info']['trademark_change_certificate'] = $trademark_change_certificate;
- $data['audit_req']['brand_info']['trademark_registrant'] = $trademark_registrant;
- $data['audit_req']['brand_info']['trademark_registrant_nu'] = $trademark_registrant_nu;
- $data['audit_req']['brand_info']['trademark_authorization_period'] = $trademark_authorization_period;
- $data['audit_req']['brand_info']['trademark_registration_application'] = $trademark_registration_application;
- $data['audit_req']['brand_info']['trademark_applicant'] = $trademark_applicant;
- $data['audit_req']['brand_info']['trademark_application_time'] = $trademark_application_time;
- $data['audit_req']['brand_info']['imported_goods_form'] = $imported_goods_form;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 类目审核
- * @param $license 营业执照或组织机构代码证,图片url
- * @param $level1 一级类目
- * @param $level2 二级类目
- * @param $level3 三级类目
- * @param $certificate 资质材料,图片url
- * @return mixed
- */
- public function auditCategory($license , $level1 , $level2 , $level3 , $certificate )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/audit/audit_category?access_token={$access_token}";
- $data = [];
- $data['audit_req'] = [];
- $data['audit_req']['license'] = $license;
- $data['audit_req']['category_info'] = [];
- $data['audit_req']['category_info']['level1'] = $level1;
- $data['audit_req']['category_info']['level2'] = $level2;
- $data['audit_req']['category_info']['level3'] = $level3;
- $data['audit_req']['category_info']['certificate'] = $certificate;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 获取小程序资质 该接口返回的是曾经在小程序方提交过的审核,非组件的入驻审核! 如果曾经没有提交,没有储存历史文件,或是获取失败,接口会返回1050006
- * @return mixed
- */
- public function getMiniappCertificate()
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/audit/get_miniapp_certificate?access_token={$access_token}";
- $data = [];
- $data['req_type'] = 2;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 获取小程序accesstoken
- * @return mixed
- */
- public function getMpAccessToken()
- {
- $weixin_config = array();
- $weixin_config['appid'] = D('Home/Front')->get_config_by_name('wepro_appid');
- $weixin_config['appscert'] = D('Home/Front')->get_config_by_name('wepro_appsecret');
- $jssdk = new \Lib\Weixin\Jssdk( $weixin_config['appid'], $weixin_config['appscert']);
- $re_access_token = $jssdk->getweAccessToken();
- return $re_access_token;
- }
- /**
- * @author yj
- * @desc 获取提交给腾讯的商品列表
- * @param int $page
- * @param int $perpage
- * @param int $need_edit_spu 默认0:获取线上数据, 1:获取草稿数据
- *
- * 枚举-edit_status
- 枚举值 描述
- 0 初始值
- 1 编辑中
- 2 审核中
- 3 审核失败
- 4 审核成功
- * 枚举-status
- 枚举值 描述
- 0 初始值
- 5 上架
- 11 自主下架
- 13 违规下架/风控系统下架
- * @return mixed
- */
- public function getTxGoodsList( $page =1 , $perpage = 20 , $need_edit_spu = 0)
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/spu/get_list?access_token={$access_token}";
- $data = [];
- $data['page'] = $page;
- $data['page_size'] = $perpage;
- $data['need_edit_spu'] = $need_edit_spu;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 撤销审核
- * @param $out_product_id
- * @return mixed
- */
- public function delAudit( $out_product_id )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/spu/del_audit?access_token={$access_token}";
- $data = [];
- $data['out_product_id'] = $out_product_id;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 上架商品--自助下架的才能上架
- * @param $out_product_id
- * @return mixed
- */
- public function listing( $out_product_id )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/spu/listing?access_token={$access_token}";
- $data = [];
- $data['out_product_id'] = $out_product_id;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- public function delisting( $out_product_id )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/spu/delisting?access_token={$access_token}";
- $data = [];
- $data['out_product_id'] = $out_product_id;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- return $result;
- }
- /**
- * @author yj
- * @desc 删除商品
- * @param $out_product_id
- * @return mixed
- */
- public function del( $out_product_id )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/spu/del?access_token={$access_token}";
- $data = [];
- $data['out_product_id'] = $out_product_id;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- if( $result['errcode'] == 0 )
- {
- M('lionfish_comshop_goods_tradecomponts')->where(['goods_id' => $out_product_id ])->delete();
- }
- return $result;
- }
- /**
- * @author yj
- * @desc 检验场景是否需要校验支付
- * @param string $scene
- * 参数 类型 说明
- errcode number 错误码
- errmsg string 错误信息
- is_matched number 0: 不在支付校验范围内,1: 在支付校验范围内
- * @return mixed
- */
- public function sceneCheck( $scene = '1175' )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/scene/check?access_token={$access_token}";
- $data = [];
- $data['scene'] = $scene;
- $result_json = $this->sendhttps_post( $url , json_encode( $data ) );
- $result = json_decode( $result_json, true );
- if( $result['errcode'] == 0 && $result['is_matched'] == 1 )
- {
- return 1;
- }else{
- return 0;
- }
- }
- /**
- * @author yj
- * @desc 获取交易订单信息
- * https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/requestOrderPayment.html
- * @param $order_id
- */
- public function getTradeOrderInfo( $order_id , $time , $pay_total )
- {
- /**
- {
- "create_time": "2020-03-25 13:05:25",
- "type": 0, // 非必填,默认为0。0:普通场景, 1:合单支付
- "out_order_id": "xxxxx", // 必填,普通场景下的外部订单ID;合单支付(多订单合并支付一次)场景下是主外部订单ID
- "openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
- "path": "/pages/order.html?out_order_id=xxxxx", // 这里的path中的最好有一个参数的值能和out_order_id的值匹配上
- "out_user_id": "323232323",
- "order_detail":
- {
- "product_infos":
- [
- {
- "out_product_id": "12345",
- "out_sku_id":"23456",
- "product_cnt": 10,
- "sale_price": 100, //生成这次订单时商品的售卖价,可以跟上传商品接口的价格不一致
- "path": "pages/productDetail/productDetail?productId=2176180",
- "title" : "洗洁精",
- "head_img": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/85865/39/13611/488083/5e590a40E4bdf69c0/55c9bf645ea2b727.jpg",
- },
- ...
- ],
- "pay_info": {
- "pay_method": "微信支付",
- "prepay_id": "42526234625",
- "prepay_time": "2020-03-25 14:04:25"
- },
- "price_info": {
- "order_price": 1600,
- "freight": 500,
- "discounted_price": 100,
- "additional_price": 200,
- "additional_remarks": "税费"
- }
- },
- "delivery_detail": {
- "delivery_type": 1, // 1: 正常快递, 2: 无需快递, 3: 线下配送, 4: 用户自提
- },
- "address_info": {
- "receiver_name": "张三",
- "detailed_address": "详细收货地址信息",
- "tel_number": "收货人手机号码",
- "country": "国家,选填",
- "province": "省份,选填",
- "city": "城市,选填",
- "town": "乡镇,选填"
- }
- }
- */
- $order_info = M('lionfish_comshop_order')->where( array('order_id' => $order_id ) )->find();
- $member_info = M('lionfish_comshop_member')->where(['member_id' => $order_info['member_id'] ])->find();
- //we_openid
- $need_data = [];
- $need_data['create_time'] = date('Y-m-d H:i:s', $order_info['date_added'] );
- $need_data['out_order_id'] = $order_id;
- $need_data['openid'] = $member_info['we_openid'];
- $need_data['path'] = 'lionfish_comshop/pages/order/order?id='.$order_id;
- //订单详情todo...
- $order_detail = [];
- $order_goods_list = M('lionfish_comshop_order_goods')->where(['order_id' => $order_id ])->select();
- foreach($order_goods_list as $order_goods )
- {
- $product_infos = [];
- $product_infos['out_product_id'] = $order_goods['goods_id'];
- $product_infos['out_sku_id'] = "";
- $product_infos['product_cnt'] = $order_goods['quantity'];
- $product_infos['sale_price'] = $order_goods['price'] * 100;
- $product_infos['path'] = "lionfish_comshop/pages/goods/goodsDetail?id=".$order_goods['goods_id'];
- $product_infos['title'] = $order_goods['name'];
- $product_infos['head_img'] = tomedia($order_goods['goods_images']);
- $order_detail['product_infos'][] = $product_infos;
- }
- $pay_info = [];
- $pay_info['pay_method'] = '微信支付';
- $pay_info['prepay_id'] = $order_info['perpay_id'];
- $pay_info['prepay_time'] = date('Y-m-d H:i:s', $time );
- $order_detail['pay_info'] = $pay_info;
- $price_info = [];
- $price_info['order_price'] = $pay_total * 100;
- $price_info['freight'] = 0;
- $order_detail['price_info'] = $price_info;
- $need_data['order_detail'] = $order_detail;
- $need_data['delivery_detail'] = ['delivery_type' => 3];
- $address_info = [];
- $address_info['receiver_name'] = $order_info['shipping_name'];
- $address_info['detailed_address'] = $order_info['shipping_address'];
- $address_info['tel_number'] = $order_info['shipping_tel'];
- $need_data['address_info'] = $address_info;
- M('lionfish_comshop_order')->where( ['order_id' => $order_id ] )->save( ['from_type' => 'tradecomponts '] );
- //同步增加订单数据
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/order/add?access_token={$access_token}";
- $result_json = $this->sendhttps_post( $url , json_encode( $need_data ) );
- //$result = json_decode( $result_json, true );
- return ['code' => 0 , 'order_info' => $need_data ];
- }
- /**
- * @author yj
- * @desc 微信交易组件,订单支付成功
- * @param $order_id
- * @param string $action_type
- */
- public function orderPay( $order_id, $action_type = '1' )
- {
- $access_token = $this->getMpAccessToken();
- $url = "https://api.weixin.qq.com/shop/order/pay?access_token={$access_token}";
- $order_info = M('lionfish_comshop_order')->where( array('order_id' => $order_id ) )->find();
- $member_info = M('lionfish_comshop_member')->where(['member_id' => $order_info['member_id'] ])->find();
- $need_data = [];
- $need_data['out_order_id'] = $order_id;
- $need_data['openid'] = $member_info['we_openid'];
- $need_data['action_type'] = $action_type;
- $need_data['action_remark'] = '';
- $need_data['transaction_id'] = $order_info['transaction_id'];
- $need_data['pay_time'] = date('Y-m-d H:i:s', $order_info['pay_time'] );
- $result_json = $this->sendhttps_post( $url , json_encode( $need_data ) );
- }
- /**
- * @author yj
- * @desc 检测是否开启商品组件功能模块
- * @param $goods_id
- * @return int
- */
- public function checkGoodsIsTradeComponts( $goods_id )
- {
- $isopen_tradecomponts = D('Home/Front')->get_config_by_name('isopen_tradecomponts');
- $isopen_tradecomponts = !isset($isopen_tradecomponts) || $isopen_tradecomponts == 0 ? 0 : 1;
- if( $isopen_tradecomponts == 0 )
- {
- return 0;
- }
- $info = M('lionfish_comshop_goods_tradecomponts')->where( ['goods_id' => $goods_id] )->find();
- if( !empty($info) )
- {
- return 1;
- }else{
- return 0;
- }
- }
- }
- ?>
|