Pay.php 4.3 KB

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