SiteController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace html5\controllers;
  3. use Yii;
  4. use common\helpers\StringHelper;
  5. use common\helpers\Url;
  6. /**
  7. * Class SiteController
  8. * @package wechat\controllers
  9. * @author jianyan74 <751393839@qq.com>
  10. */
  11. class SiteController extends BaseController
  12. {
  13. /**
  14. * @return array
  15. */
  16. public function actions()
  17. {
  18. return [
  19. 'error' => [
  20. 'class' => 'yii\web\ErrorAction',
  21. ],
  22. ];
  23. }
  24. /**
  25. * Displays homepage.
  26. *
  27. * @return string
  28. */
  29. public function actionIndex()
  30. {
  31. // 个人信息
  32. // p(Yii::$app->wechat->user);
  33. // p(Yii::$app->params['wechatMember']);
  34. return $this->render('index', [
  35. ]);
  36. }
  37. /**
  38. * Login action.
  39. *
  40. * @return string
  41. */
  42. public function actionLogin()
  43. {
  44. return $this->render('login', [
  45. ]);
  46. }
  47. /**
  48. * Logout action.
  49. *
  50. * @return string
  51. */
  52. public function actionLogout()
  53. {
  54. Yii::$app->user->logout();
  55. return $this->goHome();
  56. }
  57. /**
  58. * 生成微信JSAPI支付的Demo方法
  59. *
  60. * 默认禁止外部访问
  61. * 测试请修改方法类型
  62. *
  63. * 注意:请开启微信的安全支付路径
  64. * 域名/html5/site
  65. *
  66. * @return string
  67. * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
  68. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  69. * @throws \GuzzleHttp\Exception\GuzzleException
  70. */
  71. private function actionWechatPay()
  72. {
  73. $totalFee = 100;// 支付金额单位:分
  74. $out_trade_no = time() . StringHelper::random(8, true);
  75. $orderData = [
  76. 'trade_type' => 'JSAPI', // JSAPI,NATIVE,APP...
  77. 'body' => '支付简单说明',
  78. 'detail' => '支付详情',
  79. 'notify_url' => Url::removeMerchantIdUrl('toApi', ['pay-notify/wechat']), // 支付结果通知网址,如果不设置则会使用配置里的默认地址
  80. 'out_trade_no' => $out_trade_no, // 支付
  81. 'total_fee' => $totalFee,
  82. 'openid' => Yii::$app->params['wechatMember']['id'], // trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识,
  83. ];
  84. $payment = Yii::$app->wechat->payment;
  85. $result = $payment->order->unify($orderData);
  86. if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
  87. $config = $payment->jssdk->sdkConfig($result['prepay_id']);
  88. /**
  89. * 注意:如果需要调用扫码支付 请设置 trade_type 为 NATIVE
  90. *
  91. * 结果示例:weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
  92. */
  93. /**
  94. * $content = $payment->scheme($result['prepay_id']);
  95. * $qr = Yii::$app->get('qr');
  96. * Yii::$app->response->format = Response::FORMAT_RAW;
  97. * Yii::$app->response->headers->add('Content-Type', $qr->getContentType());
  98. *
  99. * return $qr->setText($content)
  100. * ->setSize(150)
  101. * ->setMargin(7)
  102. * ->writeString();
  103. */
  104. } else {
  105. p($result);
  106. die();
  107. }
  108. return $this->render($this->action->id, [
  109. 'jssdk' => $payment->jssdk, // $app通过上面的获取实例来获取
  110. 'config' => $config
  111. ]);
  112. }
  113. /**
  114. * @return string
  115. */
  116. public function actionWechatJs()
  117. {
  118. $payment = Yii::$app->wechat->app;
  119. return $this->render($this->action->id, [
  120. 'jssdk' => $payment->jssdk, // $app通过上面的获取实例来获取
  121. ]);
  122. }
  123. }
粤ICP备19079148号