ApplePayFire.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * ApplePayFire.php UTF-8
  4. * 苹果支付队列
  5. *
  6. * @date : 2018/6/11 19:49
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huolib\queue\job;
  13. use huosdk\h5ios\core\controller\ApplePay;
  14. use think\Log;
  15. use think\queue\Job;
  16. class ApplePayFire extends Fire {
  17. /**
  18. * fire方法是消息队列默认调用的方法
  19. *
  20. * @param Job $job 当前的任务对象
  21. * @param array|mixed $data 发布任务时自定义的数据
  22. */
  23. public function fire(Job $job, $data) {
  24. $_is_job_done = $this->doJob($data);
  25. if ($_is_job_done) {
  26. //如果任务执行成功, 记得删除任务
  27. $job->delete();
  28. } else {
  29. if ($job->attempts() > 3) {
  30. /* 记录队列值 */
  31. Log::write(
  32. "func=".__FUNCTION__."&class=".__CLASS__.'&queue='.$job->getQueue().'&name='.$job->getName()
  33. .'&data='.json_encode($data).'&error',
  34. LOG::QUEUE
  35. );
  36. $job->delete();
  37. }
  38. }
  39. }
  40. /**
  41. * 根据消息中的数据进行实际的业务处理
  42. *
  43. * @param array $data 发布任务时自定义的数据
  44. *
  45. * @return bool 任务执行的结果
  46. */
  47. public function doJob($data) {
  48. if (empty($data)) {
  49. return false;
  50. }
  51. if (empty($data['trans_id'])
  52. || empty($data['receipt_data'])
  53. || !isset($data['order_id'])
  54. || !isset($data['is_sandbox'])) {
  55. return false;
  56. }
  57. return (new ApplePay())->checkAppleOrder(
  58. $data['order_id'], $data['trans_id'], $data['receipt_data'], $data['is_sandbox'], $data['idfv'],
  59. $data['apple_id']
  60. );
  61. }
  62. }