b2bpay.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Payment</title>
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <meta name="full-screen" content="yes" />
  8. <meta name="x5-fullscreen" content="true" />
  9. <meta name="viewport"
  10. content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
  11. <link rel="stylesheet" href="../css/element-ui.css" />
  12. <link rel="stylesheet" href="../css/element@2.12.2.css" />
  13. <style>
  14. :root {
  15. --brand-red: #eb3f57;
  16. --brand-red-dark: #d92f48;
  17. --brand-red-soft: #fff1f3;
  18. --warning: #f59e0b;
  19. --success: #22c55e;
  20. --text-main: #111827;
  21. --text-secondary: #4b5563;
  22. --text-muted: #9ca3af;
  23. --border: #e5e7eb;
  24. --card-bg: rgba(255, 255, 255, .96);
  25. --page-bg: #f5f7fb;
  26. --radius-xl: 30px;
  27. --radius-lg: 22px;
  28. --radius-md: 16px;
  29. --shadow-card:
  30. 0 24px 70px rgba(17, 24, 39, .08),
  31. 0 6px 20px rgba(17, 24, 39, .05);
  32. --shadow-red:
  33. 0 14px 30px rgba(235, 63, 87, .28);
  34. }
  35. * {
  36. box-sizing: border-box;
  37. }
  38. body {
  39. margin: 0;
  40. min-height: 100vh;
  41. background:
  42. radial-gradient(circle at top left, rgba(235, 63, 87, .12), transparent 32%),
  43. radial-gradient(circle at top right, rgba(59, 130, 246, .1), transparent 30%),
  44. var(--page-bg);
  45. font-family:
  46. Inter,
  47. -apple-system,
  48. BlinkMacSystemFont,
  49. "Segoe UI",
  50. sans-serif;
  51. color: var(--text-main);
  52. -webkit-font-smoothing: antialiased;
  53. }
  54. img {
  55. display: block;
  56. max-width: 100%;
  57. }
  58. a {
  59. color: #2563eb;
  60. }
  61. .payment-page {
  62. width: 100%;
  63. min-height: 100vh;
  64. display: flex;
  65. align-items: center;
  66. justify-content: center;
  67. padding: 32px 20px;
  68. }
  69. .payment-card {
  70. width: min(1080px, 100%);
  71. overflow: hidden;
  72. border-radius: var(--radius-xl);
  73. border: 1px solid rgba(255, 255, 255, .75);
  74. background: var(--card-bg);
  75. backdrop-filter: blur(18px);
  76. box-shadow: var(--shadow-card);
  77. }
  78. .payment-header {
  79. padding: 26px 34px;
  80. border-bottom: 1px solid var(--border);
  81. background:
  82. linear-gradient(180deg,
  83. #ffffff 0%,
  84. #fafcff 100%);
  85. display: flex;
  86. align-items: center;
  87. justify-content: space-between;
  88. gap: 20px;
  89. flex-wrap: wrap;
  90. }
  91. .brand-box {
  92. width: 100%;
  93. display: flex;
  94. align-items: center;
  95. justify-content: space-between;
  96. gap: 16px;
  97. }
  98. .brand-logo {
  99. border-radius: 18px;
  100. overflow: hidden;
  101. }
  102. .brand-title {
  103. font-size: 26px;
  104. font-weight: 850;
  105. letter-spacing: -.03em;
  106. }
  107. .language-switch {
  108. display: inline-flex;
  109. align-items: center;
  110. gap: 8px;
  111. padding: 10px 14px;
  112. border-radius: 999px;
  113. border: 1px solid var(--border);
  114. background: #fff;
  115. }
  116. .language-switch img {
  117. width: 18px;
  118. height: 12px;
  119. object-fit: cover;
  120. }
  121. .language-switch .menu {
  122. font-size: 14px;
  123. font-weight: 700;
  124. cursor: pointer;
  125. }
  126. .payment-body {
  127. padding: 42px 34px;
  128. }
  129. .payment-grid {
  130. display: grid;
  131. grid-template-columns: 320px 1fr;
  132. gap: 34px;
  133. }
  134. .qr-panel {
  135. padding: 28px 24px;
  136. border-radius: var(--radius-lg);
  137. background:
  138. linear-gradient(180deg,
  139. #ffffff 0%,
  140. #fafafa 100%);
  141. border: 1px solid var(--border);
  142. text-align: center;
  143. }
  144. .amount-box {
  145. margin-bottom: 22px;
  146. }
  147. .amount-label {
  148. color: var(--text-secondary);
  149. font-size: 14px;
  150. }
  151. .amount-value {
  152. margin-top: 10px;
  153. font-size: 34px;
  154. line-height: 1;
  155. font-weight: 900;
  156. color: var(--brand-red);
  157. }
  158. .currency {
  159. font-size: 18px;
  160. color: var(--text-main);
  161. }
  162. .qrcode-box {
  163. width: 250px;
  164. height: 250px;
  165. margin: 0 auto;
  166. border-radius: 22px;
  167. background: #fff;
  168. box-shadow:
  169. 0 12px 30px rgba(17, 24, 39, .05);
  170. }
  171. #qrcode {
  172. width: 100%;
  173. height: 100%;
  174. }
  175. .instruction-panel {
  176. padding: 30px;
  177. border-radius: var(--radius-lg);
  178. border: 1px solid var(--border);
  179. background: #fff;
  180. }
  181. .section-title {
  182. margin: 0 0 22px;
  183. font-size: 24px;
  184. line-height: 1.2;
  185. font-weight: 850;
  186. letter-spacing: -.03em;
  187. }
  188. .steps {
  189. margin: 0;
  190. padding-left: 20px;
  191. }
  192. .steps li {
  193. margin-bottom: 14px;
  194. color: var(--text-secondary);
  195. line-height: 1.8;
  196. font-size: 15px;
  197. }
  198. .warning-box {
  199. margin-top: 22px;
  200. padding: 18px 20px;
  201. border-radius: 18px;
  202. background: #fff7ed;
  203. border: 1px solid rgba(245, 158, 11, .2);
  204. color: #92400e;
  205. font-size: 14px;
  206. line-height: 1.8;
  207. }
  208. .address-box {
  209. margin-top: 24px;
  210. display: flex;
  211. gap: 12px;
  212. align-items: stretch;
  213. }
  214. .pay-address .el-input__inner {
  215. height: 50px;
  216. border-radius: 16px;
  217. border: 1px solid var(--border);
  218. font-size: 14px;
  219. }
  220. .copy-btn {
  221. width: 200px;
  222. height: 50px;
  223. padding: 0 24px;
  224. box-sizing: border-box;
  225. border-radius: 16px;
  226. border: 1px solid var(--border);
  227. background: #fff;
  228. font-weight: 700;
  229. cursor: pointer;
  230. transition:
  231. transform .22s ease,
  232. box-shadow .22s ease;
  233. }
  234. .copy-btn:hover {
  235. transform: translateY(-2px);
  236. box-shadow:
  237. 0 12px 24px rgba(17, 24, 39, .08);
  238. }
  239. .action-buttons {
  240. margin-top: 32px;
  241. display: flex;
  242. gap: 16px;
  243. flex-wrap: wrap;
  244. align-items: center;
  245. justify-content: center;
  246. }
  247. .pay-btn.el-button--primary {
  248. flex: 1;
  249. min-width: 180px;
  250. height: 52px;
  251. border: none;
  252. border-radius: 999px;
  253. font-size: 16px;
  254. font-weight: 800;
  255. background:
  256. linear-gradient(135deg,
  257. var(--brand-red),
  258. var(--brand-red-dark));
  259. box-shadow: var(--shadow-red);
  260. }
  261. .cancel-btn.el-button--warning {
  262. flex: 1;
  263. min-width: 180px;
  264. height: 52px;
  265. border: none;
  266. border-radius: 999px;
  267. font-size: 16px;
  268. font-weight: 800;
  269. background:
  270. linear-gradient(135deg,
  271. #f59e0b,
  272. #ea580c);
  273. box-shadow:
  274. 0 14px 30px rgba(245, 158, 11, .28);
  275. margin-left: 0;
  276. }
  277. .el-button {
  278. transition:
  279. transform .22s ease,
  280. box-shadow .22s ease;
  281. }
  282. .el-button:hover {
  283. transform: translateY(-2px);
  284. }
  285. .el-dropdown-menu {
  286. border-radius: 14px;
  287. overflow: hidden;
  288. }
  289. @media (max-width: 900px) {
  290. .payment-grid {
  291. grid-template-columns: 1fr;
  292. }
  293. }
  294. @media (max-width: 768px) {
  295. .payment-page {
  296. padding: 14px;
  297. }
  298. .payment-card {
  299. border-radius: 24px;
  300. }
  301. .payment-header {
  302. padding: 22px 18px;
  303. flex-direction: column;
  304. align-items: flex-start;
  305. }
  306. .language-switch {
  307. justify-content: center;
  308. }
  309. .payment-body {
  310. padding: 28px 18px;
  311. }
  312. .instruction-panel {
  313. padding: 22px 18px;
  314. }
  315. .address-box {
  316. flex-direction: column;
  317. }
  318. .copy-btn {
  319. width: 100%;
  320. }
  321. .action-buttons {
  322. flex-direction: column;
  323. }
  324. .pay-btn.el-button--primary,
  325. .cancel-btn.el-button--warning {
  326. width: 100%;
  327. }
  328. }
  329. </style>
  330. </head>
  331. <body>
  332. <div class="payment-page" id="pay">
  333. <div class="payment-card">
  334. <div class="payment-header">
  335. <div class="brand-box">
  336. <div class="brand-logo">
  337. <img
  338. src="data:image/png;base64,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" />
  339. </div>
  340. <div class="language-switch chooseLang">
  341. <el-dropdown trigger="click" @command="chooseLang">
  342. <span class="menu">
  343. {{langList[language]}}
  344. <i class="el-icon-arrow-down el-icon--right"></i>
  345. </span>
  346. <el-dropdown-menu slot="dropdown">
  347. <el-dropdown-item command="en">English</el-dropdown-item>
  348. <el-dropdown-item command="cn">中文简体</el-dropdown-item>
  349. </el-dropdown-menu>
  350. </el-dropdown>
  351. </div>
  352. </div>
  353. </div>
  354. <div class="payment-body">
  355. <div class="payment-grid">
  356. <div class="qr-panel">
  357. <div class="amount-box">
  358. <div class="amount-label">{{lang.item11}} :</div>
  359. <div class="amount-value">
  360. {{amount}}
  361. <span class="currency">{{currency}}</span>
  362. </div>
  363. </div>
  364. <div class="qrcode-box">
  365. <div id="qrcode"></div>
  366. </div>
  367. </div>
  368. <div class="instruction-panel">
  369. <ol class="steps">
  370. <li>
  371. {{lang.item1}} {{currency}}{{lang.item2}}
  372. <a rel="nofollow noopener" target="_blank" href="https://bitcoin.org/en/choose-your-wallet"
  373. title="Bitcoin.org">bitcoin.org</a>
  374. {{lang.item3}} {{currency}}
  375. </li>
  376. <li>{{lang.item4}}{{amount}} {{currency}} {{lang.item5}}</li>
  377. </ol>
  378. <div class="warning-box">
  379. {{lang.item6}}
  380. </div>
  381. <div class="address-box">
  382. <el-input readonly size="mini" v-model.trim="addresses" placeholder="" id="PAY_link"
  383. class="pay-address"></el-input>
  384. <button class="copy-btn" type="submit" data-toggle="popover" :data-content="lang.item7"
  385. data-target="pay-address" class="btn btn-default prompt-link" @click="CopyShareLink('PAY_link')">
  386. {{lang.item8}}
  387. </button>
  388. </div>
  389. <div class="action-buttons">
  390. <el-button size="medium" type="primary" class="pay-btn" @click="Pay">
  391. {{lang.item9}}
  392. </el-button>
  393. <el-button size="medium" type="warning" class="cancel-btn" @click="Cancle">
  394. {{lang.item10}}
  395. </el-button>
  396. </div>
  397. </div>
  398. </div>
  399. </div>
  400. </div>
  401. </div>
  402. <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
  403. <script src="https://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
  404. <script src="../js/vue.min.js"></script>
  405. <script src="../js/axios.min.js"></script>
  406. <script src="../js/element-ui.js"></script>
  407. <script src="../js/element@2.12.2.js"></script>
  408. <script src="../js/pay.js"></script>
  409. </body>
  410. </html>