import UIKit import YYText import SnapKit import TZImagePickerController import MBProgressHUD import swiftScan class PayDetailVC: UIViewController { var app: String = "" var qrString: String = "" @IBOutlet weak var scanImageView: UIImageView! @IBOutlet weak var noCardImageView: UIImageView! @IBOutlet weak var scanView: UIView! @IBOutlet weak var syncButton: UIButton! private let payDic: [String: String] = ["微信": "WechatPay", "支付宝": "Alipay", "QQ": "QQPay", "PayPal": "PayPal"] private let appImageDic: [String: String] = ["微信": "push_wechat", "支付宝": "Alipay", "QQ": "push_qq", "PayPal": "PayPal"] var containStr: String = "" var isSync: Bool = false lazy var detailLabel: YYLabel = { let text = YYLabel() text.textVerticalAlignment = .top text.textAlignment = .center text.numberOfLines = 0 text.textColor = .black view.addSubview(text) text.snp.makeConstraints { (make) in make.left.equalToSuperview().offset(14) make.right.equalToSuperview().offset(-14) make.top.equalTo(scanImageView.snp.bottom).offset(35) make.bottom.equalToSuperview().offset(-100) } return text }() lazy var activity: UIActivityIndicatorView = { let ac = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 36, height: 36)) ac.color = .white ac.hidesWhenStopped = true view.addSubview(ac) ac.center = syncButton.center return ac }() override func viewDidLoad() { super.viewDidLoad() if AppSettings.shared.language == .Chinese || AppSettings.shared.language == .Japanese { title = LocString(app) + LocString("收款码") } else { title = LocString(app) + " " + LocString("收款码") } let str = LocString("绑定步骤:\n1.打开") + LocString(app) + LocString(",保存收款码到手机本地;\n2.打开HD Fit Pro,进入设备-钱包-") + LocString(app) + LocString(";\n3.点击上方二维码区域,添加或更换") + LocString(app) + LocString("二维码;\n4.点击下方绑定按钮,将二维码名片绑定至手表;\n\n\n注意事项:\n1.建议上传黑白颜色的二维码;\n2.请务必保持网络畅通;\n3.绑定过程中请将手表靠近手机,请勿操作手机和手表;\n4.确保手表电量充足。\n\n\n不会操作?") + LocString("点我") let text = NSMutableAttributedString(string: str, attributes: [.font: RegularFont(11), .foregroundColor: UIColor.rgbColorFromHex(0x808080)]) let range = NSRange(text.string.range(of: LocString("点我"))!, in: "") text.yy_setTextHighlight(range, color: UIColor.rgbColorFromHex(0xDD000B), backgroundColor: .clear) {[weak self] (containerView, text, range, rect) in let vc = UIStoryboard.loadViewControllerIdentifier(storyboardName: "Setting", identifier: "PayProcessVC") as! PayProcessVC vc.app = (self?.app)! self?.navigationController?.pushViewController(vc, animated: true) } text.yy_setTextUnderline(YYTextDecoration(style: .single, width: 1, color: UIColor.rgbColorFromHex(0xDD000B)), range: range) detailLabel.attributedText = text scanView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(photoAlbum))) if let image = UIImage.getImageFromPath(payDic[app]!) { noCardImageView.isHidden = true scanImageView.image = image // saveImageToPhoto(image) let arrayResult = LBXScanWrapper.recognizeQRImage(image: image) if arrayResult.count > 0, let result = arrayResult[0].strScanned { // self?.createQR(string: result) qrString = result print(qrString) } syncButton.setTitle(LocString("绑定"), for: .normal) } else { noCardImageView.isHidden = false updateButton(false) } switch app { case "QQ": containStr = "qianbao.qq.com" //https://i.qianbao.qq.com/wallet/sqrcode.htm?m case "微信": containStr = "wxp://" case "支付宝": containStr = "alipay.com" // https://qr.alipay.com/ case "PayPal": containStr = "paypal" //paypal.me default: break } } func createQR(string: String) { if string.count > 0 { let qrImg = LBXScanWrapper.createCode(codeType: "CIQRCodeGenerator", codeString: string, size: CGSize(width: 400, height: 400), qrColor: UIColor.black, bkColor: UIColor.white) let logoImg = UIImage(named: appImageDic[app]!) let image = LBXScanWrapper.addImageLogo(srcImg: qrImg!, logoImg: logoImg!, logoSize: CGSize(width: 85, height: 85)) if image.saveImageToPath(payDic[app]!) { scanImageView.image = image noCardImageView.isHidden = true qrString = string updateButton(false) } } } @IBAction func syncCard(_ sender: Any) { if qrString.count == 0 || syncButton.titleLabel?.text == LocString("绑定完成") {return} if isSync { return } syncButton.setTitle(LocString(""), for: .normal) activity.startAnimating() var type: Int = 0 switch app { case "微信": type = 0 case "支付宝": type = 1 case "QQ": type = 2 case "PayPal": type = 3 default: break } isSync = true BluetoothManager.shared.setPay(qrString, type: type) {[weak self] error in if error == nil { self?.updateButton(true) } else { self?.updateButton(false) } self?.isSync = false // hud.hide(animated: true) self?.activity.stopAnimating() // print("卡片设置--\(error)") } } func updateButton(_ status: Bool) { if status { syncButton.backgroundColor = LineColor syncButton.setTitle(LocString("绑定完成"), for: .normal) } else { if qrString.count == 0 { syncButton.backgroundColor = LineColor } else { syncButton.backgroundColor = TintColor } syncButton.setTitle(LocString("绑定"), for: .normal) } } //相册 @objc private func photoAlbum() { if PHPhotoLibrary.authorizationStatus().rawValue == 2 { MBProgressHUD.show(LocString("请在“设置-隐私-照片“选项中,允许'HD Fit Pro'访问你的照片")) return } let picker = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self) picker?.modalPresentationStyle = .fullScreen picker?.allowPickingOriginalPhoto = false //原图 picker?.allowPickingVideo = false //视频 picker?.allowCameraLocation = false //位置 picker?.allowPickingGif = false //GIF picker?.allowTakePicture = false //内部拍照 picker?.allowCrop = false //裁剪 picker?.didFinishPickingPhotosHandle = {[weak self] (photos, assets, isSelectOriginalPhoto) -> Void in if let images = photos { let arrayResult = LBXScanWrapper.recognizeQRImage(image: images[0]) if arrayResult.count > 0, let result = arrayResult[0].strScanned { if result.range(of: (self?.containStr)!, options: .caseInsensitive) != nil { if result.count > 92 { MBProgressHUD.showh(LocString("二维码无法识别")) } else { self?.createQR(string: result) } } else { MBProgressHUD.showh(LocString("二维码无法识别")) } } else { MBProgressHUD.showh(LocString("未识别到二维码")) } } } self.present(picker!, animated: true, completion: nil) } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ } extension PayDetailVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate, TZImagePickerControllerDelegate { }