def generateAlipayUrl(diagnoseId): if session.has_key('userId'): userId=session['userId'] if userId is None: return redirect(LOGIN_URL) diagnose=Diagnose.getDiagnoseById(diagnoseId) if diagnose and hasattr(diagnose,'patient') and string.atoi(userId)!=diagnose.patient.userID: result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或不是用户申请的") return json.dumps(result.__dict__,ensure_ascii=False) if diagnose and diagnose.status==constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded==constant.DiagnoseUploaed.Uploaded: alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.StartApplyAlipay) AlipayLog.save(alipayLog) description=None needPay=None if hasattr(diagnose,'pathology') and hasattr(diagnose.pathology,'pathologyPostions'): if len(diagnose.pathology.pathologyPostions)>0: if diagnose.pathology.diagnoseMethod==constant.DiagnoseMethod.Mri: needPay=diagnose.getPayCount(constant.DiagnoseMethod.Mri,len(diagnose.pathology.pathologyPostions),diagnose.getUserDiscount(diagnose.patientId)) elif diagnose.pathology.diagnoseMethod==constant.DiagnoseMethod.Ct: needPay=diagnose.getPayCount(constant.DiagnoseMethod.Ct,len(diagnose.pathology.pathologyPostions),diagnose.getUserDiscount(diagnose.patientId)) else: result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对") return json.dumps(result.__dict__,ensure_ascii=False) else: result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对") return json.dumps(result.__dict__,ensure_ascii=False) if hasattr(diagnose,'doctor') and hasattr(diagnose.doctor,'username'): description=' 医生(%s)的诊断费用:%f 元'%(diagnose.doctor.username,needPay) if hasattr(diagnose.doctor.hospital,'name'): description=diagnose.doctor.hospital.name+description payUrl=alipay.create_direct_pay_by_user(diagnose.diagnoseSeriesNumber,diagnose.diagnoseSeriesNumber,'咨询费',needPay) if payUrl: alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.GetAlipayUrl) alipayLog.description=description alipayLog.payUrl=payUrl AlipayLog.save(alipayLog) result=rs.ResultStatus(rs.SUCCESS.status,rs.SUCCESS.msg,payUrl) return json.dumps(result.__dict__,ensure_ascii=False) else: alipayLog=AlipayLog(userId,diagnoseId,constant.AlipayLogAction.GetAlipayUrlFailure) AlipayLog.save(alipayLog) result=rs.ResultStatus(rs.FAILURE.status,constant.AlipayLogAction.GetAlipayUrlFailure) return json.dumps(result.__dict__,ensure_ascii=False) result=rs.ResultStatus(rs.FAILURE.status,"诊断不存在或这状态不对") return json.dumps(result.__dict__,ensure_ascii=False)
def generateAlipayUrl(diagnoseId): if session.has_key('userId'): userId = session['userId'] if userId is None: return redirect(LOGIN_URL) diagnose = Diagnose.getDiagnoseById(diagnoseId) if diagnose and hasattr( diagnose, 'patient') and string.atoi(userId) != diagnose.patient.userID: result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或不是用户申请的") return json.dumps(result.__dict__, ensure_ascii=False) if diagnose and diagnose.status == constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded == constant.DiagnoseUploaed.Uploaded: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.StartApplyAlipay) AlipayLog.save(alipayLog) description = None needPay = None if hasattr(diagnose, 'pathology') and hasattr(diagnose.pathology, 'pathologyPostions'): if len(diagnose.pathology.pathologyPostions) > 0: if diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Mri: needPay = diagnose.getPayCount( constant.DiagnoseMethod.Mri, len(diagnose.pathology.pathologyPostions), diagnose.getUserDiscount(diagnose.patientId)) elif diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Ct: needPay = diagnose.getPayCount( constant.DiagnoseMethod.Ct, len(diagnose.pathology.pathologyPostions), diagnose.getUserDiscount(diagnose.patientId)) else: result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对") return json.dumps(result.__dict__, ensure_ascii=False) else: result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对") return json.dumps(result.__dict__, ensure_ascii=False) if hasattr(diagnose, 'doctor') and hasattr(diagnose.doctor, 'username'): description = ' 医生(%s)的诊断费用:%f 元' % (diagnose.doctor.username, needPay) if hasattr(diagnose.doctor.hospital, 'name'): description = diagnose.doctor.hospital.name + description payUrl = alipay.create_direct_pay_by_user( diagnose.diagnoseSeriesNumber, diagnose.diagnoseSeriesNumber, '咨询费', needPay) if payUrl: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.GetAlipayUrl) alipayLog.description = description alipayLog.payUrl = payUrl AlipayLog.save(alipayLog) result = rs.ResultStatus(rs.SUCCESS.status, rs.SUCCESS.msg, payUrl) return json.dumps(result.__dict__, ensure_ascii=False) else: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.GetAlipayUrlFailure) AlipayLog.save(alipayLog) result = rs.ResultStatus( rs.FAILURE.status, constant.AlipayLogAction.GetAlipayUrlFailure) return json.dumps(result.__dict__, ensure_ascii=False) result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对") return json.dumps(result.__dict__, ensure_ascii=False)
def generateAliPay(userId, diagnoseId, diagnose=None): if diagnoseId: diagnose = Diagnose.getDiagnoseById(diagnoseId) else: diagnose = Diagnose.getDiagnoseById(diagnose.id) if diagnoseId is None and diagnose: diagnoseId = diagnose.id if userId is None: LOG.warn("诊断生成阿里支付地址出错,用户未登录") if isinstance(userId, basestring): userId = string.atoi(userId) if diagnose is None: LOG.error("诊断[diagnoseId=%d]生成阿里支付地址出错,诊断在系统中不存在" % diagnoseId) if diagnose and diagnose.uploadUserId != userId: if hasattr(diagnose, 'patient') and userId != diagnose.patient.userID: LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,用户没有权限" % (diagnoseId, userId)) if diagnose and diagnose.status == constant.DiagnoseStatus.NeedPay and diagnose.ossUploaded == constant.DiagnoseUploaed.Uploaded: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.StartApplyAlipay) AlipayLog.save(alipayLog) description = None needPay = None if hasattr(diagnose, 'pathology') and hasattr(diagnose.pathology, 'pathologyPostions'): if len(diagnose.pathology.pathologyPostions) > 0: if diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Mri: needPay = diagnose.getPayCount( constant.DiagnoseMethod.Mri, len(diagnose.pathology.pathologyPostions), diagnose.getUserDiscount(diagnose.patientId)) elif diagnose.pathology.diagnoseMethod == constant.DiagnoseMethod.Ct: needPay = diagnose.getPayCount( constant.DiagnoseMethod.Ct, len(diagnose.pathology.pathologyPostions), diagnose.getUserDiscount(diagnose.patientId)) else: result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对") return json.dumps(result.__dict__, ensure_ascii=False) else: result = rs.ResultStatus(rs.FAILURE.status, "诊断不存在或这状态不对") return json.dumps(result.__dict__, ensure_ascii=False) if hasattr(diagnose, 'doctor') and hasattr(diagnose.doctor, 'username'): description = ' 医生(%s)的诊断费用:%f 元' % (diagnose.doctor.username, needPay) if hasattr(diagnose.doctor.hospital, 'name'): description = diagnose.doctor.hospital.name + description payUrl = alipay.create_direct_pay_by_user( diagnose.diagnoseSeriesNumber, diagnose.diagnoseSeriesNumber, '咨询费', needPay) if payUrl: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.GetAlipayUrl) alipayLog.description = description alipayLog.payUrl = payUrl AlipayLog.save(alipayLog) updateDiagnose(diagnose.id, payUrl) LOG.info("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址成功" % (diagnoseId, userId)) return payUrl else: alipayLog = AlipayLog(userId, diagnoseId, constant.AlipayLogAction.GetAlipayUrlFailure) AlipayLog.save(alipayLog) LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,去阿里获取的payurl为空" % (diagnoseId, userId)) LOG.error("诊断[diagnoseId=%d][userId=%d]生成阿里支付地址出错,其他未知原因" % (diagnoseId, userId))