Esempio n. 1
0
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"})
Esempio n. 2
0
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)
Esempio n. 3
0
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"})