beecloud.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. var beecloud = {};
  2. var channels = null;
  3. var w = null;
  4. beecloud.payReq = function(data, cbsuccess, cberror) {
  5. doPay(data, cbsuccess, cberror);
  6. };
  7. beecloud.genBillNo = function() {
  8. var d = new Date();
  9. var vYear = d.getFullYear();
  10. var vMon = d.getMonth() + 1;
  11. var vDay = d.getDate();
  12. var h = d.getHours();
  13. var m = d.getMinutes();
  14. var se = d.getSeconds();
  15. var ms = d.getMilliseconds();
  16. billno = "" + vYear + (vMon < 10 ? "0" + vMon : vMon) + (vDay < 10 ? "0" + vDay : vDay) + (h < 10 ? "0" + h : h) + (m < 10 ? "0" + m : m) + (se < 10 ? "0" + se : se) + ms;
  17. return billno;
  18. };
  19. mui.plusReady(function() {
  20. //配置业务支持的支付通道,支付需要服务端支持,在BeeCloud上支持支付宝支付和微信支付;
  21. var support_channel = ['alipay', 'wxpay'];
  22. plus.payment.getChannels(function(s) {
  23. var oauthArea = document.querySelector('.oauth-area');
  24. for (var i = 0; i < s.length; i++) {
  25. if(s[i].serviceReady){
  26. if(~support_channel.indexOf(s[i].id)){
  27. var btn = document.createElement('div');
  28. btn.setAttribute('id', s[i].id);
  29. btn.className = 'mui-btn mui-btn-blue mui-btn-block pay';
  30. btn.innerText = s[i].description+'支付'
  31. oauthArea.appendChild(btn);
  32. }
  33. }
  34. }
  35. channels = s;
  36. }, function(e) {
  37. console.log("获取支付渠道信权限失败:" + e.message);
  38. });
  39. });
  40. function getRandomHost() {
  41. var hosts = ['https://apibj.beecloud.cn',
  42. 'https://apihz.beecloud.cn',
  43. 'https://apisz.beecloud.cn',
  44. 'https://apiqd.beecloud.cn'
  45. ];
  46. return "" + hosts[parseInt(3 * Math.random())] + "/2/rest/app/bill";
  47. }
  48. /**
  49. * 获取支付通道
  50. *
  51. */
  52. function getPayChannel(bc_channel) {
  53. var dc_channel_id = '';
  54. switch (bc_channel) {
  55. case 'ALI_APP':
  56. dc_channel_id = 'alipay';
  57. break;
  58. case 'WX_APP':
  59. dc_channel_id = 'wxpay';
  60. break;
  61. default:
  62. break;
  63. }
  64. for (var i in channels) {
  65. if (channels[i].id == dc_channel_id) {
  66. return channels[i];
  67. }
  68. }
  69. return null;
  70. }
  71. function doPay(payData, cbsuccess, cberror) {
  72. if (w) return;
  73. w = plus.nativeUI.showWaiting();
  74. mui.ajax(getRandomHost(), {
  75. data: JSON.stringify(payData),
  76. type: 'post',
  77. dataType: 'json',
  78. contentType: "application/json",
  79. success: function(data) {
  80. w.close();
  81. w = null;
  82. var paySrc = '';
  83. if (data.result_code == 0) {
  84. var payChannel = getPayChannel(payData.channel);
  85. if (payChannel) {
  86. if (payChannel.id === 'alipay') {
  87. paySrc = data.order_string;
  88. } else if (payChannel.id === 'wxpay') {
  89. var statement = {};
  90. statement.appid = data.app_id;
  91. statement.noncestr = data.nonce_str;
  92. statement.package = data.package;
  93. statement.partnerid = data.partner_id;
  94. statement.prepayid = data.prepay_id;
  95. statement.timestamp = parseInt(data.timestamp);
  96. statement.sign = data.pay_sign;
  97. paySrc = JSON.stringify(statement);
  98. }
  99. plus.payment.request(payChannel, paySrc, cbsuccess, cberror);
  100. } else if (payData.channel == 'UN_WEB') {
  101. //银联在线支付
  102. var web = plus.webview.create('', "beecloudPay");
  103. //注入JS,解决银联界面返回的问题
  104. web.setJsFile('_www/js/95516.js');
  105. web.addEventListener('loaded', function() {
  106. if (!web.isVisible()) {
  107. web.show();
  108. }
  109. });
  110. web.loadData(data.html);
  111. }
  112. } else {
  113. var bcError = {};
  114. bcError.code = data.result_code;
  115. bcError.message = data.result_msg + ":" + data.err_detail;
  116. cberror(bcError);
  117. }
  118. },
  119. error: function(xhr, errorType, error) {
  120. w.close();
  121. w = null;
  122. cberror(error);
  123. }
  124. });
  125. }