Wechat.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * Created by PhpStorm
  4. * DateTime: 2022/10/28 22:50.
  5. *
  6. * @description
  7. */
  8. namespace App\Helper;
  9. use App\Helper\UniPlatform\BaseUniPlatform;
  10. use EasyWeChat\Factory;
  11. use EasyWeChat\MiniProgram\Application;
  12. class Wechat extends BaseUniPlatform
  13. {
  14. public function mini(): Application
  15. {
  16. return Factory::miniProgram([
  17. 'app_id' => $this->appId,
  18. 'secret' => $this->secret,
  19. 'response_type' => 'array',
  20. ]);
  21. }
  22. public function payment(): \EasyWeChat\Payment\Application
  23. {
  24. return Factory::payment([
  25. 'sandbox' => false,
  26. 'app_id' => $this->appId,
  27. 'mch_id' => $this->mchId,
  28. 'key' => $this->mchKey,
  29. 'cert_path' => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'), // XXX: 绝对路径!!!!
  30. 'key_path' => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'), // XXX: 绝对路径!!!!
  31. 'notify_url' => $this->noticeUrl,
  32. ]);
  33. }
  34. /**
  35. * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
  36. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  37. * @throws \GuzzleHttp\Exception\GuzzleException
  38. * @throws \Exception
  39. */
  40. public function createOrder($outOrderNo, $totalAmount, $openId): array
  41. {
  42. $app = $this->payment();
  43. $payment = $app->order->unify([
  44. 'body' => '订单号:' . $outOrderNo,
  45. 'out_trade_no' => $outOrderNo,
  46. 'total_fee' => $totalAmount * 100, // 分
  47. 'notify_url' => $this->noticeUrl, // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  48. 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
  49. 'openid' => $openId,
  50. ]);
  51. if ('SUCCESS' != $payment['return_code'] || 'SUCCESS' != $payment['result_code']) {
  52. throw new \Exception($payment['return_msg']);
  53. }
  54. return [
  55. 'order_id' => $payment['prepay_id'],
  56. 'order_token' => '',
  57. ];
  58. }
  59. protected function setNoticeUrl(): void
  60. {
  61. $this->noticeUrl = env('APP_URL') . '/api/pay/wechat/notify';
  62. }
  63. protected function login($code): array
  64. {
  65. }
  66. protected function post($uri = '', $data = []): array
  67. {
  68. }
  69. protected function getAccessToken(): string
  70. {
  71. }
  72. protected function setAccessFileDir(): void
  73. {
  74. }
  75. protected function setAccessFilePath(): void
  76. {
  77. }
  78. }