實現小程直播帶貨app原始碼的紅包傳送功能
本文為大家分享了直播帶貨app原始碼紅包功能的具體程式碼,主要是實現小程式端的功能,供大家參考,具體內容如下
首先說明一點:直播帶貨app原始碼的紅包功能一定記得用企業付款到錢包功能,別用微信的現金紅包介面,否則你就有踩不完的坑。
直接上程式碼了
微信小程式程式碼:
index.js
//搶紅包相關
view_moneysure: function () {
var that = this;
wx.request({
url: app.globalData.baseurl +'api/wxopen/applet/grab',//這個連結是後端寫的
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
openid: app.globalData.openid,
auth: app.globalData.pcUserInfo.auth
},
method: 'POST',
success: function (response) {
console.log(response);
if (response.data.status==1){
that.setData({
paymsg: response.data.total_amount+'元\n現金紅包',
paymsg2: '恭喜您\n成功領取下單紅包獎勵'
})
}else{
that.setData({
paymsg: '領取失敗\n'+response.data.msg,
paymsg2: '非常抱歉\n如不不明,請聯絡客服'
})
}
},
fail: function (res) {
console.log(response);
that.setData({
paymsg: '領取失敗'
})
}
})
},
showHb: function () {
this.setData({
showFlag: 1
})
},
openHb: function () {
this.setData({
paymsg: '',
paymsg2: ''
})
this.view_moneysure()
var _self = this;
_self.setData({
_num: 1
})
setTimeout(function () {
_self.setData({
_num: 0,
showFlag: 0,
bghide: 1
})
}, 1000)
},
closeHb:function(){
this.setData({
bghide:0
})
},
wxml程式碼:
領紅包
{{paymsg}}
{{paymsg2}}
確定
PHP程式碼:
/*
* 企業付款到零錢
**/
public function weixin_pay_person($re_openid)
{
$obj = new WxopenWechatService();
// 請求引數
$data['mch_appid'] = WxopenWechatConfig::$init_config_applet['appid'];//商戶號
$data['mchid'] = WxopenWechatConfig::$compay_config['mch_id'];//商戶賬號appid
$data['nonce_str'] = $this->get_unique_value();// 隨機字串
//商戶訂單號,可以按要求自己組合28位的商戶訂單號
$data['partner_trade_no'] = $this->get_tradeno($data['mchid']);
$data['openid'] = $re_openid;//使用者openid
$data['check_name'] = 'NO_CHECK';//校驗使用者姓名選項
$data['amount'] = '100';//金額,單位為分
$data['desc'] = "恭喜你得到一個紅包";//企業付款描述資訊
$data['spbill_create_ip'] = $obj->get_client_ip();//IP地址
$appsecret = WxopenWechatConfig::$compay_config['key'];
$data['sign'] = $this->sign($data, $appsecret);
//發紅包介面地址
$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
//將請求資料由陣列轉換成xml
$xml = $this->arraytoxml($data);
//進行請求操作
$res = $this->curl($xml, $url);
//將請求結果由xml轉換成陣列
$arr = $this->xmltoarray($res);
if (is_array($arr)) {
$arr['total_amount'] = $data['amount'];
}
//請請求資訊和請求結果錄入到資料庫中
// 輸出請求結果陣列
return $arr;
}
public function create_rand_money($start = 30, $end = 100)
{
return mt_rand($start, $end);
}
public function sign($params, $appsecret)
{
ksort($params);
$beSign = array_filter($params, 'strlen');
$pairs = array();
foreach ($beSign as $k => $v) {
$pairs[] = "$k=$v";
}
$sign_data = implode('&', $pairs);
$sign_data .= '&key=' . $appsecret;
return strtoupper(md5($sign_data));
}
/*
* 生成32位唯一隨機字串
**/
private
function get_unique_value()
{
$str = uniqid(mt_rand(), 1);
$str = sha1($str);
return md5($str);
}
/*
* 將陣列轉換成xml
**/
private
function arraytoxml(
$arr
) {
$xml = "";
foreach ($arr as $k => $v) {
$xml .= "" . $v . "" . $k . ">";
}
$xml .= "";
return $xml;
}
/*
* 將xml轉換成陣列
**/
private
function xmltoarray(
$xml
) {
//禁止引用外部xml實體
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA);
$arr = json_decode(json_encode($xmlstring), true);
return $arr;
}
/*
* 進行curl操作
**/
private
function curl(
$param = "", $url
) {
$postUrl = $url;
$curlPost = $param;
//初始化curl
$ch = curl_init();
//抓取指定網頁
curl_setopt($ch, CURLOPT_URL, $postUrl);
//設定header
curl_setopt($ch, CURLOPT_HEADER, 0);
//要求結果為字串且輸出到螢幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//post提交方式
curl_setopt($ch, CURLOPT_POST, 1);
// 增加 HTTP Header(頭)裡的欄位
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
// 終止從服務端進行驗證
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//這個是證照的位置
curl_setopt($ch, CURLOPT_SSLCERT, __DIR__ . '/cert/apiclient_cert.pem');
//這個也是證照的位置
curl_setopt($ch, CURLOPT_SSLKEY, __DIR__ . '/cert/apiclient_key.pem');
//執行curl
$data = curl_exec($ch);
//關閉curl
curl_close($ch);
return $data;
}
public function get_tradeno($str)
{
return $str . date("Ymd", time()) . date("His", time()) . rand(1111, 9999);
}
別人總結的相當寶貴的踩坑經驗:
1、紅包是以分為單位,必須大於100分,小於20000分之間。
2、使用者無需關注直播帶貨app原始碼的公眾號(或服務號,下同),如果關注了你的公眾號,紅包會透過公眾號傳送,如果沒有,透過服務通知傳送。
3、介面中的訂單號由“微信支付商戶號+4位年+2為月份+2位日期+10位一天內不能重複的數字”,這個一天是自然日。
4、直播帶貨app原始碼的小程式目前不支援傳送隨機紅包,因此介面中提交的欄位min_value、max_value、total_amount這3個值大小必須一樣,total_num值必須為1.
5、直播帶貨app原始碼的隨機紅包可以自己的程式實現,在100~20000隨機出一個數值,然後給上面3個值設定這個隨機結果。
6、活動名稱看起來沒用,注意高階紅包介面和商戶平臺現金紅包中的管理紅包和建立紅包無關,這兩個地方是給手工傳送紅包使用的。
7、可選的4個引數,目前看來都沒用,不要傳。logo_imgurl, share_content, share_url, share_imgurl。
8、簽名注意,值為空的不要參與簽名。最後附加的key是微信支付的API金鑰,不是公眾平臺的金鑰,在商戶平臺->賬戶設定->安全設定->API安全右下角設定金鑰中設定,第一次使用微信支付需要設定。
9、中文不需要UrlEncode,Hash輸入是byte陣列,用Encoding.UTF8.GetBytes來獲取。
10、證照強烈建議不採用微信官方Demo檔案訪問形式證照,應該安裝在系統證照儲存容器中(在命令列輸入certmgr可以檢視),並設定為私鑰不可以匯出。
11、如果你採用10的方式,你很容易遇到無法找到證照的問題,要求執行程式windows賬號有訪問這個證照的許可權。比如,如果雙擊執行的控制檯程式,證照安裝在當前使用者的個人類別中,那麼程式就可以訪問證照。
如果是IIS賬戶,你可能需要指定應用程式池的執行賬號為指定賬號,然後這個證照安裝在這個賬號下。
微信官方Demo採用檔案的訪問形式,直播帶貨app原始碼就不會有許可權問題,但是要求你對證照檔案保管好,以及證照金鑰保管好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2785501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- app直播原始碼如何實現直播間紅包功能APP原始碼
- 直播帶貨商城功能詳解布穀直播APP原始碼新增功能APP原始碼
- 帶貨直播原始碼,淺談直播實現過程和技術原始碼
- 直播商城原始碼,實現商城客服聊天,傳送文字、圖片的功能原始碼
- 關於直播賣貨小程式原始碼推流功能的實現原始碼
- 直播帶貨app原始碼,實現移動端的按鈕拖動APP原始碼
- 直播帶貨app原始碼是如何應對市場挑戰的(附原始碼功能)APP原始碼
- 直播帶貨app原始碼,獲取直播影片的第一幀APP原始碼
- 關於直播帶貨過程中的卡頓問題,帶貨直播原始碼有話說!原始碼
- 四點總結直播帶貨app原始碼的優劣性APP原始碼
- 呼叫支付介面,實現直播帶貨系統原始碼的線上支付原始碼
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- 想要實現帶貨直播原始碼秒開?先看看這個原始碼
- 直播帶貨app原始碼,不得不瞭解的流媒體傳輸協議APP原始碼協議
- 直播app原始碼,map實現購物車選擇功能APP原始碼
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 直播帶貨軟體開發過程中,如何實現圖片上傳
- 直播帶貨原始碼,Android Studio實現電商引導頁原始碼Android
- 直播app原始碼,定時開關,實現計時器功能APP原始碼
- 直播帶貨系統原始碼,實現MYSQL資料庫的主從同步原始碼MySql資料庫主從同步
- 直播帶貨原始碼的開發環境原始碼開發環境
- 短視訊系統原始碼,直播間實現彈幕的自動傳送原始碼
- 直播賣貨系統的火爆源於帶貨直播原始碼的特色原始碼
- 直播商城系統原始碼獨立運營版直播帶貨仿抖音帶貨模式App原生開發原始碼模式APP
- app直播原始碼,android實現帶下劃線的密碼輸入框APP原始碼Android密碼
- 商城APP直播帶貨,原生開發系統功能APP
- 直播帶貨平臺原始碼,利用ProgressBar實現垂直、水平進度條原始碼
- 直播帶貨app原始碼,關於流媒體技術的那些事APP原始碼
- 直播成今年移動APP大熱門,直播帶貨app原始碼的開發有何亮點APP原始碼
- 帶貨直播系統原始碼的發展史原始碼
- 短影片APP帶貨無加密直播定製功能需求APP加密
- 直播賣貨小程式原始碼中,商品分類頁面是如何實現的原始碼
- 直播系統app原始碼,藉助django 實現顯示圖片功能APP原始碼Django
- 直播帶貨原始碼支援哪些分銷模式原始碼模式
- Django實現傳送郵件功能Django
- 直播APP原始碼實現直播流程上需要注意的內容APP原始碼
- 直播帶貨系統是如何實現直播錄屏的
- 直播帶貨原始碼的下一個發展方向:企業直播原始碼