Wechat.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. * @param $outOrderNo
  36. * @param $totalAmount
  37. * @param $openId
  38. * @return array
  39. * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
  40. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  41. * @throws \GuzzleHttp\Exception\GuzzleException
  42. * @throws \Exception
  43. */
  44. public function createOrder($outOrderNo, $totalAmount, $openId): array
  45. {
  46. $app = $this->payment();
  47. $payment = $app->order->unify([
  48. 'body' => '订单号:' . $outOrderNo,
  49. 'out_trade_no' => $outOrderNo,
  50. 'total_fee' => $totalAmount * 100, // 分
  51. 'notify_url' => $this->noticeUrl, // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  52. 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
  53. 'openid' => $openId,
  54. ]);
  55. if($payment['return_code'] != "SUCCESS" || $payment['result_code'] != 'SUCCESS'){
  56. throw new \Exception($payment['return_msg']);
  57. }
  58. return [
  59. 'order_id' => $payment['prepay_id'],
  60. 'order_token' => ''
  61. ];
  62. }
  63. protected function setNoticeUrl(): void
  64. {
  65. $this->noticeUrl = env('APP_URL').'/api/pay/wechat/notify';
  66. }
  67. protected function login($code): array
  68. {
  69. }
  70. protected function post($uri = '', $data = []): array
  71. {
  72. }
  73. protected function getAccessToken(): string
  74. {
  75. }
  76. protected function setAccessFileDir(): void
  77. {
  78. }
  79. protected function setAccessFilePath(): void
  80. {
  81. }
  82. }