Pay.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Models;
  3. use App\Helper\ByteDance;
  4. use App\Helper\SerialNumber;
  5. use App\Helper\UniPlatform\BaseUniPlatform;
  6. use Illuminate\Database\Eloquent\Factories\HasFactory;
  7. use Illuminate\Database\Eloquent\Model;
  8. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  9. /**
  10. * App\Models\Pay
  11. *
  12. * @property int $pay_id 订单ID
  13. * @property int $user_id 用户ID
  14. * @property int $store_id 店铺ID
  15. * @property int $pay_type 支付类型
  16. * @property int $status 订单状态
  17. * @property string $pay_dt 支付时间
  18. * @property string $order_fee 订单价格
  19. * @property string $discount_fee 优惠价格
  20. * @property string $handling_fee 手续费
  21. * @property string $prepay_id 微信支付预付单ID
  22. * @property string|null $serial_number 支付流水
  23. * @property string|null $pay_error 支付错误记录
  24. * @property \Illuminate\Support\Carbon $updated_at 删除时间
  25. * @property string $deleted_at 删除时间
  26. * @property \Illuminate\Support\Carbon $created_at 创建时间
  27. * @method static \Illuminate\Database\Eloquent\Builder|Pay newModelQuery()
  28. * @method static \Illuminate\Database\Eloquent\Builder|Pay newQuery()
  29. * @method static \Illuminate\Database\Eloquent\Builder|Pay query()
  30. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereCreatedAt($value)
  31. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereDeletedAt($value)
  32. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereDiscountFee($value)
  33. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereHandlingFee($value)
  34. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereOrderFee($value)
  35. * @method static \Illuminate\Database\Eloquent\Builder|Pay wherePayDt($value)
  36. * @method static \Illuminate\Database\Eloquent\Builder|Pay wherePayError($value)
  37. * @method static \Illuminate\Database\Eloquent\Builder|Pay wherePayId($value)
  38. * @method static \Illuminate\Database\Eloquent\Builder|Pay wherePayType($value)
  39. * @method static \Illuminate\Database\Eloquent\Builder|Pay wherePrepayId($value)
  40. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereSerialNumber($value)
  41. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereStatus($value)
  42. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereStoreId($value)
  43. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereUpdatedAt($value)
  44. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereUserId($value)
  45. * @mixin \Eloquent
  46. * @property int $source 来源 1-购买金币 2-购买会员
  47. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereSource($value)
  48. * @property string|null $token 支付token
  49. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereToken($value)
  50. * @property-read \App\Models\User|null $user
  51. * @property int|null $is_settle 是否结算
  52. * @property string|null $settle_no 结算ID
  53. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereIsSettle($value)
  54. * @method static \Illuminate\Database\Eloquent\Builder|Pay whereSettleNo($value)
  55. */
  56. class Pay extends Model
  57. {
  58. use HasFactory;
  59. const SOURCE_RECHARGE = 1;
  60. const SOURCE_BUY_VIP = 2;
  61. protected $table = 'pay';
  62. protected $primaryKey = 'pay_id';
  63. protected $casts = [
  64. 'pay_id' => 'string'
  65. ];
  66. public function user(): BelongsTo
  67. {
  68. return $this->belongsTo(User::class,'user_id','id');
  69. }
  70. /**
  71. * @param BaseUniPlatform $uniPlatform
  72. * @param float $price
  73. * @param int $source
  74. * @return array|mixed
  75. */
  76. public function create(BaseUniPlatform $uniPlatform, float $price, int $source)
  77. {
  78. $payId = SerialNumber::createOrderId(\user()->id);
  79. // 字节跳动下单
  80. $res = $uniPlatform->createOrder($payId, $price, \user()->open_id);
  81. $res['pay_id'] = $payId;
  82. $pay = new Pay();
  83. $pay->pay_id = $payId;
  84. $pay->user_id = \user()->id;
  85. $pay->order_fee = $price;
  86. $pay->source = $source;
  87. $pay->prepay_id = $res['order_id'];
  88. $pay->token = $res['order_token'];
  89. $pay->save();
  90. return $res;
  91. }
  92. }