如何設計和製作微信紅包

2021-01-18 百度經驗

微信紅包是目前非常火的一款H5應用,那麼怎麼設計和製作微信紅包呢?本經驗閱讀對象為微信行業有H5經驗的前端人員。本經驗主要內容如下

設計合理的紅包流程,如下圖所示,展示了用戶側的相關操作,此次活動用戶最多只有一次獲獎機會,另一方面,伺服器開啟定時輪詢服務,用於發放紅包.

設計資料庫表結構設計及紅包隊列機制repacket 表是紅包基礎信息表,用戶搖紅包時,會在該表中創建一條記錄,此時stat狀態是0。另一方面,伺服器上有輪詢程序,5秒輪詢一次,每次從表redpacket 中取出stat=0的10條記錄,進行紅包發放操作,每發放成功一個,對於的stat設置為1。為了確保紅包送到,我們設計了ntrytimes 欄位,每次發送如果未成功,則 該欄位增1,值到該欄位數值高於某值,一般為5wxlog 表用來記錄紅包發放反饋細節,用於紅包發放會碰到很多突發問題,該表記錄每次發放的細節,有利於提高我們的服務質量

如何防止被微信支付拒絕微信紅包被拒有很多情況,如下是其中最常見的三種,3.3.1 發放失敗,此請求可能存在風險,已被微信攔截 該情況一般是因為用戶帳號存在異常,比如微信監控機制發現用戶利用紅包在賭博,則會屏蔽。此類問題沒有解決方法。<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[發放失敗,此請求可能存在風險,已被微信攔截]]></return_msg><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[NO_AUTH]]></err_code><err_code_des><![CDATA[發放失敗,此請求可能存在風險,已被微信攔截]]></err_code_des><mch_billno><![CDATA[re2016031816491917528]]></mch_billno><mch_id>1237758902</mch_id><wxappid><![CDATA[公眾號APPID]]></wxappid><re_openid><![CDATA[okoQctzL9-fRrRlr-gIj4cEazNFM]]></re_openid><total_amount>100</total_amount></xml>3.3.2 超過頻率限制,請稍後再試,公眾帳號對某一個用戶發放紅包頻次不能太多,否則會出現這種情況。另外系統發放紅包對微信API請求不能過於頻繁。此類問題解決方法就是控制用戶紅包數目,並且控制API請求頻率<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[超過頻率限制,請稍後再試]]></return_msg><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[FREQ_LIMIT]]></err_code><err_code_des><![CDATA[超過頻率限制,請稍後再試]]></err_code_des><mch_billno><![CDATA[re2016032110454813571]]></mch_billno><mch_id>1237758902</mch_id><wxappid><![CDATA[公眾號APPID]]></wxappid><re_openid><![CDATA[okoQctyDbaPvyPKSXq9QberLnPUM]]></re_openid><total_amount>200</total_amount></xml>3.2 帳號餘額不足,請到商戶平臺充值後再重試. 一種可能是真沒錢了,另外一種可能是並發太大,微信會返回此種情況,解決方案是將請求變成順序的。後面章節會單獨說明<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[帳號餘額不足,請到商戶平臺充值後再重試]]></return_msg><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[NOTENOUGH]]></err_code><err_code_des><![CDATA[帳號餘額不足,請到商戶平臺充值後再重試]]></err_code_des><mch_billno><![CDATA[re2016032110460657709]]></mch_billno><mch_id>1237758902</mch_id><wxappid><![CDATA[公眾號APPID]]></wxappid><re_openid><![CDATA[okoQct14A0OYz_bx0Spe0P-6HNTw]]></re_openid><total_amount>100</total_amount></xml>3.3 如果發放成功,則返回如下信息<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[發放成功]]></return_msg><result_code><![CDATA[SUCCESS]]></result_code><mch_billno><![CDATA[re2016032417512098479]]></mch_billno><mch_id>1237758902</mch_id><wxappid><![CDATA[公眾號APPID]]></wxappid><re_openid><![CDATA[okoQct7fPhd1JqtDz0LqTUxf1kNU]]></re_openid><total_amount>200</total_amount><send_listid><![CDATA[0010173893201603240631676524]]></send_listid><send_time><![CDATA[20160324175121]]></send_time></xml>3.3.4 其他錯誤碼說明請參考微信官方給出的錯誤提示及解決方案

設計紅包發放定時器我們之所以要啟用定時器操作,是為了保證我們能及時地響應紅包發放操作。同時也為了保證任意時間我們向微信支付平臺調用支付請求最多只有一個http請求。在win系統下,我們需要添加定時任務,如下倆張圖展示了windows下定時器配置在創建定時任務的時候,我們最好先創建一個bat(hongbao.bat)文件,內容如下C:\phpStudy\php53\php.exe C:\WWW\task.php Index/hongbaotask.php 是一個php文件,  Index/hongbao 是Index模塊下的 hongbao發放方法該示例採用THINKPHP框架,CGI模式linux下定時器使用crontab,考慮到時間限制,我們一般一次拉取10個紅包,並10秒循環一次crontab  -e 編輯crontab服務文件     */2 * * * * /bin/sh /home/admin/jiaoben/hongbao.sh 保存文件並並退出關於crontab相應的資料很多,可以自行百度。 hongbao.sh  裡的內容是thinkphp cgi模式的php 接口php /var/WWW/task.php Index/hongbao

h5實現搖動代碼解析

如何獲得流暢自然的的聲音 該應用有倆個音樂,一個是搖中的音樂,一個是搖動中的,何時播放,如何流暢地播放,這是個大問題,本章節採用如下js 很好地解覺了該問題

php實現紅包發放核心函數,以thinkphp為例

相關焦點