NoticeController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <?php
  2. namespace mobile\controllers;
  3. use Yii;
  4. use common\services\xhUserAssetService;
  5. use common\services\xhUserService;
  6. use common\components\util;
  7. use common\services\xhOrderService;
  8. use common\components\configDict;
  9. use common\services\xhMerchantService;
  10. use common\services\xhPayToolService;
  11. class NoticeController extends PublicController
  12. {
  13. public $cateogryList;
  14. public $enableCsrfValidation = false;
  15. /**
  16. * 微信支付异步回调
  17. */
  18. public function actionWeixinCallback()
  19. {
  20. $postStr = file_get_contents('php://input');//接收微信服务器返回的xml消息体
  21. if (empty($postStr)) {
  22. util::end();
  23. }
  24. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  25. if ($postObj->return_code != 'SUCCESS') {
  26. Yii::warning('return_code error:' . $postObj->return_code);
  27. util::end();
  28. }
  29. $orderId = $postObj->out_trade_no;
  30. $total_fee = $postObj->total_fee;
  31. $totalFee = $total_fee / 100;
  32. $attach = $postObj->attach;
  33. parse_str($attach);//接收流水类型、代金劵
  34. $couponId = isset($couponId) ? $couponId : 0;
  35. $capitalType = isset($capitalType) ? $capitalType : null;//流水类型
  36. if (isset($capitalType) == false) {
  37. Yii::warning('capitalType empty,orderId:' . $orderId);
  38. util::end();
  39. }
  40. $return = xhPayToolService::weixinPay($orderId, $totalFee, $capitalType, $couponId);//支付回调流程
  41. if ($return['code'] == 'A0002') {
  42. Yii::warning('callback exec and failed,capitalType:' . $capitalType . ' orderId:' . $orderId);
  43. util::end();
  44. }
  45. echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
  46. }
  47. /**
  48. * 支付宝异步通知
  49. */
  50. public function actionAlipayAsync()
  51. {
  52. header("Content-type: text/html; charset=utf-8");
  53. $alipayWap = Yii::getAlias("@vendor/alipayWap");
  54. $orderId = $_POST['out_trade_no'];//商户订单号
  55. $pay = xhOrderService::getById($orderId);
  56. $merchantId = isset($pay['merchantId']) ? $pay['merchantId'] : 0;
  57. if ($merchantId == 12358) {
  58. $config = array(
  59. //应用ID,您的APPID。
  60. 'app_id' => "2019041663930158",
  61. //商户私钥,您的原始格式RSA私钥
  62. 'merchant_private_key' => "MIIEpAIBAAKCAQEA0NGNBMu5BkHU+ztmGhGdsJC1n2ZbXn4uoaYNni2eriPHJHG8vCWL1vv3W+gxX3twnmdQ57s3hFWfd5PIwMm+8QIwiPucckbmTEm2rC2g4j+UnUiXzICJWjlzlCWiBftrsctKKwjsZTPiuDJzUKmYRD4DYWy1+4Uh6k6x98qbALuiFFrh7esvsaSepZfQ+zBLzMVfrtPABkwEtOAzUL4hz4YW+EFfqyj3mu4LP4M+zBWSKRs0iCzJILG/7JA4OEkDJ89gGZ6LiaITUgffV2tg/IS81aNBfutb3tICBr1PLlKYCV0ois54kqmmP7anNrn/KRFI/k6iLd82e1HEoHhvDwIDAQABAoIBAQCr+PgPTAv8CDl0Ek4bCAj7AaJiPTTgVEDpJc0vSNjXB2YZMIZD2RQaoHXtvgLzZMCx49pwjfHBzZZAL3h0tXHIIIqCNd15C8TcbRTBJe7KhZxKEB/b7ruvj4MNLhUKoi3mRcq2OGofSqTcF8h6VMGu6fd0w8f39YOh6N+Od9BBv8aL7CtBwQQihzatBdr2CyjH50TmlVWfEz2YKoZBGRuMy7EzLZgmR5IzEJC36tOBAg5DORNkEMAuzvnmBQznZCtzMZHW5Ytlh/3kbCUMsrWL6ioox/mel4DoQNnQ1kZ60f7Gny3I+0HiJ+vxVBZ3Nyd8FCVbAlq6avkB3ZGoCx0xAoGBAP/Mhf8X81mLK80TQsSWYPmnjnYkOZ7vIpNc/b6/N+BKAAjWB+0wXJ73nhuzB8cuJBz6TK8RE2uUuiUbiVP1jkrQ2EoCWadndKE1fcLFSSOYlN9rxfINcLicdNAFYu0m8He5cqPpW+06sD8HGOlWeBOyPvitXBjBeOB9dPWBpVkpAoGBAND7kruod1T4ErtOavYv4ErlyN0O6PpQR3MBlnzXnJfKLdaMvc/JaqjZtk14Nl9RnBDzN6d93LHxariyuTHw9mdGAPOpxcUEsUdOw56eRIzhyY8lz0c+lvE32r2NypuzK/2BGP5xR+spe7D4esuhLQhUYjByTWbgLQD+7724QrV3AoGAYuO2ib/AnEVpUYa4sTdRljJoqNOoUwEv5Lh2gF98QoFZMhFMTy37IJmpzhuQTjhQTcOWEbgQQe7lZ6MVnBe6QsIqW7I85rLgK9J6I+oRNGmwZA9OHx2DDlut7R2n+Pas0BwpbaSxnSyrJjKgNtTu5u5p2clraUaibGcT6DWOrsECgYEAspjM5aMrmGoJWBnEP3Da9ic6afD8Gi/RX+/TdA2vvekDE4BkFtfDV1n3+mzpyrwr7DBvN6zQlyICWqYirxOHAOtKlPJaGe3Qs2gUtdH8M4oifzuI0RIkXTGmtqgepsGQrq1NduXI2KgzFSLFjpDHs36qC00j6O9chqVYrYJzQDECgYBQyIWx3BBEUgWCbLTT8QeUdf+EnZSLZzIIQFn88zImhqkTSMbpBmcZpI4oOlWiM8i4XOaEzu+EDFIRAchIbVlDgBV1OprAN5BAez03oyh1JkCDYrsEj7FMqWSmbxiY2uubPshMLEGdPU+I46oJTO6FzMyG6hnQrK+/ne0zH8A5LA==",
  63. //异步通知地址
  64. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  65. //同步跳转
  66. 'return_url' => "",
  67. //编码格式
  68. 'charset' => "UTF-8",
  69. //签名方式
  70. 'sign_type' => "RSA2",
  71. //支付宝网关
  72. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  73. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  74. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkFYqNkoWJIx37fGcUBbnZJ+APf14YHO1cBdp9RFSasxj9gm+pwbtK3J6uRuPygK0K/OCgvtuFJ6mZT3tNUEgSZMjnre5Z7IzQnzIBUYFPUEO85s+/RDr5HnAqgOIbu9GL8GWrU6g6uj+QmW591vXckmsbujPx0S3IP+TMOQZWA0JVvDu+T9yGfv3pacKUgdNvYnas/si3278TL4DeIVjZ4OmbbEPmEhD/OhSVlTSWEOdqLuV4DvEpmrGa8XoyfFEtgV9qSVb454Qwu5Nw/ATc9+ssMbN6ROXzOQbAAfqAe6riNUtKEHGVaCynfUAYNyR6yvJb8+VkMR02nBEDC9QHQIDAQAB",
  75. );
  76. } else {
  77. $config = array(
  78. //应用ID,您的APPID。
  79. 'app_id' => "2017041906821571",
  80. //商户私钥,您的原始格式RSA私钥
  81. 'merchant_private_key' => "MIIEpAIBAAKCAQEAvbeu6o90L+0AilI+mbhuJJH0lUv7hWQCEC+XUc+cWlC9ulKC3cSVScVLJHpUc09aj6v/iD1p9iVfgMxjeADNVKiQC2RJyRshAjzyTq+2bTcODp619iV2y4qW8UM65VcP7Ide3P0uT5xC2ReW0HpkdHZgm4F+P7mh1VhGt9qOP3hjvoraAHhtGACvsGvy8H69HhSAG+CEmFt7f2tKNWJ8xEUvkfhDvys93PfTk4xMWj048hJE2r38+2mWI/Il5dFQHWXXTVl2x9yi7uhEEW42a+7s9Q3HgqEvZiQ2NI1FTeEAPLFBApiEsNLY/smaszwqqfWGAyTMvtQ6T4K96GcTLQIDAQABAoIBAHwYTj33n9RJfnT73x7F2KXrIsUVcmyKQh88QgqtdmRNNA1QM3HESLJ8bu5pZhwW5/HaW8dOBKWRRKsHBnlUbPrXV4FcFDeLm0fPfd+iZ/2AaZ1+ix962f3BpYIiq7+f9zaMRazfnw9L8x31pByyMktLs12EkoQ0dHsMxxUzzKAOiiPnvCn8Pv+Jb2qej8GXgCjefutCVNMWGsdwJtMVXEbpdmMa48Wvw+0In5ZS/UG39YAreFzgDqI9jWHE1ZhkGmB1+8hKpeIlEeVGAeYVveUgssMORdA/YY8SWHk26KSIFXBrmdKjAcRJ8Q7ZHUmzIqAV+IMV+RD4J5mZHeJgdAECgYEA8J+Hp1M6eYbT4CPLXa//yRP6Xo+qSzrKHaRB1LRAjYhvKpx/TQetYpNCJ5bWpa+Jp0T5R21pzuYaJkPuGlNEHA13b5T3r1l2ltomSEdaShvD5EZ9WtErYV5zpSv7FjjIGkbwa0H3A8Ydnvw5z4A9TZjjHLjC2GtVGJReqHGglMECgYEAydddA4NRPxmXvIjjmLb1Ft1qwHuyv3vvWhi50foGZXNEnBcfP/OkfyBDDpOEu34GZBMXK9ykHBs1l93OEFGXh7AwW0Lp5lARahBEfBZgPjq5yPO8TOJZrb5hVcuvoDdGjxpRh93XDnQDhWS/1IvUcBLcIsTcnVvfrkX4NLxF/W0CgYEAxamG+gD4rBQBwMImsRN+/2MV7M//iEUG+0qPeXeI/7rv9wUP3etMlwl48qSKNxj37xxN2ksa/Acxu/VZhu6XqKO3VUX+IWFQdaNGh2F13iLozIDLQOtKw3WfcjOq0xpZ5pwXq0RI8iSw+IUhyD8EHNZW2qU8CiRBhyt6hsywqQECgYBa8+06FAachI/XqWfF/UvcDdJ5AkS9/L8SvmmdsSkItjSIkfLHAqdxkbwl6Vu6kUOX/PJIFZjuAWTZFl4xBFNgFYj01uZHnnT6cnIp6HteD2CAqTSFAMqgfFWoL6zoaYAmJBnxO4oZPTYI+ilnQcts5VLFaChx0GCvS2BZgy2W0QKBgQDjP2VtRq4aVSLUq2z1KIDI7GJBbOM5KSW1OEj4sfEdViozPh3Ar/FQWiij1oCZF+iJdKkonHoDbDd+Q0ykcpQ+5Gv07iiT8wJYFR/0j8g2kfql7bVQhGSBeBMS5sawKR3CvkfW73WX+CNnf0PklTY0kTyt6WRXDnKSeyxFVwSZ7g==",
  82. //异步通知地址
  83. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  84. //同步跳转
  85. 'return_url' => "",
  86. //编码格式
  87. 'charset' => "UTF-8",
  88. //签名方式
  89. 'sign_type' => "RSA2",
  90. //支付宝网关
  91. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  92. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  93. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsz3m9juAR1xew4DY6c34gvbwNg8pZ92f932tseKs+4+pF0e+jTDiUo/xHImNDi1KXt1B+s3LxY9L/sxEksbavwmhgbz/igN1cAEwS2YM+Gnf0csDrxAPJhoKL5FTwxPEQ/8VSgroU+6GlF3LAx4VHa1qfn5MqRPfLroJcyPDyGfNe9vna2FnO4E/PH+hVbvPUAwX3XrUvJIm4OgY0JE3HYFlu+O7F4Ln6+Sl+Zv/ZE2nZAvNiyAwW5iVKhKXLieExqwd0NdrP28baBqkkIY+tmV7butGjB52iK1UbU0+1uiaPL4xBxRy6d0LZmYlvdVHp0JRUuwxBLChGgOCo/76DQIDAQAB",
  94. );
  95. }
  96. require_once($alipayWap . '/wappay/service/AlipayTradeService.php');
  97. require_once($alipayWap . '/wappay/buildermodel/AlipayTradeQueryContentBuilder.php');//查询接口
  98. $arr = $_POST;
  99. $alipaySevice = new \AlipayTradeService($config);
  100. $alipaySevice->writeLog(var_export($_POST, true));
  101. $result = $alipaySevice->check($arr);
  102. Yii::info('check:' . $result);
  103. if ($result) {//验证成功
  104. $orderId = $_POST['out_trade_no'];//商户订单号
  105. $tradeNo = $_POST['trade_no'];//支付宝交易号
  106. $tradeStatus = $_POST['trade_status'];//交易状态
  107. $totalFee = $_POST['total_amount'];
  108. $appId = $_POST['app_id'];
  109. $passbackParams = $_POST['passback_params'];
  110. $passbackParams = urldecode($passbackParams);
  111. parse_str($passbackParams);//接收流水类型、代金劵
  112. $couponId = isset($couponId) ? $couponId : 0;
  113. $capitalType = isset($capitalType) ? $capitalType : null;//流水类型
  114. $RequestBuilder = new \AlipayTradeQueryContentBuilder();
  115. $RequestBuilder->setTradeNo($tradeNo);
  116. $queryResult = $alipaySevice->Query($RequestBuilder);
  117. $alipayId = $queryResult->buyer_user_id;
  118. $alipayAccount = $queryResult->buyer_logon_id;//买家的支付宝帐号,不完整,带*号
  119. $alipayParams = ['alipayId' => $alipayId, 'alipayAccount' => $alipayAccount];
  120. if (isset($capitalType) == false) {
  121. Yii::warning('capitalType empty, orderId:' . $orderId);
  122. util::end();
  123. }
  124. if ($config['app_id'] != $appId) {
  125. Yii::warning('app_id disagree, orderId:' . $orderId . ' config app_id:' . $config['app_id'] . ' appId:' . $appId);
  126. util::end();
  127. }
  128. if ($tradeStatus == 'TRADE_FINISHED' || $tradeStatus == 'TRADE_SUCCESS') {
  129. $return = xhPayToolService::alipay($orderId, $totalFee, $capitalType, $couponId, $alipayParams);//支付回调流程
  130. if ($return['code'] == 'A0002') {
  131. Yii::warning('callback exec and failed,capitalType:' . $capitalType . ' orderId:' . $orderId);
  132. util::end();
  133. }
  134. }
  135. echo "success";//请不要修改或删除
  136. util::end();
  137. }
  138. echo "fail";//请不要修改或删除
  139. }
  140. /**
  141. * 直接付款,支付宝同步通知
  142. * 流程处理在异步中进行,这边只展示成功页
  143. */
  144. public function actionPayAlipaySync()
  145. {
  146. header("Content-type: text/html; charset=utf-8");
  147. $alipayWap = Yii::getAlias("@vendor/alipayWap");
  148. //require_once($alipayWap . '/config.php');
  149. $orderId = htmlspecialchars($_GET['out_trade_no']);//商户订单号
  150. $payment = xhOrderService::getById($orderId);
  151. $merchantId = $payment['merchantId'];
  152. if ($merchantId == 12358) {
  153. $config = array(
  154. //应用ID,您的APPID。
  155. 'app_id' => "2019041663930158",
  156. //商户私钥,您的原始格式RSA私钥
  157. 'merchant_private_key' => "MIIEpAIBAAKCAQEA0NGNBMu5BkHU+ztmGhGdsJC1n2ZbXn4uoaYNni2eriPHJHG8vCWL1vv3W+gxX3twnmdQ57s3hFWfd5PIwMm+8QIwiPucckbmTEm2rC2g4j+UnUiXzICJWjlzlCWiBftrsctKKwjsZTPiuDJzUKmYRD4DYWy1+4Uh6k6x98qbALuiFFrh7esvsaSepZfQ+zBLzMVfrtPABkwEtOAzUL4hz4YW+EFfqyj3mu4LP4M+zBWSKRs0iCzJILG/7JA4OEkDJ89gGZ6LiaITUgffV2tg/IS81aNBfutb3tICBr1PLlKYCV0ois54kqmmP7anNrn/KRFI/k6iLd82e1HEoHhvDwIDAQABAoIBAQCr+PgPTAv8CDl0Ek4bCAj7AaJiPTTgVEDpJc0vSNjXB2YZMIZD2RQaoHXtvgLzZMCx49pwjfHBzZZAL3h0tXHIIIqCNd15C8TcbRTBJe7KhZxKEB/b7ruvj4MNLhUKoi3mRcq2OGofSqTcF8h6VMGu6fd0w8f39YOh6N+Od9BBv8aL7CtBwQQihzatBdr2CyjH50TmlVWfEz2YKoZBGRuMy7EzLZgmR5IzEJC36tOBAg5DORNkEMAuzvnmBQznZCtzMZHW5Ytlh/3kbCUMsrWL6ioox/mel4DoQNnQ1kZ60f7Gny3I+0HiJ+vxVBZ3Nyd8FCVbAlq6avkB3ZGoCx0xAoGBAP/Mhf8X81mLK80TQsSWYPmnjnYkOZ7vIpNc/b6/N+BKAAjWB+0wXJ73nhuzB8cuJBz6TK8RE2uUuiUbiVP1jkrQ2EoCWadndKE1fcLFSSOYlN9rxfINcLicdNAFYu0m8He5cqPpW+06sD8HGOlWeBOyPvitXBjBeOB9dPWBpVkpAoGBAND7kruod1T4ErtOavYv4ErlyN0O6PpQR3MBlnzXnJfKLdaMvc/JaqjZtk14Nl9RnBDzN6d93LHxariyuTHw9mdGAPOpxcUEsUdOw56eRIzhyY8lz0c+lvE32r2NypuzK/2BGP5xR+spe7D4esuhLQhUYjByTWbgLQD+7724QrV3AoGAYuO2ib/AnEVpUYa4sTdRljJoqNOoUwEv5Lh2gF98QoFZMhFMTy37IJmpzhuQTjhQTcOWEbgQQe7lZ6MVnBe6QsIqW7I85rLgK9J6I+oRNGmwZA9OHx2DDlut7R2n+Pas0BwpbaSxnSyrJjKgNtTu5u5p2clraUaibGcT6DWOrsECgYEAspjM5aMrmGoJWBnEP3Da9ic6afD8Gi/RX+/TdA2vvekDE4BkFtfDV1n3+mzpyrwr7DBvN6zQlyICWqYirxOHAOtKlPJaGe3Qs2gUtdH8M4oifzuI0RIkXTGmtqgepsGQrq1NduXI2KgzFSLFjpDHs36qC00j6O9chqVYrYJzQDECgYBQyIWx3BBEUgWCbLTT8QeUdf+EnZSLZzIIQFn88zImhqkTSMbpBmcZpI4oOlWiM8i4XOaEzu+EDFIRAchIbVlDgBV1OprAN5BAez03oyh1JkCDYrsEj7FMqWSmbxiY2uubPshMLEGdPU+I46oJTO6FzMyG6hnQrK+/ne0zH8A5LA==",
  158. //异步通知地址
  159. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  160. //同步跳转
  161. 'return_url' => "",
  162. //编码格式
  163. 'charset' => "UTF-8",
  164. //签名方式
  165. 'sign_type' => "RSA2",
  166. //支付宝网关
  167. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  168. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  169. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkFYqNkoWJIx37fGcUBbnZJ+APf14YHO1cBdp9RFSasxj9gm+pwbtK3J6uRuPygK0K/OCgvtuFJ6mZT3tNUEgSZMjnre5Z7IzQnzIBUYFPUEO85s+/RDr5HnAqgOIbu9GL8GWrU6g6uj+QmW591vXckmsbujPx0S3IP+TMOQZWA0JVvDu+T9yGfv3pacKUgdNvYnas/si3278TL4DeIVjZ4OmbbEPmEhD/OhSVlTSWEOdqLuV4DvEpmrGa8XoyfFEtgV9qSVb454Qwu5Nw/ATc9+ssMbN6ROXzOQbAAfqAe6riNUtKEHGVaCynfUAYNyR6yvJb8+VkMR02nBEDC9QHQIDAQAB",
  170. );
  171. } else {
  172. $config = array(
  173. //应用ID,您的APPID。
  174. 'app_id' => "2017041906821571",
  175. //商户私钥,您的原始格式RSA私钥
  176. 'merchant_private_key' => "MIIEpAIBAAKCAQEAvbeu6o90L+0AilI+mbhuJJH0lUv7hWQCEC+XUc+cWlC9ulKC3cSVScVLJHpUc09aj6v/iD1p9iVfgMxjeADNVKiQC2RJyRshAjzyTq+2bTcODp619iV2y4qW8UM65VcP7Ide3P0uT5xC2ReW0HpkdHZgm4F+P7mh1VhGt9qOP3hjvoraAHhtGACvsGvy8H69HhSAG+CEmFt7f2tKNWJ8xEUvkfhDvys93PfTk4xMWj048hJE2r38+2mWI/Il5dFQHWXXTVl2x9yi7uhEEW42a+7s9Q3HgqEvZiQ2NI1FTeEAPLFBApiEsNLY/smaszwqqfWGAyTMvtQ6T4K96GcTLQIDAQABAoIBAHwYTj33n9RJfnT73x7F2KXrIsUVcmyKQh88QgqtdmRNNA1QM3HESLJ8bu5pZhwW5/HaW8dOBKWRRKsHBnlUbPrXV4FcFDeLm0fPfd+iZ/2AaZ1+ix962f3BpYIiq7+f9zaMRazfnw9L8x31pByyMktLs12EkoQ0dHsMxxUzzKAOiiPnvCn8Pv+Jb2qej8GXgCjefutCVNMWGsdwJtMVXEbpdmMa48Wvw+0In5ZS/UG39YAreFzgDqI9jWHE1ZhkGmB1+8hKpeIlEeVGAeYVveUgssMORdA/YY8SWHk26KSIFXBrmdKjAcRJ8Q7ZHUmzIqAV+IMV+RD4J5mZHeJgdAECgYEA8J+Hp1M6eYbT4CPLXa//yRP6Xo+qSzrKHaRB1LRAjYhvKpx/TQetYpNCJ5bWpa+Jp0T5R21pzuYaJkPuGlNEHA13b5T3r1l2ltomSEdaShvD5EZ9WtErYV5zpSv7FjjIGkbwa0H3A8Ydnvw5z4A9TZjjHLjC2GtVGJReqHGglMECgYEAydddA4NRPxmXvIjjmLb1Ft1qwHuyv3vvWhi50foGZXNEnBcfP/OkfyBDDpOEu34GZBMXK9ykHBs1l93OEFGXh7AwW0Lp5lARahBEfBZgPjq5yPO8TOJZrb5hVcuvoDdGjxpRh93XDnQDhWS/1IvUcBLcIsTcnVvfrkX4NLxF/W0CgYEAxamG+gD4rBQBwMImsRN+/2MV7M//iEUG+0qPeXeI/7rv9wUP3etMlwl48qSKNxj37xxN2ksa/Acxu/VZhu6XqKO3VUX+IWFQdaNGh2F13iLozIDLQOtKw3WfcjOq0xpZ5pwXq0RI8iSw+IUhyD8EHNZW2qU8CiRBhyt6hsywqQECgYBa8+06FAachI/XqWfF/UvcDdJ5AkS9/L8SvmmdsSkItjSIkfLHAqdxkbwl6Vu6kUOX/PJIFZjuAWTZFl4xBFNgFYj01uZHnnT6cnIp6HteD2CAqTSFAMqgfFWoL6zoaYAmJBnxO4oZPTYI+ilnQcts5VLFaChx0GCvS2BZgy2W0QKBgQDjP2VtRq4aVSLUq2z1KIDI7GJBbOM5KSW1OEj4sfEdViozPh3Ar/FQWiij1oCZF+iJdKkonHoDbDd+Q0ykcpQ+5Gv07iiT8wJYFR/0j8g2kfql7bVQhGSBeBMS5sawKR3CvkfW73WX+CNnf0PklTY0kTyt6WRXDnKSeyxFVwSZ7g==",
  177. //异步通知地址
  178. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  179. //同步跳转
  180. 'return_url' => "",
  181. //编码格式
  182. 'charset' => "UTF-8",
  183. //签名方式
  184. 'sign_type' => "RSA2",
  185. //支付宝网关
  186. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  187. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  188. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsz3m9juAR1xew4DY6c34gvbwNg8pZ92f932tseKs+4+pF0e+jTDiUo/xHImNDi1KXt1B+s3LxY9L/sxEksbavwmhgbz/igN1cAEwS2YM+Gnf0csDrxAPJhoKL5FTwxPEQ/8VSgroU+6GlF3LAx4VHa1qfn5MqRPfLroJcyPDyGfNe9vna2FnO4E/PH+hVbvPUAwX3XrUvJIm4OgY0JE3HYFlu+O7F4Ln6+Sl+Zv/ZE2nZAvNiyAwW5iVKhKXLieExqwd0NdrP28baBqkkIY+tmV7butGjB52iK1UbU0+1uiaPL4xBxRy6d0LZmYlvdVHp0JRUuwxBLChGgOCo/76DQIDAQAB",
  189. );
  190. }
  191. require_once($alipayWap . '/wappay/service/AlipayTradeService.php');
  192. require_once($alipayWap . '/wappay/buildermodel/AlipayTradeQueryContentBuilder.php');//查询接口
  193. $arr = $_GET;
  194. $payWay = configDict::getConfig('payWayFullName');
  195. $alipaySevice = new \AlipayTradeService($config);
  196. $result = $alipaySevice->check($arr);
  197. //未验证成功
  198. if ($result == false) {
  199. return $this->renderPartial('invalid');
  200. }
  201. $orderId = htmlspecialchars($_GET['out_trade_no']);//商户订单号
  202. $tradeNo = htmlspecialchars($_GET['trade_no']);//支付宝交易号
  203. $appId = htmlspecialchars($_GET['app_id']);
  204. if ($config['app_id'] != $appId) {
  205. Yii::warning('app_id disagree. orderId:' . $orderId);
  206. util::end();
  207. }
  208. $payment = xhOrderService::getById($orderId);
  209. $merchantId = $payment['merchantId'];
  210. $merchant = xhMerchantService::getById($merchantId);
  211. $RequestBuilder = new \AlipayTradeQueryContentBuilder();
  212. $RequestBuilder->setTradeNo($tradeNo);
  213. $queryResult = $alipaySevice->Query($RequestBuilder);
  214. $alipayId = $queryResult->buyer_user_id;
  215. //延迟1秒,保证异步回调完成
  216. sleep(1);
  217. $user = xhUserService::getAlipay($merchantId, $alipayId);
  218. $userId = $user['id'];
  219. $userAsset = xhUserAssetService::getByUserId($userId);
  220. $totalExpend = isset($userAsset['totalExpend']) ? $userAsset['totalExpend'] : 0;
  221. $isAnonymity = false;
  222. $point = $userAsset['integral'];
  223. Yii::$app->session->set('orderId_' . $orderId, $orderId);//session中保存orderId
  224. return $this->renderPartial('payAlipaySync', ['user' => $user, 'payment' => $payment, 'totalExpend' => $totalExpend, 'isAnonymity' => $isAnonymity, 'point' => $point, 'payWay' => $payWay, 'merchant' => $merchant]);
  225. }
  226. /**
  227. * 订单付款,支付宝同步通知
  228. * 流程处理在异步中进行,这边只展示成功页
  229. * @return mixed
  230. */
  231. public function actionOrderAlipaySync()
  232. {
  233. header("Content-type: text/html; charset=utf-8");
  234. $alipayWap = Yii::getAlias("@vendor/alipayWap");
  235. //require_once($alipayWap . '/config.php');
  236. $orderId = htmlspecialchars($_GET['out_trade_no']);//商户订单号
  237. $payment = xhOrderService::getById($orderId);
  238. $merchantId = $payment['merchantId'];
  239. if ($merchantId == 12358) {
  240. $config = array(
  241. //应用ID,您的APPID。
  242. 'app_id' => "2019041663930158",
  243. //商户私钥,您的原始格式RSA私钥
  244. 'merchant_private_key' => "MIIEpAIBAAKCAQEA0NGNBMu5BkHU+ztmGhGdsJC1n2ZbXn4uoaYNni2eriPHJHG8vCWL1vv3W+gxX3twnmdQ57s3hFWfd5PIwMm+8QIwiPucckbmTEm2rC2g4j+UnUiXzICJWjlzlCWiBftrsctKKwjsZTPiuDJzUKmYRD4DYWy1+4Uh6k6x98qbALuiFFrh7esvsaSepZfQ+zBLzMVfrtPABkwEtOAzUL4hz4YW+EFfqyj3mu4LP4M+zBWSKRs0iCzJILG/7JA4OEkDJ89gGZ6LiaITUgffV2tg/IS81aNBfutb3tICBr1PLlKYCV0ois54kqmmP7anNrn/KRFI/k6iLd82e1HEoHhvDwIDAQABAoIBAQCr+PgPTAv8CDl0Ek4bCAj7AaJiPTTgVEDpJc0vSNjXB2YZMIZD2RQaoHXtvgLzZMCx49pwjfHBzZZAL3h0tXHIIIqCNd15C8TcbRTBJe7KhZxKEB/b7ruvj4MNLhUKoi3mRcq2OGofSqTcF8h6VMGu6fd0w8f39YOh6N+Od9BBv8aL7CtBwQQihzatBdr2CyjH50TmlVWfEz2YKoZBGRuMy7EzLZgmR5IzEJC36tOBAg5DORNkEMAuzvnmBQznZCtzMZHW5Ytlh/3kbCUMsrWL6ioox/mel4DoQNnQ1kZ60f7Gny3I+0HiJ+vxVBZ3Nyd8FCVbAlq6avkB3ZGoCx0xAoGBAP/Mhf8X81mLK80TQsSWYPmnjnYkOZ7vIpNc/b6/N+BKAAjWB+0wXJ73nhuzB8cuJBz6TK8RE2uUuiUbiVP1jkrQ2EoCWadndKE1fcLFSSOYlN9rxfINcLicdNAFYu0m8He5cqPpW+06sD8HGOlWeBOyPvitXBjBeOB9dPWBpVkpAoGBAND7kruod1T4ErtOavYv4ErlyN0O6PpQR3MBlnzXnJfKLdaMvc/JaqjZtk14Nl9RnBDzN6d93LHxariyuTHw9mdGAPOpxcUEsUdOw56eRIzhyY8lz0c+lvE32r2NypuzK/2BGP5xR+spe7D4esuhLQhUYjByTWbgLQD+7724QrV3AoGAYuO2ib/AnEVpUYa4sTdRljJoqNOoUwEv5Lh2gF98QoFZMhFMTy37IJmpzhuQTjhQTcOWEbgQQe7lZ6MVnBe6QsIqW7I85rLgK9J6I+oRNGmwZA9OHx2DDlut7R2n+Pas0BwpbaSxnSyrJjKgNtTu5u5p2clraUaibGcT6DWOrsECgYEAspjM5aMrmGoJWBnEP3Da9ic6afD8Gi/RX+/TdA2vvekDE4BkFtfDV1n3+mzpyrwr7DBvN6zQlyICWqYirxOHAOtKlPJaGe3Qs2gUtdH8M4oifzuI0RIkXTGmtqgepsGQrq1NduXI2KgzFSLFjpDHs36qC00j6O9chqVYrYJzQDECgYBQyIWx3BBEUgWCbLTT8QeUdf+EnZSLZzIIQFn88zImhqkTSMbpBmcZpI4oOlWiM8i4XOaEzu+EDFIRAchIbVlDgBV1OprAN5BAez03oyh1JkCDYrsEj7FMqWSmbxiY2uubPshMLEGdPU+I46oJTO6FzMyG6hnQrK+/ne0zH8A5LA==",
  245. //异步通知地址
  246. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  247. //同步跳转
  248. 'return_url' => "",
  249. //编码格式
  250. 'charset' => "UTF-8",
  251. //签名方式
  252. 'sign_type' => "RSA2",
  253. //支付宝网关
  254. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  255. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  256. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkFYqNkoWJIx37fGcUBbnZJ+APf14YHO1cBdp9RFSasxj9gm+pwbtK3J6uRuPygK0K/OCgvtuFJ6mZT3tNUEgSZMjnre5Z7IzQnzIBUYFPUEO85s+/RDr5HnAqgOIbu9GL8GWrU6g6uj+QmW591vXckmsbujPx0S3IP+TMOQZWA0JVvDu+T9yGfv3pacKUgdNvYnas/si3278TL4DeIVjZ4OmbbEPmEhD/OhSVlTSWEOdqLuV4DvEpmrGa8XoyfFEtgV9qSVb454Qwu5Nw/ATc9+ssMbN6ROXzOQbAAfqAe6riNUtKEHGVaCynfUAYNyR6yvJb8+VkMR02nBEDC9QHQIDAQAB",
  257. );
  258. } else {
  259. $config = array(
  260. //应用ID,您的APPID。
  261. 'app_id' => "2017041906821571",
  262. //商户私钥,您的原始格式RSA私钥
  263. 'merchant_private_key' => "MIIEpAIBAAKCAQEAvbeu6o90L+0AilI+mbhuJJH0lUv7hWQCEC+XUc+cWlC9ulKC3cSVScVLJHpUc09aj6v/iD1p9iVfgMxjeADNVKiQC2RJyRshAjzyTq+2bTcODp619iV2y4qW8UM65VcP7Ide3P0uT5xC2ReW0HpkdHZgm4F+P7mh1VhGt9qOP3hjvoraAHhtGACvsGvy8H69HhSAG+CEmFt7f2tKNWJ8xEUvkfhDvys93PfTk4xMWj048hJE2r38+2mWI/Il5dFQHWXXTVl2x9yi7uhEEW42a+7s9Q3HgqEvZiQ2NI1FTeEAPLFBApiEsNLY/smaszwqqfWGAyTMvtQ6T4K96GcTLQIDAQABAoIBAHwYTj33n9RJfnT73x7F2KXrIsUVcmyKQh88QgqtdmRNNA1QM3HESLJ8bu5pZhwW5/HaW8dOBKWRRKsHBnlUbPrXV4FcFDeLm0fPfd+iZ/2AaZ1+ix962f3BpYIiq7+f9zaMRazfnw9L8x31pByyMktLs12EkoQ0dHsMxxUzzKAOiiPnvCn8Pv+Jb2qej8GXgCjefutCVNMWGsdwJtMVXEbpdmMa48Wvw+0In5ZS/UG39YAreFzgDqI9jWHE1ZhkGmB1+8hKpeIlEeVGAeYVveUgssMORdA/YY8SWHk26KSIFXBrmdKjAcRJ8Q7ZHUmzIqAV+IMV+RD4J5mZHeJgdAECgYEA8J+Hp1M6eYbT4CPLXa//yRP6Xo+qSzrKHaRB1LRAjYhvKpx/TQetYpNCJ5bWpa+Jp0T5R21pzuYaJkPuGlNEHA13b5T3r1l2ltomSEdaShvD5EZ9WtErYV5zpSv7FjjIGkbwa0H3A8Ydnvw5z4A9TZjjHLjC2GtVGJReqHGglMECgYEAydddA4NRPxmXvIjjmLb1Ft1qwHuyv3vvWhi50foGZXNEnBcfP/OkfyBDDpOEu34GZBMXK9ykHBs1l93OEFGXh7AwW0Lp5lARahBEfBZgPjq5yPO8TOJZrb5hVcuvoDdGjxpRh93XDnQDhWS/1IvUcBLcIsTcnVvfrkX4NLxF/W0CgYEAxamG+gD4rBQBwMImsRN+/2MV7M//iEUG+0qPeXeI/7rv9wUP3etMlwl48qSKNxj37xxN2ksa/Acxu/VZhu6XqKO3VUX+IWFQdaNGh2F13iLozIDLQOtKw3WfcjOq0xpZ5pwXq0RI8iSw+IUhyD8EHNZW2qU8CiRBhyt6hsywqQECgYBa8+06FAachI/XqWfF/UvcDdJ5AkS9/L8SvmmdsSkItjSIkfLHAqdxkbwl6Vu6kUOX/PJIFZjuAWTZFl4xBFNgFYj01uZHnnT6cnIp6HteD2CAqTSFAMqgfFWoL6zoaYAmJBnxO4oZPTYI+ilnQcts5VLFaChx0GCvS2BZgy2W0QKBgQDjP2VtRq4aVSLUq2z1KIDI7GJBbOM5KSW1OEj4sfEdViozPh3Ar/FQWiij1oCZF+iJdKkonHoDbDd+Q0ykcpQ+5Gv07iiT8wJYFR/0j8g2kfql7bVQhGSBeBMS5sawKR3CvkfW73WX+CNnf0PklTY0kTyt6WRXDnKSeyxFVwSZ7g==",
  264. //异步通知地址
  265. 'notify_url' => Yii::$app->params['frontUrl'] . "/notice/alipay-async",
  266. //同步跳转
  267. 'return_url' => "",
  268. //编码格式
  269. 'charset' => "UTF-8",
  270. //签名方式
  271. 'sign_type' => "RSA2",
  272. //支付宝网关
  273. 'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
  274. //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
  275. 'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsz3m9juAR1xew4DY6c34gvbwNg8pZ92f932tseKs+4+pF0e+jTDiUo/xHImNDi1KXt1B+s3LxY9L/sxEksbavwmhgbz/igN1cAEwS2YM+Gnf0csDrxAPJhoKL5FTwxPEQ/8VSgroU+6GlF3LAx4VHa1qfn5MqRPfLroJcyPDyGfNe9vna2FnO4E/PH+hVbvPUAwX3XrUvJIm4OgY0JE3HYFlu+O7F4Ln6+Sl+Zv/ZE2nZAvNiyAwW5iVKhKXLieExqwd0NdrP28baBqkkIY+tmV7butGjB52iK1UbU0+1uiaPL4xBxRy6d0LZmYlvdVHp0JRUuwxBLChGgOCo/76DQIDAQAB",
  276. );
  277. }
  278. require_once($alipayWap . '/wappay/service/AlipayTradeService.php');
  279. require_once($alipayWap . '/wappay/buildermodel/AlipayTradeQueryContentBuilder.php');//查询接口
  280. $arr = $_GET;
  281. $payWay = configDict::getConfig('payWayFullName');
  282. $alipaySevice = new \AlipayTradeService($config);
  283. $result = $alipaySevice->check($arr);
  284. if ($result == false) {//验证失败
  285. return $this->renderPartial('invalid');
  286. }
  287. $orderId = htmlspecialchars($_GET['out_trade_no']);//商户订单号
  288. $tradeNo = htmlspecialchars($_GET['trade_no']);//支付宝交易号
  289. $appId = htmlspecialchars($_GET['app_id']);
  290. if ($config['app_id'] != $appId) {
  291. Yii::warning('app_id disagree. orderId:' . $orderId);
  292. util::end();
  293. }
  294. $payment = xhOrderService::getById($orderId);
  295. $merchantId = $payment['merchantId'];
  296. $merchant = xhMerchantService::getById($merchantId);
  297. $RequestBuilder = new \AlipayTradeQueryContentBuilder();
  298. $RequestBuilder->setTradeNo($tradeNo);
  299. $queryResult = $alipaySevice->Query($RequestBuilder);
  300. $alipayId = $queryResult->buyer_user_id;
  301. //延迟1秒,保证异步回调完成
  302. sleep(1);
  303. $user = xhUserService::getAlipay($merchantId, $alipayId);
  304. $userId = $user['id'];
  305. $userAsset = xhUserAssetService::getByUserId($userId);
  306. $isAnonymity = true;//是否匿名
  307. $totalExpend = isset($userAsset['totalExpend']) ? $userAsset['totalExpend'] : 0;
  308. $point = $userAsset['integral'];
  309. return $this->renderPartial('orderAlipaySync', ['user' => $user, 'payment' => $payment, 'totalExpend' => $totalExpend, 'isAnonymity' => $isAnonymity, 'point' => $point, 'payWay' => $payWay, 'merchant' => $merchant]);
  310. }
  311. }