payment.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. (function ($ang) {
  2. 'use strict';
  3. var app = $ang.module('devself.common');
  4. app.controller("payAsideCtrl", ['$scope', '$rootScope', '$window', '$http', '$modal', '$alert', function ($scope, $rootScope, $window, $http, $modal, $alert) {
  5. $scope.data = {
  6. amt: 0,
  7. selectedPayType: '1',
  8. changePayType: true,
  9. hasInit: false,
  10. msg: '生成支持订号中……',
  11. pageData: {pageindex: 1, pagesize: 5, ptotal: 0},
  12. item: {},
  13. extData: {},
  14. activeTab: 'pay',
  15. pageList: [],
  16. paydefer$: $rootScope.paydefer$
  17. };
  18. $scope.wxNativeData = {};
  19. $scope.$watch("data.activeTab", function (newVal) {
  20. if (newVal == 'history') {
  21. $scope.loadHistoryList();
  22. }
  23. });
  24. $scope.loadHistoryList = function () {
  25. if (!$scope.data.item.payRelID) {
  26. return;
  27. }
  28. $scope.data.pageData.payRelID = $scope.data.item.payRelID;
  29. $http.get("../../wxapi/pay/getPayHistoryList", {params: $scope.data.pageData}).then(function (req) {
  30. if (req.data.success) {
  31. $scope.data.pageList = req.data.item.list;
  32. $scope.data.pageData.ptotal = req.data.item.size;
  33. }
  34. });
  35. };
  36. $scope.$watch("data.pageData.pageindex", function (newVal) {
  37. $scope.loadHistoryList();
  38. });
  39. $scope.selectPay = function (it) {
  40. $scope.data.item = it;
  41. $scope.data.activeTab = 'pay';
  42. $scope.data.extData.payType = it.payType;
  43. $scope.checkPayType();
  44. }
  45. $scope.initPay = function () {
  46. $http.post("../../wxapi/pay/initPay", $rootScope.payModel).then(function (res) {
  47. if (res.data.success) {
  48. $scope.data.item = res.data.item;
  49. $scope.data.extData = res.data.extdata;
  50. $scope.data.hasInit = true;
  51. $scope.checkPayType();
  52. $scope.data.msg = '订单已创建!'
  53. } else {
  54. $scope.data.hasInit = false;
  55. $scope.data.msg = '订单通信失败!';
  56. }
  57. }, function (err) {
  58. $scope.data.hasInit = false;
  59. $scope.data.msg = '订单通信失败!';
  60. })
  61. };
  62. $scope.checkPayType = function () {
  63. $scope.data.changePayType = $scope.data.item.payState == 0;
  64. if ($scope.data.item.payState == 1) {
  65. $scope.data.selectedPayType = $scope.data.extData.payType.toString();
  66. }
  67. };
  68. $scope.startPay = function () {
  69. if ($scope.data.selectedPayType == 1) {
  70. //微信接口
  71. $scope.paybyWXPay();
  72. } else {
  73. $scope.paybyUnionPay();
  74. }
  75. setTimeout($scope.MonitorPayState, 5 * 1000);
  76. };
  77. $scope.resetPay = function () {
  78. $http.post("../../wxapi/pay/resetPay", $scope.data.item).then(function (req) {
  79. if (req.data.success) {
  80. $scope.data.item = req.data.item;
  81. $scope.data.hasInit = true;
  82. $scope.data.extData = {};
  83. $scope.checkPayType();
  84. }
  85. });
  86. }
  87. var nativeModal = $modal({
  88. scope: $scope,
  89. templateUrl: '../js/setting/payment/wx-modal.html',
  90. controller: 'wxNativeCtrl',
  91. show: false,
  92. animation: 'am-fade-and-slide-top'
  93. });
  94. $scope.paybyUnionPay = function () {
  95. $scope.data.item.payState = 1;
  96. $scope.data.extData.payType = 2;
  97. $scope.checkPayType();
  98. $window.open("../../wxapi/pay/frontconsume?id=" + $scope.data.item.payOrderID);
  99. }
  100. $scope.paybyWXPay = function () {
  101. /*
  102. $scope.wxNativeData.imgsrc='../js/setting/payment/wx.png';
  103. nativeModal.$promise.then(nativeModal.show);
  104. return;*/
  105. $http.get('../../wxapi/pay/startWebWxPay', {params: {id: $scope.data.item.payOrderID}}).then(function (req) {
  106. if (req.data.success) {
  107. if (req.data.item.state) {
  108. $scope.wxNativeData.imgdata = req.data.item.orderReq.codeUrl;
  109. $scope.wxNativeData.payOrderID = $scope.data.item.payOrderID;
  110. $scope.data.item.payState = 1;
  111. $scope.data.extData.payType = 1;
  112. $scope.checkPayType();
  113. nativeModal.$promise.then(nativeModal.show);
  114. $scope.data.hasInit = true;
  115. $scope.data.msg = '';
  116. } else {
  117. $scope.data.hasInit = false;
  118. $scope.data.msg = req.data.item.msg;
  119. }
  120. }
  121. });
  122. }
  123. $scope.MonitorPayState = function () {
  124. $http.get('../../wxapi/pay/checkpayorderstatus', {params: {payOrderID: $scope.data.item.payOrderID}}).then(function (req) {
  125. if (req.data.success) {
  126. if (req.data.item == 3) {
  127. $alert({
  128. title: '提示:',
  129. content: '支付成功',
  130. placement: 'top',
  131. type: 'info',
  132. show: true,
  133. duration: 3
  134. });
  135. if ($scope.data.extData.payType == 1) {
  136. nativeModal.hide();
  137. }
  138. $scope.$hide();
  139. $scope.data.paydefer$.resolve(true);
  140. //$scope.$hide();
  141. } else if (req.data.item == 4) {
  142. $alert({
  143. title: '提示:',
  144. content: '支付失败',
  145. placement: 'top',
  146. type: 'info',
  147. show: true,
  148. duration: 3
  149. });
  150. nativeModal.hide();
  151. $scope.data.paydefer$.resolve(false);
  152. if ($scope.data.extData.payType == 1) {
  153. nativeModal.hide();
  154. }
  155. $scope.$hide();
  156. } else {
  157. $scope.data.paydefer$.notify("继续处理中!");
  158. setTimeout($scope.MonitorPayState, 5 * 1000);
  159. //$alert({ title: '提示:',content:'未知状态', placement: 'top', type: 'info', show: true, duration: 3 });
  160. }
  161. }
  162. }, function (err) {
  163. });
  164. };
  165. if ($rootScope.payModel) {
  166. $scope.data.amt = $rootScope.payModel.amt | 0;
  167. $scope.initPay();
  168. }
  169. }]).controller('wxNativeCtrl', ['$scope', '$timeout', '$http', '$alert', function ($scope, $timeout, $http, $alert) {
  170. $scope.wxNativeData = $scope.$parent.$parent.wxNativeData;
  171. //$timeout($scope.checkPayResult,60*1000);
  172. }]).controller('backAsideCtrl', ['$scope', '$http', '$rootScope', '$alert', function ($scope, $http, $rootScope, $alert) {
  173. $scope.data = {
  174. $defer: $rootScope.backpaydefer$,
  175. pageData: {
  176. payRelID: $rootScope.payModel.payRelID,
  177. pageindex: 1,
  178. pagesize: 5,
  179. ptotal: 0
  180. },
  181. pageList: [],
  182. activeTab: 'back',
  183. logData: {
  184. payRelID: $rootScope.payModel.payRelID,
  185. pageindex: 1,
  186. pagesize: 5,
  187. ptotal: 0
  188. },
  189. logList: []
  190. };
  191. $scope.loadItems = function () {
  192. $http.get("../../wxapi/pay/getPayHistoryList", {params: $scope.data.pageData}).then(function (req) {
  193. if (req.data.success) {
  194. $scope.data.pageList = req.data.item.list;
  195. $scope.data.pageData.ptotal = req.data.item.size;
  196. }
  197. });
  198. };
  199. $scope.loadLog = function () {
  200. $http.get("../../wxapi/pay/refundloglist", {params: $scope.data.logData}).then(function (req) {
  201. if (req.data.success) {
  202. $scope.data.logList = req.data.item.list;
  203. $scope.data.logData.ptotal = req.data.item.size;
  204. }
  205. });
  206. };
  207. $scope.$watch("data.pageData.pageindex", function (newVal) {
  208. $scope.loadItems();
  209. });
  210. $scope.$watch("data.logData.pageindex", function (newVal) {
  211. $scope.loadLog();
  212. });
  213. $scope.$watch("data.activeTab", function (newVal) {
  214. if (newVal == 'log') {
  215. $scope.loadLog();
  216. }
  217. });
  218. $scope.backPay = function (it) {
  219. if (confirm('是否确定退款?')) {
  220. $http.get('../../wxapi/pay/backpay', {params: {payOrderID: it.payOrderID}}).then(function (req) {
  221. if (req.data.success) {
  222. $scope.data.$defer.resolve(true);
  223. $scope.$hide();
  224. $alert({
  225. title: '提示:',
  226. content: '退款成功!',
  227. placement: 'top',
  228. type: 'info',
  229. show: true,
  230. duration: 3
  231. });
  232. } else {
  233. $scope.data.$defer.notify('退款错误!');
  234. $alert({
  235. title: '提示:',
  236. content: req.data.msg,
  237. placement: 'top',
  238. type: 'info',
  239. show: true,
  240. duration: 3
  241. });
  242. }
  243. }, function (err) {
  244. $scope.data.$defer.notify('退款错误!');
  245. });
  246. }
  247. }
  248. $scope.loadItems();
  249. }]);
  250. })(angular);