頁面按鈕顯示:
下一步
點選支付:
var wx_pay = function()}";if(open_id.length <= 0 ),function(data))
}else,
success:function (data) else;
}});
}}else
}
@wechat.route('/unified_order', methods=['post'])def unified_order():
'''統一下單介面 price, time_start, time_out,artwork_id'''
ip = request.form.get("ip") if request.form.get(
"ip") else webutil.request_ip()
ordernum = request.form.get("ordernum")
if not ordernum:
return jsonify()
open_id = webutil.session_get_user_open_id(ordernum)
# print '1----', open_id
# if not open_id:
# url = open_weixin_snsapi_base(ordernum, ip)
# return redirect(url)
# print '2----', open_id
# print '3----', open_id
# print '4----', open_id
order = orders.query.filter_by(ordernum=ordernum).first()
price = order.order_price
time_start = order.created_on
time_out = order.created_on
artwork_id = order.artwork_id
res = _unified_order(ordernum, price, ip, time_start,
time_out, artwork_id, open_id)
# 組裝返回值
code = "fail"
msg = res['return_msg']
dict = {}
if res["return_code"] == "success" and res['result_code'] == "success":
dict['timestamp'] = '{}'.format(int(time.time()))
dict['noncestr'] = uuid.uuid4().hex
dict['package'] = "prepay_id=%s" % res['prepay_id']
dict['signtype'] = "md5"
dict['paysign'] = __get_sign(dict)
code = "success"
elif res["return_code"] == "success":
msg = res['err_code_des']
print dict
return jsonify()
def _unified_order(ordernum, price, ip, time_start, time_out,artwork_id, openid):
"""統一下單介面
隨機字串 nonce_str 是 string(32) 5k8264iltkch16cq2502si8znmtm67vs 隨機字串,長度要求在32位以內。推薦隨機數生成演算法
簽名 sign 是 string(32) c380bec2bfd727a4b6845133519f3ad6 通過簽名演算法計算得出的簽名值,詳見簽名生成演算法
簽名型別 sign_type 否 string(32) hmac-sha256 簽名型別,預設為md5,支援hmac-sha256和md5。
商品詳情 detail 否 string(6000)
附加資料 attach 否 string(127) 深圳分店 附加資料,在查詢api和支付通知中原樣返回,可作為自定義引數使用。
商戶訂單號 out_trade_no 是 string(32) 20150806125346 商戶系統內部訂單號,要求32個字元內、且在同乙個商戶號下唯一。 詳見商戶訂單號
標價幣種 fee_type 否 string(16) cny 符合iso 4217標準的三位字母**,預設人民幣:cny,詳細列表請參見貨幣型別
標價金額 total_fee 是 int 88 訂單總金額,單位為分,詳見支付金額
交易起始時間 time_start 否 string(14) 20091225091010 訂單生成時間,格式為yyyymmddhhmmss,如2023年12月25日9點10分10秒表示為20091225091010。其他詳見時間規則
交易結束時間 time_expire 否 string(14) 20091227091010
訂單失效時間,格式為yyyymmddhhmmss,如2023年12月27日9點10分10秒表示為20091227091010。其他詳見時間規則
注意:最短失效時間間隔必須大於5分鐘
商品標記 goods_tag 否 string(32) wxg 商品標記,使用代金券或立減優惠功能時需要的引數,說明詳見代金券或立減優惠
商品id product_id 否 string(32) 12235413214070356458058 trade_type=native時(即掃碼支付),此引數必傳。此引數為***中包含的商品id,商戶自行定義。
指定支付方式 limit_pay 否 string(32) no_credit 上傳此引數no_credit--可限制使用者不能使用信用卡支付
# 生成簽名
dict['sign'] = __get_sign(dict)
print dict, '-----'
# dict轉換為xml格式
xml = __json_to_xml(dict)
url = ""
req = urllib2.request(
url=url, headers=, data=str(xml))
f = urllib2.urlopen(req)
res = f.read()
res = __xml_to_json(res)
return res.get("xml")
function onbridgeready(data)});
}
微信公眾平台註冊
可以看到右上角有 第一次使用公眾平台?立即註冊 點選 立即註冊 進入基本資訊介面 進入到郵箱啟用介面。登入郵箱後,可以收到啟用郵件 點選鏈結啟用賬號。成功啟用後自動跳轉到資訊登記介面。選擇運營主體及型別。並且按要求填寫完整相應的資料。進入選擇型別介面。企業和組織一般選擇服務號。及個人一般選擇訂閱號。...
微信公眾平台開發(一) 接入微信公眾平台
一 接入流程分析參考官方文件 參考文件接入概述分別由以下幾部分完成 1 填寫伺服器配置 2 驗證伺服器位址的有效性 3 依據介面文件實現業務邏輯 按照流程第一部是先填寫伺服器配置,但是我們通常都是先做第二步 編寫 驗證伺服器位址的有效性 controller的寫法 restcontroller pu...
(一)驗證微信公眾平台
第一步,進入驗證頁面 提交到伺服器上的報文為 這時候,需要將你的token,timestamp,和nonce三個字串的值,按照字母排序進行拼接,然後進行sha1,所得出的結果,應該與signature一致,最後,將echostr返回給伺服器。廢話少說了,上 function validatetoke...