data = {
# 服务商APPID
'appid': config_mina['appid'],
# 服务商商户号
'mch_id': config_mina['mch_id'],
# 小程序appid
'sub_appid': config_mina['sub_appid'],
# 子商户号
'sub_mch_id': config_mina['sub_mch_id'],
# 随机字符
'nonce_str': target_wechat.get_nonce_str(),
# 商品描述
'body': '订餐',
# 商户订单号
'out_trade_no': pay_order_info.order_sn,
# 总金额 单位 分
'total_fee': int(pay_order_info.total_price * 100),
# 通知地址
'notify_url': notify_url,
# 交易类型
'trade_type': "JSAPI",
'sub_openid': oauth_bind_info.openid
}
def orderCallback():
result_data = {
'return_code': 'SUCCESS',
'return_msg': 'OK'
}
header = {'Content-Type': 'application/xml'}
# 返回结果集
config_mina = app.config['MINA_APP']
target_wechat = WeChatService(merchant_key=config_mina['paykey'])
callback_data = target_wechat.xml_to_dict( request.data )
app.logger.info(callback_data)
sign = callback_data['sign']
callback_data.pop('sign')
# 产生新的sign
gene_sign = target_wechat.create_sign(callback_data)
app.logger.info(gene_sign)
# 判断 我们产生的sign 和原来的sign 的值
if sign != gene_sign:
# 不等于是 让 return_code,return_msg 都赋值 FAIL
result_data['return_code'] = result_data['return_msg'] = "FAIL"
# 返回xml 信息
return target_wechat.dict_to_xml(result_data), header
order_sn = callback_data['out_trade_no']
pay_order_info = PayOrder.query.filter_by(order_sn=order_sn).first()
if not pay_order_info:
result_data['return_code'] = result_data['return_msg'] = 'FAIL'
return target_wechat.dict_to_xml(result_data), header
# 判断金额
if int( pay_order_info.total_price * 100) != int(callback_data['total_fee']):
result_data['return_code'] = result_data['return_msg'] = 'FAIL'
return target_wechat.dict_to_xml(result_data), header
if pay_order_info.status == 1:
return target_wechat.dict_to_xml(result_data), header
target_pay = PayService()
target_pay.orderSuccess( pay_order_id = pay_order_info.id, params={"pay_sn": callback_data['transaction_id']})
# 将 微信回调的结果放入记录 表pay_order_callback_data 中
target_pay.addPayCallbackData(pay_order_id=pay_order_info.id, data=request.data)
return target_wechat.dict_to_xml(result_data), header
这里有写的,
模拟是 遇到了 上面一样的问题。 成功付款的。
用的 服务商模式。服务商, 子商户 信息都正确的。也成功付款成功了。
就是不能 模拟出来 商品订单号 。