Pay.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. */
  52. class Pay extends Model
  53. {
  54. use HasFactory;
  55. const SOURCE_RECHARGE = 1;
  56. const SOURCE_BUY_VIP = 2;
  57. protected $table = 'pay';
  58. protected $primaryKey = 'pay_id';
  59. protected $casts = [
  60. 'pay_id' => 'string'
  61. ];
  62. public function user(): BelongsTo
  63. {
  64. return $this->belongsTo(User::class,'user_id','id');
  65. }
  66. /**
  67. * @param BaseUniPlatform $uniPlatform
  68. * @param float $price
  69. * @param int $source
  70. * @return array|mixed
  71. */
  72. public function create(BaseUniPlatform $uniPlatform, float $price, int $source)
  73. {
  74. $payId = SerialNumber::createOrderId(\user()->id);
  75. // 字节跳动下单
  76. $res = $uniPlatform->createOrder($payId, $price, \user()->open_id);
  77. $res['pay_id'] = $payId;
  78. $pay = new Pay();
  79. $pay->pay_id = $payId;
  80. $pay->user_id = \user()->id;
  81. $pay->order_fee = $price;
  82. $pay->source = $source;
  83. $pay->prepay_id = $res['order_id'];
  84. $pay->token = $res['order_token'];
  85. $pay->save();
  86. return $res;
  87. }
  88. }