Base.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace app\common\Service\Order\ShippingInfo;
  3. use app\common\Enum\PayEnum;
  4. use app\common\exception\BusinessException;
  5. use app\common\model\pay\Index as PayModel;
  6. class Base
  7. {
  8. protected $order = null;
  9. //protected $deliveryTypes = [];
  10. public function __construct($order)
  11. {
  12. $this->order = $order;
  13. // $this->deliveryTypes = GoodsEnum::getDeliveryTypeList();
  14. }
  15. /**
  16. * 设置微信支付相关的参数
  17. *
  18. * @param array $uploadParams
  19. * @param \think\Model $wechatPay
  20. * @return array
  21. */
  22. protected function setWechatParams($uploadParams, $wechatPay)
  23. {
  24. $order_key = [
  25. 'order_number_type' => 2,
  26. 'transaction_id' => $wechatPay->transaction_id,
  27. 'out_trade_no' => $wechatPay->pay_sn,
  28. ];
  29. $payer = [
  30. 'openid' => $wechatPay['buyer_info']
  31. ];
  32. foreach ($uploadParams as &$params) {
  33. $params['order_key'] = $order_key;
  34. $params['payer'] = $payer;
  35. }
  36. return $uploadParams;
  37. }
  38. /**
  39. * 获取订单中的微信支付 pay 记录
  40. *
  41. * @return think\Model
  42. */
  43. protected function getWechatPay($type = 1)
  44. {
  45. $wechatPay = PayModel::where('order_type', $type)
  46. ->where('order_id', $this->order['id'])
  47. ->where('status', '<>', PayEnum::PAY_STATUS_UNPAID)
  48. ->where('pay_type', PayEnum::METHOD_WECHAT)
  49. ->order('id', 'desc')->find();
  50. if (!$wechatPay) {
  51. throw new BusinessException('未找到订单微信支付记录');
  52. }
  53. return $wechatPay;
  54. }
  55. /**
  56. * 配送方式转换
  57. *
  58. * @param string $deliveryType
  59. * @return integer
  60. */
  61. protected function getLogisticsType($deliveryType)
  62. {
  63. switch ($deliveryType) {
  64. case 'express':
  65. $logistics_type = 1;
  66. break;
  67. case 'store_delivery':
  68. $logistics_type = 2;
  69. break;
  70. case 'autosend':
  71. $logistics_type = 3;
  72. break;
  73. case 'custom':
  74. $logistics_type = 3;
  75. break;
  76. case 'selfetch':
  77. $logistics_type = 4;
  78. break;
  79. default:
  80. $logistics_type = 1;
  81. break;
  82. }
  83. return $logistics_type;
  84. }
  85. }