Commit f304dea745ec599dbb2a4b42b3fa8ca9dae74bac
1 parent
1d350d22
农行支付
Showing
4 changed files
with
53 additions
and
11 deletions
package.json
| @@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
| 12 | "dependencies": { | 12 | "dependencies": { |
| 13 | "axios": "^0.21.1", | 13 | "axios": "^0.21.1", |
| 14 | "css-loader": "^3.6.0", | 14 | "css-loader": "^3.6.0", |
| 15 | + "js-base64": "^3.6.0", | ||
| 15 | "less-loader": "^4.1.0", | 16 | "less-loader": "^4.1.0", |
| 16 | "sass-loader": "^7.3.1", | 17 | "sass-loader": "^7.3.1", |
| 17 | "vue": "^2.5.2", | 18 | "vue": "^2.5.2", |
| @@ -30,6 +31,7 @@ | @@ -30,6 +31,7 @@ | ||
| 30 | "babel-preset-stage-2": "^6.22.0", | 31 | "babel-preset-stage-2": "^6.22.0", |
| 31 | "chalk": "^2.0.1", | 32 | "chalk": "^2.0.1", |
| 32 | "copy-webpack-plugin": "^4.0.1", | 33 | "copy-webpack-plugin": "^4.0.1", |
| 34 | + "crypto-js": "^4.0.0", | ||
| 33 | "css-loader": "^0.28.0", | 35 | "css-loader": "^0.28.0", |
| 34 | "extract-text-webpack-plugin": "^3.0.0", | 36 | "extract-text-webpack-plugin": "^3.0.0", |
| 35 | "file-loader": "^1.1.4", | 37 | "file-loader": "^1.1.4", |
src/components/orderPay.vue
| @@ -40,6 +40,9 @@ | @@ -40,6 +40,9 @@ | ||
| 40 | </template> | 40 | </template> |
| 41 | 41 | ||
| 42 | <script> | 42 | <script> |
| 43 | +import CryptoJS from '../utils/AES.js' | ||
| 44 | +let Base64 = require('js-base64').Base64 | ||
| 45 | + | ||
| 43 | import { aliPay, getOpenId, vxPayQuery, bankH5Pay } from '@/api/orderPay/orderPay' | 46 | import { aliPay, getOpenId, vxPayQuery, bankH5Pay } from '@/api/orderPay/orderPay' |
| 44 | 47 | ||
| 45 | export default { | 48 | export default { |
| @@ -144,15 +147,16 @@ export default { | @@ -144,15 +147,16 @@ export default { | ||
| 144 | 147 | ||
| 145 | bankH5Pay(aliParams).then(response => { | 148 | bankH5Pay(aliParams).then(response => { |
| 146 | let res = response.data | 149 | let res = response.data |
| 147 | - console.log(response.data) | ||
| 148 | - if (response.code == 0) {// | ||
| 149 | - window.open(response.data) | ||
| 150 | - // document.write(response.data);//打开支付表单 | ||
| 151 | - } else {//其他情况如【该卡号场内已存在】 | ||
| 152 | - alert(response.message) | ||
| 153 | - console.log(response.message); | ||
| 154 | - } | ||
| 155 | - | 150 | + let _token = res.split('TOKEN=')[1] |
| 151 | + console.log(_token) | ||
| 152 | + let _data = 'method=invokePayFromBrowser&tokenID='+_token | ||
| 153 | + let cryData = CryptoJS.encrypt(_data, 'G9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvM3', 'EkpTEA3FbZFGGq8Y') | ||
| 154 | + | ||
| 155 | + let baseCRY = Base64.encode(cryData) | ||
| 156 | + console.log(baseCRY) | ||
| 157 | + window.location.href='bankabc:' + encodeURIComponent('{"method":"invokePayFromBrowser","param":'+baseCRY+'}') | ||
| 158 | + // 即为加密后的数据。其中paramsEncode是需要加密的数据、 | ||
| 159 | + // keyStr是加密时使用的key,与服务端一致、hash是偏移量,是一个随机生成的16位字符串。 | ||
| 156 | }) | 160 | }) |
| 157 | } | 161 | } |
| 158 | 162 |
src/utils/AES.js
0 → 100644
| 1 | +import CryptoJS from "crypto-js"; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * | ||
| 5 | + * 第一个参数word是待加密或者解密的字符串; | ||
| 6 | + * 第二个参数keyStr是aes加密需要用到的16位字符串的key; | ||
| 7 | + * 第三个参数是初始化向量 iv。 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +export default { | ||
| 11 | + // 加密 | ||
| 12 | + encrypt(word, keyStr, ivStr) { | ||
| 13 | + const key = CryptoJS.enc.Latin1.parse(keyStr); | ||
| 14 | + const iv = CryptoJS.enc.Latin1.parse(ivStr); | ||
| 15 | + const encoded = CryptoJS.AES.encrypt(word, key, { | ||
| 16 | + iv: iv, | ||
| 17 | + mode: CryptoJS.mode.CBC, | ||
| 18 | + adding: CryptoJS.pad.ZeroPadding | ||
| 19 | + }).toString() | ||
| 20 | + return encoded; | ||
| 21 | + }, | ||
| 22 | + // 解密 | ||
| 23 | + decrypt(word, keyStr, ivStr) { | ||
| 24 | + keyStr = keyStr; | ||
| 25 | + ivStr = ivStr; | ||
| 26 | + var key = CryptoJS.enc.Utf8.parse(keyStr); | ||
| 27 | + let iv = CryptoJS.enc.Utf8.parse(ivStr); | ||
| 28 | + | ||
| 29 | + var decrypt = CryptoJS.AES.decrypt(word, key, { | ||
| 30 | + iv, | ||
| 31 | + mode: CryptoJS.mode.CBC, | ||
| 32 | + padding: CryptoJS.pad.ZeroPadding | ||
| 33 | + }); | ||
| 34 | + return decrypt.toString(CryptoJS.enc.Utf8); | ||
| 35 | + } | ||
| 36 | +}; |
src/utils/utils.js
| @@ -79,7 +79,7 @@ export default { | @@ -79,7 +79,7 @@ export default { | ||
| 79 | return '微信' | 79 | return '微信' |
| 80 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { | 80 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { |
| 81 | console.log("支付宝客户端"); | 81 | console.log("支付宝客户端"); |
| 82 | - return '农行' | 82 | + return '支付宝' |
| 83 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { | 83 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { |
| 84 | console.log("农行客户端"); | 84 | console.log("农行客户端"); |
| 85 | return '农行' | 85 | return '农行' |
| @@ -88,7 +88,7 @@ export default { | @@ -88,7 +88,7 @@ export default { | ||
| 88 | return '农行' | 88 | return '农行' |
| 89 | }else { | 89 | }else { |
| 90 | console.log("其他浏览器"); | 90 | console.log("其他浏览器"); |
| 91 | - return '农行' | 91 | + return '支付宝' |
| 92 | } | 92 | } |
| 93 | }, | 93 | }, |
| 94 | // 0eca8f5373ca4866aec2f8e9d9367104 老的id | 94 | // 0eca8f5373ca4866aec2f8e9d9367104 老的id |