def alipay_callback(): data = request.form.to_dict() _LOGGER.info('alipay callback form: %s' % data) signature = data.pop('sign') if alipay_official.check_data(data, signature): orderid = data['out_trade_no'] amount = float(data['total_amount']) succeed_pay('', int(orderid), amount, extend=json.dumps(data)) alipayid = data['app_id'].strip() if float(incr_alipay_today_amount(alipayid, amount)) > _EVERY_DAY_MAX: fresh_overload_alipay_set(alipayid) notify_merchant(orderid) return 'success' else: return 'fail'
def wanhong_callback(): data = request.form _LOGGER.info('wanhong callback: %s' % data) if not wanhong.verify_sign(data): _LOGGER.info('wanhong callback verify sign false') return 'fail' respCode = data['respCode'] amount = Decimal(data['transAmt']) / 100 originid = data['serialId'] orderid = data['orderNo'] if respCode == '0000': succeed_pay(originid, int(orderid), amount, extend=json.dumps(data)) notify_merchant(orderid) else: fail_pay(originid, orderid, amount, extend=data) return 'success'
def sand_callback(): _LOGGER.info('sand callback form: %s' % request.form) data = request.form['data'] req_dct = json.loads(data) sign = request.form['sign'] # if not sand.verify_sign(data, sign): # 验签有问题 # _LOGGER.info("sand verify sign error: %s" % request.form) # return 'respCode=111111' orderid = req_dct['body']['orderCode'] amount = int(req_dct['body']['buyerPayAmount']) / 100.0 succeed_pay('', int(orderid), amount, extend=data) notify_merchant(orderid) return 'respCode=000000'
def keda_callback(): """ {"orderCode":"1617773825225665536","date":"mw+xc48bhv4v2ByZHA6wOJcCSV/xum3FiNahHgNYth2YZhUlJOLqPLfJnsRVT9DwijxSemMFMfTc\nkp24wgv1cKmuyp9zdzvoJlcjtvOuBkBygbeE87IjqVYqWZ0tNsW9GOJiswNxRmo4AF7d+TJ1Kf/wRnF4TEgQLqH0MLDriH2yx5kntdvp0GDa6KZcue+8oIhevOhRcR3k8fpOK9KAAg=="} """ resp_data = request.data _LOGGER.info(resp_data) json_data = json.loads(resp_data) orderid = int(json_data['orderCode']) crypto_data = json_data['date'] pay_detail = keda.decrypto(crypto_data) amount = Decimal(pay_detail["totalFee"]) / 100 # FIXME: 支付宝和微信返回不一样 result = pay_detail.get("state") or pay_detail['tradeState'] if result in ('SUCCESS', 'TRADE_SUCCESS'): succeed_pay('', int(orderid), amount, extend=json.dumps(pay_detail)) notify_merchant(orderid) else: fail_pay('', orderid, amount, extend=pay_detail) return 'SUCCESS'
def guangda_callback(): """ json loads body后的格式 {u'acctCat': u'06', u'acquirerType': u'wechat', u'currency': u'CNY', u'custId': u'170822185829458', u'reqId': u'1000005', u'totalAmount': u'1', u'transAmount': u'1', u'transId': 708301706522270082, u'transResult': u'2', u'transTime': u'20170830170256', u'transType': u'1', u'uuid': u'ofCcf0y1wyICkeYS57V23wx6QSiQ', u'walletOrderId': u'1708300013436934', u'walletTransId': u'4000752001201708309139290722'} """ try: body, sign = request.form['body'], request.form['sign'] if guangda.verify_sign(body, sign): pay_detail = json.loads(body) orderid = pay_detail['reqId'] amount = Decimal(pay_detail['totalAmount']) / 100 originid = pay_detail['transId'] # 上游的订单号 result = pay_detail['transResult'] if result == '2': succeed_pay(originid, orderid, amount, extend=body) notify_merchant(orderid) else: fail_pay(originid, orderid, amount, extend=body) return 'SUCCESS' else: _LOGGER.info('sign error') return 'FAIL' except Exception as e: _LOGGER.exception('pay callback error') return 'FAIL'
def swiftpass_callback(): data = request.data _LOGGER.info('swiftpass callback: %s' % data) data = xmltodict.parse(data)['xml'] data = dict(data) sign = data.pop('sign') if not swiftpass.check_sign(data, sign): _LOGGER.info('swiftpass callback verify sign false') return 'fail' status = data.get('status') result_code = data.get('result_code') pay_result = data.get('pay_result') originid = data.get('399540514434201711104298061303') orderid = data.get('out_trade_no') if status == '0' and result_code == '0': amount = Decimal(data['total_fee']) / 100 if pay_result == '0': succeed_pay(originid, orderid, amount, extend=json.dumps(data)) notify_merchant(orderid) else: fail_pay(originid, orderid, amount, extend=json.dumps(data)) else: _LOGGER.error('swiftpass callback order data error') return 'success'