beecloud.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  6. <title></title>
  7. <link rel="stylesheet" href="../css/mui.min.css">
  8. <script src="../js/mui.min.js"></script>
  9. <script type="text/javascript" charset="utf-8">
  10. mui.init();
  11. </script>
  12. <!--标准mui.css-->
  13. <style>
  14. .mui-content-padded {
  15. padding: 10px;
  16. }
  17. body,
  18. body .mui-content {
  19. background-color: #fff !important;
  20. }
  21. #total {
  22. -webkit-user-select: text;
  23. text-align: right;
  24. padding: 0 1em;
  25. border: 0px;
  26. border-bottom: 1px solid #007aff;
  27. border-radius: 0;
  28. font-size: 16px;
  29. width: 30%;
  30. outline: none;
  31. }
  32. textarea{
  33. margin-top: 10px;
  34. }
  35. .mui-btn-block{
  36. padding: 8px 5px;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <header class="mui-bar mui-bar-nav">
  42. <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
  43. <h1 class="mui-title">cloud Pay(云端支付)</h1>
  44. </header>
  45. <div id="dcontent" class="mui-content">
  46. <div class="mui-content-padded">
  47. <p style="text-indent: 22px;">
  48. 这是mui无后端开发示例,集成BeeCloud云支付服务,通过js连接云端支付服务器,实现支付功能的全流程开发。 如下为一个支付示例,为DCloud提供的免费、开源软件进行捐赠吧
  49. </p>
  50. <div style="padding: 0 1em;text-align:center">
  51. 捐赠金额:
  52. <input id="total" type="number" value="1.0" style="text-align:center" /> 元
  53. </div>
  54. <div class="mui-content-padded oauth-area">
  55. <!--探测本机软件,自动显示支付宝和微信支付方式-->
  56. <!--银联在线一直显示-->
  57. <div id='UN_WEB' class="mui-btn mui-btn-blue mui-btn-block pay" style="display: none;">
  58. 银联在线
  59. </div>
  60. </div>
  61. <ul class="mui-table-view">
  62. <li class="mui-table-view-cell">
  63. 支付方式: <span id="channel"></span>
  64. </li>
  65. <li class="mui-table-view-cell">
  66. 订单号: <span id="bill_no"></span>
  67. </li>
  68. <li class="mui-table-view-cell">
  69. 支付金额: <span id="total_fee"></span>
  70. </li>
  71. <li class="mui-table-view-cell">
  72. 支付状态:<span id="status"></span>
  73. </li>
  74. <textarea name="" id="status_msg" cols="20" rows="5"></textarea>
  75. </ul>
  76. </div>
  77. </div>
  78. </body>
  79. <script src="../js/beecloud.js">
  80. </script>
  81. <script type="text/javascript">
  82. mui('.mui-content-padded').on('tap', '.pay', function() {
  83. var channel_id = null;
  84. switch (this.id) {
  85. case 'alipay':
  86. channel_id = 'ALI_APP';
  87. break;
  88. case 'wxpay':
  89. channel_id = 'WX_APP';
  90. break;
  91. case 'UN_WEB':
  92. channel_id = 'UN_WEB';
  93. break;
  94. default:
  95. break;
  96. }
  97. beecloudPay(channel_id);
  98. document.getElementById("channel").innerHTML = channel_id;
  99. document.getElementById("total_fee").innerHTML = document.getElementById('total').value;
  100. document.getElementById("bill_no").innerHTML = beecloud.genBillNo();
  101. })
  102. function beecloudPay(bcChannel) {
  103. //因DCloud尚未申请银联账号,故支付宝、微信使用的是DCloud的appid,银联暂时使用BeeCloud的appid,开发者这里无需判断,直接写一个appid即可;
  104. var _appid = bcChannel == "UN_WEB" ? "c37d661d-7e61-49ea-96a5-68c34e83db3b":"44f01a13-965f-4b27-ba9f-da678b47f3f5"
  105. /*
  106. * 构建支付参数
  107. *
  108. * app_id: BeeCloud控制台上创建的APP的appid,必填
  109. * title: 订单标题,32个字节,最长支持16个汉字;必填
  110. * total_fee: 支付金额,以分为单位,大于0的整数,必填
  111. * bill_no: 订单号,8~32位数字和/或字母组合,确保在商户系统中唯一,必填
  112. * optional: 扩展参数,可以传入任意数量的key/value对来补充对业务逻辑的需求;此参数会在webhook回调中返回; 选填
  113. * bill_timeout: 订单失效时间,必须为非零正整数,单位为秒,必须大于360。选填
  114. */
  115. var payData = {
  116. app_id: _appid,
  117. channel: bcChannel,
  118. title: "DCloud项目捐赠",
  119. total_fee: document.getElementById('total').value * 100,
  120. bill_no: beecloud.genBillNo(),
  121. optional: {
  122. 'uerId': 'beecloud',
  123. 'phone': '4006280728'
  124. },
  125. bill_timeout: 360,
  126. return_url: "http://www.dcloud.io/demo/pay" //wap支付成功后的回跳地址
  127. };
  128. /*
  129. * 发起支付
  130. * payData: 支付参数
  131. * cbsuccess: 支付成功回调
  132. * cberror: 支付失败回调
  133. */
  134. beecloud.payReq(payData, function(result) {
  135. document.getElementById("status").innerHTML = 'success';
  136. document.getElementById("status").style.color = 'green'
  137. document.getElementById("status_msg").innerHTML = "-------- 支付成功 --------" + "\n感谢您的支持,我们会继续努力完善产品";
  138. console.log(result);
  139. }, function(e) {
  140. document.getElementById("status").innerHTML = 'failed';
  141. document.getElementById("status").style.color = 'red'
  142. document.getElementById("status_msg").innerHTML = "-------- 支付失败 --------\n" + "错误码:" + e.code + '\n' + e.message;
  143. });
  144. }
  145. </script>
  146. </html>