pay.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. define(['$', 'template', 'api', 'native', 'config', 'user'], function ($, template, api, native, config, user) {
  2. function back(backHash) {
  3. $(document).trigger('spa:navigate', {
  4. hash: backHash,
  5. pushData: {
  6. dontNeedReload: true,
  7. animate: 'slideOutDown' //强制设置动画为落下
  8. }
  9. });
  10. }
  11. return {
  12. title: '壹管家上门服务',
  13. body: '',
  14. init: function (pageData, dtd) {
  15. var $view = this;
  16. var $doc = $(document);
  17. $.newTouch('.pay-option', function (event) {
  18. event.preventDefault();
  19. var payChannel = $(this).data('value');
  20. $('.btn-pay', $view).attr('data-pay-channel', payChannel);
  21. $(this).addClass('checked').parent().siblings().find('a').removeClass('checked');
  22. }, $view);
  23. $.newTouch('.btn-pay', function (event) {
  24. event.preventDefault();
  25. var orderID = $view.data('orderID');
  26. var orderprice = $view.data('orderprice');
  27. var payChannel = $(this).attr('data-pay-channel');
  28. if (config.isChubao) {
  29. ctk.select({
  30. tradeService: 'com.company.product', //服务商在触宝开放平台的标识,格式为com.公司.产品,用于获取优惠信息
  31. totalFee: orderprice * 100, //支付的金额,单位为分
  32. success: function(res) {
  33. //用户点击支付页面支付按钮成功之后的回调函数
  34. var tradeStr = res.tradeStr; //支付信息的字符串
  35. ctk.show(); //获取加密字符串的同时显示加载提示,减少用户焦虑
  36. api.getTradeStr({
  37. from: 'chubao',
  38. tradeStr: tradeStr,
  39. user_id: user.id,
  40. order_id: orderID
  41. }, function(res) {
  42. ctk.pay({
  43. payStr: res.data.payStr,
  44. finish: function(resCode) {
  45. ctk.dismiss();
  46. if (resCode == 4102) {
  47. $doc.trigger('spa:navigate', {
  48. hash: 'paySuccess'
  49. });
  50. } else {
  51. $doc.trigger('spa:openpanel', ['simpleAlert', {
  52. message: '支付失败'
  53. }]);
  54. }
  55. }
  56. });
  57. });
  58. },
  59. fail: function(res) {
  60. //用户退出支付选择页面的回调函数
  61. }
  62. });
  63. } else {
  64. if (config.isWX) {
  65. payChannel = 'wx_pub';
  66. }
  67. if (!payChannel) return;
  68. $doc.trigger('spa:openloader');
  69. api.getPayCharge({
  70. user_id: user.id,
  71. order_id: orderID,
  72. pay_channel: payChannel
  73. }, function (res) {
  74. $doc.trigger('spa:closeloader');
  75. if (res.success) {
  76. var orderInfo = user.getOrderInfo(orderID);
  77. var params = {
  78. orderInfo: orderInfo,
  79. charge: res.data
  80. }
  81. native.pay(params, function (resA) {
  82. if (resA.success) {
  83. $doc.trigger('spa:navigate', {
  84. hash: 'paySuccess'
  85. });
  86. } else {
  87. $doc.trigger('spa:openpanel', ['simpleAlert', {
  88. message: resA.message
  89. }]);
  90. }
  91. });
  92. // }
  93. } else {
  94. $doc.trigger('spa:openpanel', ['simpleAlert', {
  95. message: res.message
  96. }]);
  97. }
  98. });
  99. }
  100. }, $view);
  101. //返回
  102. $.newTouch('.cancel-button', function (event) {
  103. event.preventDefault();
  104. back($view.data('backHash'));
  105. }, $view);
  106. $view.on('tapBackButton', function(event) {
  107. event.preventDefault();
  108. back($view.data('backHash'));
  109. });
  110. dtd.resolve();
  111. },
  112. beforeopen: function(pageData, dtd){
  113. var $view = this;
  114. var pushData = pageData.pushData;
  115. var orderID = pushData.orderID;
  116. var backHash = pushData.backHash ? pushData.backHash : '';
  117. $view.data('backHash', backHash);
  118. $view.data('orderID', orderID);
  119. var orders = user.orders[1].data;
  120. var orderType, orderprice;
  121. for (var i = 0, len = orders.length; i < len; i++) {
  122. if (orders[i].id == orderID) {
  123. orderType = orders[i].products[0].name;
  124. orderprice = orders[i].final_price;
  125. };
  126. };
  127. $view.data('orderprice', orderprice);
  128. if (config.isAndroid || config.isIOS) {
  129. native.isWxAppInstalled(function(res){
  130. var showWX = true;
  131. if (res.success && !res.isInstalled) {
  132. showWX = false;
  133. }
  134. if (config.appVersion < '2.2') {
  135. //微信支付2.2版本以下有问题 隐藏按钮
  136. showWX = false;
  137. }
  138. var tpl = template('pay/index', {
  139. showWX: showWX,
  140. showNavBar: !config.isWX && !config.isChubao,
  141. orderType: orderType,
  142. orderprice: orderprice
  143. });
  144. $('.spa-page-body', $view).html(tpl);
  145. dtd.resolve();
  146. })
  147. } else if (config.isChubao) {
  148. var tpl = template('pay/index', {
  149. showNavBar: !config.isWX && !config.isChubao,
  150. orderType: orderType,
  151. orderprice: orderprice,
  152. chubao: true
  153. });
  154. $('.spa-page-body', $view).html(tpl);
  155. dtd.resolve();
  156. } else {
  157. var tpl = template('pay/index', {
  158. showNavBar: !config.isWX && !config.isChubao,
  159. wxPub: true,
  160. orderType: orderType,
  161. orderprice: orderprice
  162. });
  163. $('.spa-page-body', $view).html(tpl);
  164. dtd.resolve();
  165. }
  166. }
  167. }
  168. })