WechatController.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Api\v1;
  4. use App\Controller\AbstractController;
  5. use App\Master\Framework\Library\Easywechat\MiniApp;
  6. use App\Master\Framework\Library\Easywechat\PayService;
  7. use App\Request\Api\v1\WechatMiniAppCode;
  8. use App\Utils\AppResult;
  9. /**
  10. * Wechat
  11. * 示例
  12. */
  13. class WechatController extends AbstractController
  14. {
  15. // 日志模块名称
  16. const LOG_MODULE = 'v1/WechatController';
  17. /**
  18. * 小程序授权
  19. *
  20. * @param WechatMiniAppCode $request
  21. * @return string
  22. * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface
  23. */
  24. public function miniAppCode(WechatMiniAppCode $request): string
  25. {
  26. $params = $request->validated();
  27. $mini = new MiniApp();
  28. if (!$mini->jscode2session($params['code'] ?? '')){
  29. return AppResult::response201($mini->getMessage(),$mini->get());
  30. }
  31. /**
  32. * ==== 返回值示例 ====
  33. * {"session_key": "session_key-xxx","openid": "openid-xxx"}
  34. */
  35. return AppResult::response200($mini->getMessage(),$mini->get());
  36. }
  37. /**
  38. * 小程序手机号授权
  39. *
  40. * @param WechatMiniAppCode $request
  41. * @return string
  42. * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface
  43. */
  44. public function miniAppPhone(WechatMiniAppCode $request): string
  45. {
  46. $params = $request->validated();
  47. $mini = new MiniApp();
  48. if (!$mini->getUserPhone($params['code'] ?? '')){
  49. return AppResult::response201($mini->getMessage(),$mini->get());
  50. }
  51. /**
  52. * ==== 返回值示例 ====
  53. * {
  54. * "errcode": 0,
  55. * "errmsg": "ok",
  56. * "phone_info": {
  57. * "phoneNumber": "158xxxxxxxx",
  58. * "purePhoneNumber": "158xxxxxxxx",
  59. * "countryCode": "86",
  60. * "watermark": {
  61. * "timestamp": 1709534957,
  62. * "appid": "wxcced716f40d8b84b"
  63. * }
  64. * }
  65. * }
  66. */
  67. return AppResult::response200($mini->getMessage(),$mini->get());
  68. }
  69. /**
  70. * 小程序支付
  71. *
  72. * @return string
  73. * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
  74. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  75. * @throws \Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface
  76. */
  77. public function miniAppPay()
  78. {
  79. $openid = 'oflOP6qqIN7-mNbpgL38Pp8wXvVs';
  80. $order_no = time().rand(10,99);
  81. $pay = new PayService();
  82. if (!$pay->jsapi($openid,$order_no,1,'测试','http://hyperf.yangertao.com')){
  83. return AppResult::response201($pay->getMessage(),$pay->get());
  84. }
  85. return AppResult::response200($pay->getMessage(),$pay->get());
  86. }
  87. }