pay.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. define(['$', 'template', 'api', 'native', 'config', 'user'], function ($, template, api, native, config, user) {
  2. var backHash; // 回退页面
  3. var orderID; // 订单ID
  4. var orderType; // 订单类型
  5. var orderCoupon = 0; // 使用代金券支付的金额
  6. var orderBalance = 0; // 使用余额支付的金额
  7. var orderPayValue = 0; // 使用微信支付的金额
  8. var isRecharge = false; // 是否是充值
  9. function back() {
  10. $(document).trigger('spa:navigate', {
  11. hash: backHash,
  12. pushData: {
  13. dontNeedReload: true,
  14. animate: 'slideOutDown' //强制设置动画为落下
  15. }
  16. });
  17. }
  18. return {
  19. title: '壹管家上门服务',
  20. body: '',
  21. init: function (pageData, dtd) {
  22. var $view = this;
  23. var $doc = $(document);
  24. // 充值的回调
  25. function payResult(res) {
  26. $doc.trigger('spa:closeloader');
  27. if (res.success) {
  28. var orderInfo = user.getOrderInfo(orderID);
  29. var params = {
  30. orderInfo: orderInfo,
  31. charge: res.data
  32. };
  33. // 调用native中pay方法,传值orderInfo,charge并做回调,返回充值结果
  34. native.pay(params, function (resA) {
  35. if (resA.success) {
  36. $doc.trigger('spa:navigate', {
  37. hash: 'paySuccess'
  38. });
  39. } else {
  40. $doc.trigger('spa:openpanel', ['simpleAlert', {
  41. message: resA.message
  42. }]);
  43. }
  44. });
  45. } else {
  46. $doc.trigger('spa:openpanel', ['simpleAlert', {
  47. message: res.message
  48. }]);
  49. }
  50. }
  51. $.newTouch('.pay-option', function (event) {
  52. event.preventDefault();
  53. var payChannel = $(this).data('value');
  54. $('.btn-pay', $view).attr('data-pay-channel', payChannel);
  55. $(this).addClass('checked').parent().siblings().find('a').removeClass('checked');
  56. }, $view);
  57. // 真正的微信支付开始
  58. $.newTouch('.btn-pay', function (event) {
  59. event.preventDefault();
  60. // 获取自定义的data-pay-channel的值,即支付方式
  61. var payChannel = $(this).attr('data-pay-channel');
  62. // 判断当前客户端是否为微信公众号
  63. if (config.isWX) {
  64. payChannel = 'wx_pub';
  65. }
  66. if (!payChannel) return;
  67. // 显示加载动画
  68. $doc.trigger('spa:openloader');
  69. // 定义params对象,内置 用户id,订单id,支付方式
  70. var params = {
  71. user_id: user.id,
  72. order_id: orderID,
  73. pay_channel: payChannel
  74. };
  75. // 判断是否是充值 PS:其实没啥用,都是走同一个支付入口的
  76. if (isRecharge) {
  77. api.payRecharge(params, function (res) {
  78. payResult(res)
  79. });
  80. } else {
  81. api.getPayCharge(params, function (res) {
  82. payResult(res)
  83. });
  84. }
  85. }, $view);
  86. //返回
  87. $.newTouch('.cancel-button', function (event) {
  88. event.preventDefault();
  89. back.call(this, event);
  90. }, $view);
  91. $view.on('tapBackButton', function (event) {
  92. event.preventDefault();
  93. back.call(this, event);
  94. });
  95. /*$view.on('swipeRight', function (event) {
  96. event.preventDefault();
  97. back.call(this, event);
  98. });*/
  99. dtd.resolve();
  100. },
  101. beforeopen: function (pageData, dtd) {
  102. var $view = this;
  103. var pushData = pageData.pushData;
  104. orderID = pushData.orderID;
  105. backHash = pushData.backHash ? pushData.backHash : '';
  106. isRecharge = pushData.isRecharge;
  107. // 在用户的所有订单中找出这个订单
  108. var orders = user.orders[1].data;
  109. for (var i = 0, len = orders.length; i < len; i++) {
  110. if (orders[i].id == orderID) {
  111. var selectOrder = orders[i];
  112. orderType = selectOrder.products[0].product.name;
  113. if (selectOrder.coupons && selectOrder.coupons.length) {
  114. for (i in selectOrder.coupons) {
  115. orderCoupon += parseInt(selectOrder.coupons[i].coupon.value);
  116. }
  117. }
  118. if (selectOrder.pay_price && selectOrder.pay_price != 0) {
  119. orderBalance = selectOrder.final_price - selectOrder.pay_price;
  120. }
  121. if (selectOrder.pay_price && selectOrder.pay_price != 0) {
  122. orderPayValue = selectOrder.pay_price;
  123. } else {
  124. orderPayValue = selectOrder.final_price;
  125. }
  126. }
  127. }
  128. if (orderType == '充值1元') {
  129. orderType = "其他数额";
  130. }
  131. var tpl = template('pay/index', {
  132. showNavBar: !config.isWX && !config.isChubao,
  133. wxPub: true,
  134. orderType: orderType,
  135. isRecharge: isRecharge,
  136. isShow: !isRecharge,
  137. orderCoupon: orderCoupon,
  138. orderBalance: orderBalance,
  139. orderPayValue: orderPayValue
  140. });
  141. $('.spa-page-body', $view).html(tpl);
  142. dtd.resolve();
  143. // if (config.isAndroid || config.isIOS) {
  144. // native.isWxAppInstalled(function(res){
  145. // var showWX = true;
  146. // if (res.success && !res.isInstalled) {
  147. // showWX = false;
  148. // }
  149. // if (config.appVersion < '2.2') {
  150. // //微信支付2.2版本以下有问题 隐藏按钮
  151. // showWX = false;
  152. // }
  153. // var tpl = template('pay/index', {
  154. // showWX: showWX,
  155. // showNavBar: !config.isWX && !config.isChubao,
  156. // orderType: orderType,
  157. // orderprice: orderprice
  158. // });
  159. // $('.spa-page-body', $view).html(tpl);
  160. //
  161. // dtd.resolve();
  162. // })
  163. // } else if (config.isChubao) {
  164. // var tpl = template('pay/index', {
  165. // showNavBar: !config.isWX && !config.isChubao,
  166. // orderType: orderType,
  167. // orderprice: orderprice,
  168. // chubao: true
  169. // });
  170. // $('.spa-page-body', $view).html(tpl);
  171. // dtd.resolve();
  172. // } else {
  173. //
  174. // }
  175. }
  176. }
  177. })