# 平台退款退货
文件路径:
shop\\controllers\\Api\\Trade\\ReturnCtl.php
方法:
agree()
参数:
order\_return\_id:退单id
return\_platform\_message:处理备注
# 1.判断商家是否同意此退单,如果不同意则只修改订单状态,不修改商家金额。如果商家同意,则修改订单状态并修改商家金额。
```
<pre class="calibre14">```
<span class="token2">if</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_state'</span><span class="token1">]</span> <span class="token">==</span> Order_ReturnModel<span class="token1">:</span><span class="token1">:</span>RETURN_SELLER_UNPASS<span class="token1">)</span>
<span class="token1">{</span>
<span class="token5">//不同意</span>
$data<span class="token1">[</span><span class="token4">'return_platform_message'</span><span class="token1">]</span> <span class="token">=</span> $return_platform_message<span class="token1">;</span>
$data<span class="token1">[</span><span class="token4">'return_state'</span><span class="token1">]</span> <span class="token">=</span> Order_ReturnModel<span class="token1">:</span><span class="token1">:</span>RETURN_PLAT_PASS<span class="token1">;</span>
$data<span class="token1">[</span><span class="token4">'return_finish_time'</span><span class="token1">]</span> <span class="token">=</span> <span class="token3">get_date_time</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$rs_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$this<span class="token">-</span><span class="token">></span>Order_ReturnModel<span class="token">-</span><span class="token">></span>sql<span class="token">-</span><span class="token">></span><span class="token3">startTransactionDb</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_ReturnModel<span class="token">-</span><span class="token">></span><span class="token3">editReturn</span><span class="token1">(</span>$order_return_id<span class="token1">,</span> $data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token2">if</span> <span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_goods_return'</span><span class="token1">]</span><span class="token1">)</span>
<span class="token1">{</span>
<span class="token5">//商品退换情况为完成2</span>
$goods_data<span class="token1">[</span><span class="token4">'goods_refund_status'</span><span class="token1">]</span> <span class="token">=</span> Order_GoodsModel<span class="token1">:</span><span class="token1">:</span>REFUND_COM<span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">editGoods</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_id'</span><span class="token1">]</span><span class="token1">,</span> $goods_data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token2">else</span>
<span class="token1">{</span>
$goods_data<span class="token1">[</span><span class="token4">'goods_return_status'</span><span class="token1">]</span> <span class="token">=</span> Order_GoodsModel<span class="token1">:</span><span class="token1">:</span>REFUND_COM<span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">editGoods</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_id'</span><span class="token1">]</span><span class="token1">,</span> $goods_data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
# 2.商家同意退款的情况
(1)修改退单的状态
```
<pre class="calibre14">```
$data<span class="token1">[</span><span class="token4">'return_platform_message'</span><span class="token1">]</span> <span class="token">=</span> $return_platform_message<span class="token1">;</span>
$data<span class="token1">[</span><span class="token4">'return_state'</span><span class="token1">]</span> <span class="token">=</span> Order_ReturnModel<span class="token1">:</span><span class="token1">:</span>RETURN_PLAT_PASS<span class="token1">;</span>
$data<span class="token1">[</span><span class="token4">'return_finish_time'</span><span class="token1">]</span> <span class="token">=</span> <span class="token3">get_date_time</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$rs_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$this<span class="token">-</span><span class="token">></span>Order_ReturnModel<span class="token">-</span><span class="token">></span>sql<span class="token">-</span><span class="token">></span><span class="token3">startTransactionDb</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_ReturnModel<span class="token">-</span><span class="token">></span><span class="token3">editReturn</span><span class="token1">(</span>$order_return_id<span class="token1">,</span> $data<span class="token1">)</span><span class="token1">;</span>
```
```
(2)根据退款/退货情况,修改订单商品的状态
```
<pre class="calibre14">```
<span class="token2">if</span> <span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_goods_return'</span><span class="token1">]</span><span class="token1">)</span>
<span class="token1">{</span>
<span class="token5">//商品退换情况为完成2</span>
$goods_data<span class="token1">[</span><span class="token4">'goods_refund_status'</span><span class="token1">]</span> <span class="token">=</span> Order_GoodsModel<span class="token1">:</span><span class="token1">:</span>REFUND_COM<span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">editGoods</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_id'</span><span class="token1">]</span><span class="token1">,</span> $goods_data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token2">else</span>
<span class="token1">{</span>
$goods_data<span class="token1">[</span><span class="token4">'goods_return_status'</span><span class="token1">]</span> <span class="token">=</span> Order_GoodsModel<span class="token1">:</span><span class="token1">:</span>REFUND_COM<span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">editGoods</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_id'</span><span class="token1">]</span><span class="token1">,</span> $goods_data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
```
```
(3)将退款金额,退还佣金,退还红包,退货数量等写入订单表
```
<pre class="calibre14">```
$order_edit<span class="token1">[</span><span class="token4">'order_refund_amount'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_cash'</span><span class="token1">]</span><span class="token1">;</span>
$order_edit<span class="token1">[</span><span class="token4">'order_return_num'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_num'</span><span class="token1">]</span><span class="token1">;</span>
$order_edit<span class="token1">[</span><span class="token4">'order_commission_return_fee'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_commision_fee'</span><span class="token1">]</span><span class="token1">;</span>
$order_edit<span class="token1">[</span><span class="token4">'order_rpt_return'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_rpt_cash'</span><span class="token1">]</span><span class="token1">;</span>
$edit_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_BaseModel<span class="token">-</span><span class="token">></span><span class="token3">editBase</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_number'</span><span class="token1">]</span><span class="token1">,</span> $order_edit<span class="token1">,</span><span class="token6">true</span><span class="token1">)</span><span class="token1">;</span>
```
```
(4)如果此订单为退款订单,并且将所有商品退还,则就订单状态修改为完成状态
```
<pre class="calibre14">```
<span class="token2">if</span><span class="token1">(</span>$order_all_goods_num <span class="token">==</span> $order_return_num <span class="token">&&</span> $order_base<span class="token1">[</span><span class="token4">'order_status'</span><span class="token1">]</span> <span class="token">!==</span> $Order_StateModel<span class="token1">:</span><span class="token1">:</span>ORDER_FINISH<span class="token1">)</span>
<span class="token1">{</span>
$order_edit_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$order_edit_row<span class="token1">[</span><span class="token4">'order_status'</span><span class="token1">]</span> <span class="token">=</span> $Order_StateModel<span class="token1">:</span><span class="token1">:</span>ORDER_FINISH<span class="token1">;</span>
$edit_flag2 <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_BaseModel<span class="token">-</span><span class="token">></span><span class="token3">editBase</span><span class="token1">(</span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_number'</span><span class="token1">]</span><span class="token1">,</span> $order_edit_row<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$edit_flag2<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
```
```
(5)在paycenter中增加退款流水
判断该笔订单是否是主账号支付,如果是主账号支付,则将退款金额退还主账号
```
<pre class="calibre14">```
<span class="token2">if</span><span class="token1">(</span>$order_base<span class="token1">[</span><span class="token4">'order_sub_pay'</span><span class="token1">]</span> <span class="token">==</span> Order_StateModel<span class="token1">:</span><span class="token1">:</span>SUB_SELF_PAY<span class="token1">)</span>
<span class="token1">{</span>
$return_user_id <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'buyer_user_id'</span><span class="token1">]</span><span class="token1">;</span>
$return_user_name <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'buyer_user_account'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token2">if</span><span class="token1">(</span>$order_base<span class="token1">[</span><span class="token4">'order_sub_pay'</span><span class="token1">]</span> <span class="token">==</span> Order_StateModel<span class="token1">:</span><span class="token1">:</span>SUB_USER_PAY<span class="token1">)</span>
<span class="token1">{</span>
<span class="token5">//查找主管账户用户名</span>
$User_BaseModel <span class="token">=</span> <span class="token2">new</span> <span class="token3">User_BaseModel</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$sub_user_base <span class="token">=</span> $User_BaseModel<span class="token">-</span><span class="token">></span><span class="token3">getOne</span><span class="token1">(</span>$order_base<span class="token1">[</span><span class="token4">'order_sub_user'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
$return_user_id <span class="token">=</span> $order_base<span class="token1">[</span><span class="token4">'order_sub_user'</span><span class="token1">]</span><span class="token1">;</span>
$return_user_name <span class="token">=</span> $sub_user_base<span class="token1">[</span><span class="token4">'user_account'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
$key <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_api_key'</span><span class="token1">)</span><span class="token1">;</span>
$url <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'paycenter_api_url'</span><span class="token1">)</span><span class="token1">;</span>
$shop_app_id <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_app_id'</span><span class="token1">)</span><span class="token1">;</span>
$formvars <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'app_id'</span><span class="token1">]</span> <span class="token">=</span> $shop_app_id<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'user_id'</span><span class="token1">]</span> <span class="token">=</span> $return_user_id<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'user_account'</span><span class="token1">]</span> <span class="token">=</span> $return_user_name<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'seller_id'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'seller_user_id'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'seller_account'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'seller_user_account'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'amount'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_cash'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'return_commision_fee'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'return_commision_fee'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'order_id'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_number'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'goods_id'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_goods_id'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'uorder_id'</span><span class="token1">]</span> <span class="token">=</span> $order_base<span class="token1">[</span><span class="token4">'payment_other_number'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'payment_id'</span><span class="token1">]</span> <span class="token">=</span> $order_base<span class="token1">[</span><span class="token4">'payment_id'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token5">//平台同意退款(只增加买家的流水)</span>
$rs <span class="token">=</span> <span class="token3">get_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> <span class="token3">sprintf</span><span class="token1">(</span><span class="token4">'%s?ctl=Api_Pay_Pay&met=refundBuyerTransfer&typ=json'</span><span class="token1">,</span> $url<span class="token1">)</span><span class="token1">,</span> $formvars<span class="token1">)</span><span class="token1">;</span>
```
```
(6)如果订单金额全数退还需要将订单商品,支付中心的订单状态修改为订单完成(未发货)
```
<pre class="calibre15">```
<span class="token2">if</span><span class="token1">(</span>$order_all_goods_num <span class="token">==</span> $order_return_num <span class="token">&&</span> $order_base<span class="token1">[</span><span class="token4">'order_status'</span><span class="token1">]</span> <span class="token">==</span> Order_StateModel<span class="token1">:</span><span class="token1">:</span>ORDER_PAYED<span class="token1">)</span>
<span class="token1">{</span>
$goods_data<span class="token1">[</span><span class="token4">'order_goods_status'</span><span class="token1">]</span> <span class="token">=</span> $Order_StateModel<span class="token1">:</span><span class="token1">:</span>ORDER_FINISH<span class="token1">;</span>
$order_goods_ids <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">getByWhere</span><span class="token1">(</span><span class="token3">array</span><span class="token1">(</span><span class="token4">'order_id'</span><span class="token">=</span><span class="token">></span>$<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_number'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">)</span><span class="token1">;</span>
$ed_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>Order_GoodsModel<span class="token">-</span><span class="token">></span><span class="token3">editGoods</span><span class="token1">(</span>$order_goods_ids<span class="token1">,</span> $goods_data<span class="token1">)</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$ed_flag<span class="token1">,</span> $rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token5">//将需要确认的订单号远程发送给Paycenter修改订单状态</span>
<span class="token5">//远程修改paycenter中的订单状态</span>
$key <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_api_key'</span><span class="token1">)</span><span class="token1">;</span>
$url <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'paycenter_api_url'</span><span class="token1">)</span><span class="token1">;</span>
$shop_app_id <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_app_id'</span><span class="token1">)</span><span class="token1">;</span>
$formvars <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'order_id'</span><span class="token1">]</span> <span class="token">=</span> $<span class="token2">return</span><span class="token1">[</span><span class="token4">'order_number'</span><span class="token1">]</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'app_id'</span><span class="token1">]</span> <span class="token">=</span> $shop_app_id<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'from_app_id'</span><span class="token1">]</span> <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_app_id'</span><span class="token1">)</span><span class="token1">;</span>
$rs <span class="token">=</span> <span class="token3">get_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> <span class="token3">sprintf</span><span class="token1">(</span><span class="token4">'%s?ctl=Api_Pay_Pay&met=confirmOrder&typ=json'</span><span class="token1">,</span> $url<span class="token1">)</span><span class="token1">,</span> $formvars<span class="token1">)</span><span class="token1">;</span>
<span class="token2">if</span><span class="token1">(</span>$rs<span class="token1">[</span><span class="token4">'status'</span><span class="token1">]</span> <span class="token">==</span> <span class="token6">250</span><span class="token1">)</span>
<span class="token1">{</span>
$rs_flag <span class="token">=</span> <span class="token6">false</span><span class="token1">;</span>
<span class="token3">check_rs</span><span class="token1">(</span>$rs_flag<span class="token1">,</span>$rs_row<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
- 序言
- 系统要求
- 版本更新日志
- 远丰商城技术对接说明
- 开发指导
- 框架内容
- 基础
- 开发规范
- 目录结构
- 架构
- 架构总览
- 数据库
- 数据库连接
- 基本使用
- 缓存
- 配置
- 路由
- 数据字典
- ucenter
- shop
- paycenter
- ucenter_admin
- shop_admin
- paycenter_admin
- 通讯内容
- 商家中心
- 顶部导航栏
- 店铺信息栏
- 店铺及商品提示栏
- 交易提示栏
- 销售情况统计栏
- 单品销量排行栏
- 店铺运营推广栏
- 平台联系方式栏
- 订单物流
- 商品
- 商品列表
- 商品详情
- 商品发布与编辑
- 分销商品
- 关联版式
- 商品规格
- 图片空间
- 淘宝导入
- 订单流程
- 交易订单
- 订单退款/退货
- 促销
- 团购管理
- 加价购
- 限时折扣
- 满即送
- 代金券管理
- 分销
- 店铺
- 店铺设置
- 自销产品供应商
- 实体店铺
- 品牌申请
- 店铺信息
- 消费者保障服务
- 门店账号
- 分销商--产品供应商
- 分销明细
- 批发市场
- 售后服务
- 咨询管理
- 投诉管理
- 退款管理
- 退货管理
- 云方案架构
- 负载集群
- 云存储
- 接口
- Api接口说明
- 品牌
- 商品规格
- 商品类型
- 商品分类
- 商品
- 订单
- 商品/店铺收藏
- 足迹
- 退款及退货
- 商家店铺
- 会员
- 入驻协议
- 订单接口
- 商品接口
- 订单物流接口
- 商家中心接口
- 促销接口
- 快递鸟物流接口
- 代金券接口
- 首页版块
- 团购
- 平台红包
- 限时折扣接口
- 拼团接口
- wap首页模板
- 杂项
- 远程上传图片
- JS
- 银联支付
- 多语言
- 商品评分
- 图片加载
- 买家申请退款退货
- 商家退款退货
- 平台退款退货
- 添加发票
- 提交订单
- 确认订单
- 运费销售区域
- 获取会员地址
- 充值
- 导出XLS
- 商城系统集成
- 多语言实现
- 三级分销推广链接发展推广员
- app.ini.php
- 去分销
- 版本更新
- 物流支持
- 运营人员建议
- 业务逻辑
- 统计结算
- 客服消息
- 账号
- 三级分销
- IM
- 配置
- 平台帐号
- 活动数据表说明