ByteDancePay.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace app\service\byte_dance;
  3. use think\Cache;
  4. use think\Collection;
  5. class ByteDancePay implements ByteDanceInterface {
  6. protected $data=[
  7. 'out_order_no'=>'',
  8. 'total_amount'=>'',
  9. 'subject'=>'',
  10. 'body'=>'',
  11. 'valid_time'=>86400,
  12. 'notify_url'=>'',
  13. 'thirdparty_id'=>''
  14. ];
  15. public function __construct()
  16. {
  17. }
  18. /**
  19. * @param mixed $order_no
  20. * @param $amount
  21. * @param $subject
  22. * @return ByteDancePay
  23. */
  24. public static function setInfo($order_no,$amount,$subject)
  25. {
  26. $class=new self;
  27. $class->data['app_id']=ByteDance::appId();
  28. $class->data['out_order_no'] = $order_no;
  29. $class->data['total_amount'] = $amount*100;
  30. $class->data['subject'] = $subject;
  31. $class->data['body'] = $subject;
  32. $class->data['notify_url']=request()->domain().'/index/payment/notify_dy/order_no/'.$order_no;
  33. return $class;
  34. }
  35. /**
  36. * @param mixed $order_no
  37. * @param $amount
  38. * @param $subject
  39. * @return ByteDancePay
  40. */
  41. public static function setInfo2($order_no,$amount,$subject)
  42. {
  43. $class=new self;
  44. $class->data['app_id']=ByteDance::appIdTwo();
  45. $class->data['out_order_no'] = $order_no;
  46. $class->data['total_amount'] = $amount*100;
  47. $class->data['subject'] = $subject;
  48. $class->data['body'] = $subject;
  49. $class->data['notify_url']=request()->domain().'/index/payment/notify_dy_two/order_no/'.$order_no;
  50. return $class;
  51. }
  52. /**
  53. * @param mixed $order_no
  54. * @param $amount
  55. * @param $subject
  56. * @return ByteDancePay
  57. */
  58. public static function setInfo3($order_no,$amount,$subject)
  59. {
  60. $class=new self;
  61. $class->data['app_id']=ByteDance::appIdThree();
  62. $class->data['out_order_no'] = $order_no;
  63. $class->data['total_amount'] = $amount*100;
  64. $class->data['subject'] = $subject;
  65. $class->data['body'] = $subject;
  66. $class->data['notify_url']=request()->domain().'/index/payment/notify_dy_three/order_no/'.$order_no;
  67. return $class;
  68. }
  69. public function get()
  70. {
  71. $data=$this->data;
  72. $data['sign']=ByteDance::sign($data);
  73. $order=ByteDance::httpPost('https://developer.toutiao.com/api/apps/ecpay/v1/create_order',$data);
  74. $obj=ByteDanceResult::make();
  75. foreach ($order as $key=>$item){
  76. $obj->offsetSet($key,$item);
  77. }
  78. return $obj;
  79. }
  80. public function getWangKa()
  81. {
  82. $data=$this->data;
  83. $data['sign']=ByteDance::signWangKa($data);
  84. $order=ByteDance::httpPost('https://developer.toutiao.com/api/apps/ecpay/v1/create_order',$data);
  85. $obj=ByteDanceResult::make();
  86. foreach ($order as $key=>$item){
  87. $obj->offsetSet($key,$item);
  88. }
  89. return $obj;
  90. }
  91. public function getHaoYuan()
  92. {
  93. $data=$this->data;
  94. $data['sign']=ByteDance::signHaoYuan($data);
  95. $order=ByteDance::httpPost('https://developer.toutiao.com/api/apps/ecpay/v1/create_order',$data);
  96. $obj=ByteDanceResult::make();
  97. foreach ($order as $key=>$item){
  98. $obj->offsetSet($key,$item);
  99. }
  100. return $obj;
  101. }
  102. }
  103. /**
  104. * @property string $order_id
  105. * @property string $order_token
  106. * @property string $url
  107. */
  108. class ByteDanceResult extends Collection {}