def pay_cb_yi_zhi_fu(): dd = request_data() data = {} for k, v in dd.items(): data[k] = v if not data: return jsonify(err="nodata") if not data.has_key("sign"): return jsonify(err="nosign") if data["returnCode"] == "SUCCESS": orderno = data["outTradeNo"] ll = orderno.split("_") channel = int(ll[0]) pay_channel = ll[1] ## 获取商户秘钥 sql = 'select md5_key from admin_online_payment where id = %s' % pay_channel mch_key = LogQry(channel).qry(sql)[0][0] ## 先判断签名 if data["resultCode"] == "SUCCESS" and httpc_util.check_sign(data, mch_key, data["sign"]): ## 签名校验通过 支付成功 money = int(float(data["totalFee"]) * 100) platform_orderno = data["transactionId"] orderno = data["outTradeNo"] if do_pay_after(channel, orderno, platform_orderno, int(money), data["timeEnd"]): return jsonify({"return_code":"SUCCESS", "return_msg":"OK"}) else: return jsonify({"return_code":"FAIL", "return_msg":"send err"}) else: return jsonify({"return_code":"FAIL", "return_msg":"check sign err"})
def pay_cb_zfb(): dd = {} for k, v in request.form.items(): if k == "sign_type": continue dd[k] = urllib.unquote(v) if dd["trade_status"] == u"TRADE_SUCCESS": ## 此处比较恶心 一直没有找到支付宝怎么透传参数 渠道号 支付通道ID只能通过订单编号拆串取得 orderno = dd["out_trade_no"] ll = orderno.split("_") channel = int(ll[0]) pay_channel = ll[1] ## 查询公钥 sql = 'select public_key from admin_online_payment where id = %s' % pay_channel public_key = LogQry(channel).qry(sql)[0][0] ## 重新拼私钥 加上前后一段 public_key = '''-----BEGIN PUBLIC KEY----- %s -----END PUBLIC KEY----- ''' % public_key if httpc_util.check_sign(dd, public_key, dd["sign"], sign_type = "RSA2"): pass else: print "check sign fail:", dd payload = {"return_code":"FAIL", "return_msg":"check sign err"} return jsonify(payload) ## 签名校验通过 支付成功 money = int(float(dd["receipt_amount"]) * 100) platform_orderno = dd["trade_no"] if do_pay_after(channel, orderno, platform_orderno, money, dd["gmt_payment"]): payload = {"return_code":"SUCCESS", "return_msg":"OK"} return jsonify(payload) else: print dd payload = {"return_code":"FAIL", "return_msg":"send err"} return jsonify(payload) else: print dd payload = {"return_code":"FAIL", "return_msg":"trade status err"} return jsonify(payload)
def pay_cb_mo_mo_fu(): dd = request_data() data = {} for k, v in dd.items(): data[k] = v if not data: return jsonify(err="nodata") if not data.has_key("sign"): return jsonify(err="nosign") if data["returncode"] == "00": orderno = data["orderid"] ll = orderno.split("_") channel = int(ll[0]) pay_channel = ll[1] ## 获取商户秘钥 sql = 'select md5_key from admin_online_payment where id = %s' % pay_channel mch_key = LogQry(channel).qry(sql)[0][0] ## 先判断签名 去除值为空的 data2 = {} for k, v in data.items(): if v: data2[k] = v if httpc_util.check_sign(data2, mch_key, data2["sign"], lower = False): ## 签名校验通过 支付成功 money = int(float(data["amount"]) * 100) platform_orderno = data["transaction_id"] memo = "" result = do_pay_after(channel, orderno, platform_orderno, money, memo) if result: return "OK" else: return jsonify({"return_code":"FAIL", "return_msg":"send err"}) else: return jsonify({"return_code":"FAIL", "return_msg":"check sign err"}) else: print data return jsonify({"return_code":"FAIL", "return_msg":"check sign err"})