Pay.php 3.5 KB

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