本文目錄一覽:
- 1、微信小程序如何使用PHP實現文件上傳
- 2、微信小程序怎麼向外部php文件傳遞參數
- 3、前端如何在微信小程序中將用戶頭像存為臨時文件路徑
- 4、微信小程序,後端用php寫完介面,怎麼把數據給前端,要帶什麼參數
- 5、如何把已寫好的html或者PHP寫好的程序放進微信小程序
- 6、tp中微信小程序上傳怎麼寫
微信小程序如何使用PHP實現文件上傳
調用小程序文件上傳api
伺服器接收到微信post過來的文件之後,php處理代碼和傳統文件上傳代碼一樣
微信小程序怎麼向外部php文件傳遞參數
PAY頁面往 js_api_call.php 傳值 獲取不到的問題
echo 是可以echo出來的 但是
這裡不寫死就會報錯 $key0$
?php
/**
* JS_API支付demo
* ====================================================
* 在微信瀏覽器裡面打開H5網頁中執行JS調起支付。介面輸入輸出數據格式為JSON。
* 成功調起支付需要三個步驟:
* 步驟1:網頁授權獲取用戶openid
* 步驟2:使用統一支付介面,獲取prepay_id
* 步驟3:使用jsapi調起支付
*/
//獲取信息
@$name=”支付測試-包包”;
@$price=0.01*100;
@$hyid=$_GET[‘hyid’];
@$out_trade_no=$_GET[‘num’];//訂單號
include_once(“../WxPayPubHelper/WxPayPubHelper.php”);
//使用jsapi介面
$jsApi = new JsApi_pub();
//=========步驟1:網頁授權獲取用戶openid============
//通過code獲得openid
if (!isset($_GET[‘code’]))
{
//觸發微信返回code碼
$url = $jsApi-createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
Header(“Location: $url”);
}else
{
//獲取code碼,以獲取openid
$code = $_GET[‘code’];
$jsApi-setCode($code);
$openid = $jsApi-getOpenId();
}
//=========步驟2:使用統一支付介面,獲取prepay_id============
//使用統一支付介面
$unifiedOrder = new UnifiedOrder_pub();
//設置統一支付介面參數
//設置必填參數
//appid已填,商戶無需重複填寫
//mch_id已填,商戶無需重複填寫
//noncestr已填,商戶無需重複填寫
//spbill_create_ip已填,商戶無需重複填寫
//sign已填,商戶無需重複填寫
$unifiedOrder-setParameter(“openid”,”$openid”);//商品描述
$unifiedOrder-setParameter(“body”,”$name”);//商品描述
//自定義訂單號,此處僅作舉例
$timeStamp = time();
$out_trade_no = WxPayConf_pub::APPID.”$timeStamp”;
$unifiedOrder-setParameter(“out_trade_no”,”$out_trade_no”);//商戶訂單號
$unifiedOrder-setParameter(“total_fee”,”$price”);//總金額
$unifiedOrder-setParameter(“notify_url”,””);//通知地址
$unifiedOrder-setParameter(“trade_type”,”JSAPI”);//交易類型
//非必填參數,商戶可根據實際情況選填
//$unifiedOrder-setParameter(“sub_mch_id”,”XXXX”);//子商戶號
//$unifiedOrder-setParameter(“device_info”,”XXXX”);//設備號
//$unifiedOrder-setParameter(“attach”,”XXXX”);//附加數據
//$unifiedOrder-setParameter(“time_start”,”XXXX”);//交易起始時間
//$unifiedOrder-setParameter(“time_expire”,”XXXX”);//交易結束時間
//$unifiedOrder-setParameter(“goods_tag”,”XXXX”);//商品標記
$unifiedOrder-setParameter(“attach”,”2″);//會員ID
$prepay_id = $unifiedOrder-getPrepayId();
//=========步驟3:使用jsapi調起支付============
$jsApi-setPrepayId($prepay_id);
$jsApiParameters = $jsApi-getParameters();
//echo $jsApiParameters;
?
html
head
meta charset=”utf-8″
title支付頁面/title
script type=”text/javascript”
//調用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
‘getBrandWCPayRequest’,
?php echo $jsApiParameters; ?,
function(res){
WeixinJSBridge.log(res.err_msg);
if(res.err_msg == “get_brand_wcpay_requestk”){
window.location.href=’/shop/successful.php?spmc=?php echo $name; ?price=?php echo $price; ?’;
//history.go(-1);
}else{
window.location.href=’/shop/pay.php’;
}
}
);
}
if (typeof WeixinJSBridge == “undefined”){
if( document.addEventListener ){
document.addEventListener(‘WeixinJSBridgeReady’, jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent(‘WeixinJSBridgeReady’, jsApiCall);
document.attachEvent(‘onWeixinJSBridgeReady’, jsApiCall);
}
}else{
jsApiCall();
}
/script
/head
/html
前端如何在微信小程序中將用戶頭像存為臨時文件路徑
你可以用wx.request把頭像的url發送到後台伺服器,由後台伺服器去獲取這個圖片。
比如說你的後台程序是php的,可以這樣(假定文件名為save_tx.php):
?php
$fn=base_convert(time().mt_rand(0,9),10,36).”jpg”;
file_put_contents($fn,file_get_contents($_GET[‘url’]));
echo “頭像上傳為”.$fn;
?
這樣在微信小程序中就可以這樣(假定用戶頭像的url已保存到變數txUrl中):
wx.request({
url: ‘伺服器域名路徑/save_tx.php?url=’ + encodeURIComponent(txUrl),
success: res = {
wx.showToast({
title: res,
icon: “none”
})
}
})
微信小程序,後端用php寫完介面,怎麼把數據給前端,要帶什麼參數
1、首先在 index.js中想寫邏輯代碼。
2、其中page裡面的data裡面是前台展示時的一些數據,而onload裡面是調用的介面。
3、調用的方式為get調用,返回的數據存在res裡面。
4、返回的數據,而data中就是需要的數據。
5、data:一個入參method:請求方式,如果是POST請求必須按上面寫,默認是get請求,不用處理。complete:頁面請求完成後的方法,通過that.setData將數據傳遞給WXML頁面。success:頁面載入成功後的執行方法。
如何把已寫好的html或者PHP寫好的程序放進微信小程序
第一步:申請域名備案
第二步:購買SSL證書 小程序只認https 部署你的項目
第三步:申請小程序 添加域名
第四步:下載小程序工具(微信web開發工具)
第五步:修改小程序dome 把WXML裡面改成web-view src=”https://你的地址”/web-view
第六步:需要調用某些api 繼續改你的html/php代碼
第7步:點擊工具上傳,微信後台提交審核
tp中微信小程序上傳怎麼寫
第一步 先把文件夾的那兩個圖片 配置成一樣的路徑 除了域名要改 其他保持一致。
第二步 把 Weixinpay 這個文件夾放在 \ThinkPHP\Library\Vendor 將Weixinpay文件夾放置到這個Vendor文件夾中
第三步 把 WxJsAPIController.class.php 這個php文件 \Home\Controller 這裡面
第四步 把 WxJsAPI這個文件夾 放置在 \Home\View 這個裡面
第五步 成功調用微信公眾號支付功能
jsApiCall.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
!DOCTYPE html
html
head
meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /
meta name=’viewport’ content=’width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0’/
title微信安全支付/title
script type=”text/javascript”
//調用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
‘getBrandWCPayRequest’,
?php echo $jsApiParameters; ?,
function(res){
WeixinJSBridge.log(res.err_msg);
if(res.err_msg == “get_brand_wcpay_request:ok”){
//alert(res.err_code+res.err_desc+res.err_msg);
/*這裡寫如果支付成功的話執行什麼操作*/
}else{
//返回跳轉到訂單詳情頁面
alert(支付失敗);
}
}
);
}
function callpay()
{
if (typeof WeixinJSBridge == “undefined”){
if( document.addEventListener ){
document.addEventListener(‘WeixinJSBridgeReady’, jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent(‘WeixinJSBridgeReady’, jsApiCall);
document.attachEvent(‘onWeixinJSBridgeReady’, jsApiCall);
}
}else{
jsApiCall();
}
}
/script
/head
body
button style=”width:210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;” type=”button” onclick=”jsApiCall()” id=”asd” 購買/button
/p
/body
/html
WxJsAPIController.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
?php
namespace Home\Controller;
use Think\Controller;
class WxJsAPIController extends Controller{
public function _initialize()
{
//引入WxPayPubHelper
vendor(‘Weixinpay.WxPayPubHelper’);
}
public function jsApiCall()
{
//使用jsapi介面
$jsApi = new \JsApi_pub();
//=========步驟1:網頁授權獲取用戶openid============
//通過code獲得openid
//
//
if (!isset($_GET[‘code’]))
{
//觸發微信返回code碼
$rUrl=urlencode(C(‘WxConfig.JS_API_CALL_URL’).’/id/’.$_GET[id]);
/*注意一下這個 id 是為了可以成功的傳個 id值才這樣寫 如果你不需要的話也可以直接寫成
$rUrl=urlencode(C(‘WxConfig.JS_API_CALL_URL’));
$this-redirect(‘WxJsAPI/jsApiCall’,array(‘id’ =55),0, ‘頁面跳轉中…’);
我是這樣穿這個id過來的值得你們也可以自己改成其他的來傳這個id 或是刪除他不要
*/
$url = $jsApi-createOauthUrlForCode($rUrl);
// echo $url;exit();
Header(“Location: $url”);
}else
{
//獲取code碼,以獲取openid
$code = $_GET[‘code’];
$jsApi-setCode($code);
$openid = $jsApi-getOpenId();//openid 這裡是為了獲取用戶當前的openid 如果你有做微信登陸的話就可以無視他。
}
//=========步驟2:使用統一支付介面,獲取prepay_id============
//使用統一支付介面
$unifiedOrder = new \UnifiedOrder_pub();
/*此處做資料庫的查詢 這裡操作資料庫把產品信息顯示出來*/
/*此處做資料庫的查詢 這裡操作資料庫把產品信息顯示出來*/
//設置統一支付介面參數
//設置必填參數
//appid已填,商戶無需重複填寫
//mch_id已填,商戶無需重複填寫
//noncestr已填,商戶無需重複填寫
//spbill_create_ip已填,商戶無需重複填寫
//sign已填,商戶無需重複填寫
//
$NOTIFY_URL=”你的域名/index.php/Home/WxJsAPI/notify”;
$unifiedOrder-setParameter(“openid”,$openid);//openid
$unifiedOrder-setParameter(“body”,’商品的名字’);//商品描述
$unifiedOrder-setParameter(“out_trade_no”,’123456789′);//商戶訂單號
$unifiedOrder-setParameter(“total_fee”,1*100);//總金額 微信的錢1*100等於1
$unifiedOrder-setParameter(“notify_url”,$NOTIFY_URL);//通知地址
$unifiedOrder-setParameter(“trade_type”,”JSAPI”);//交易類型
//非必填參數,商戶可根據實際情況選填
//$unifiedOrder-setParameter(“sub_mch_id”,”XXXX”);//子商戶號
//$unifiedOrder-setParameter(“device_info”,”XXXX”);//設備號
//$unifiedOrder-setParameter(“attach”,”XXXX”);//附加數據
//$unifiedOrder-setParameter(“time_start”,”XXXX”);//交易起始時間
//$unifiedOrder-setParameter(“time_expire”,”XXXX”);//交易結束時間
//$unifiedOrder-setParameter(“goods_tag”,”XXXX”);//商品標記
//$unifiedOrder-setParameter(“openid”,”XXXX”);//用戶標識
//$unifiedOrder-setParameter(“product_id”,”XXXX”);//商品ID
$prepay_id = $unifiedOrder-getPrepayId();
// echo $prepay_id;exit();
//=========步驟3:使用jsapi調起支付============
$jsApi-setPrepayId($prepay_id);
$jsApiParameters = $jsApi-getParameters();
$WEB_HOST=’你的域名’;//填寫的話 如 a rel=”nofollow” href=”” target=”_blank”;/a 最後面不用加 /
$this-assign(‘HOSTS’,$WEB_HOST);
$this-assign(‘jsApiParameters’,$jsApiParameters);
$this-display();
//echo $jsApiParameters;
}
public function notify()
{
//使用通用通知介面
$notify = new \Notify_pub();
//存儲微信的回調
$xml = $GLOBALS[‘HTTP_RAW_POST_DATA’];
$notify-saveData($xml);
//驗證簽名,並回應微信。
//對後台通知交互時,如果微信收到商戶的應答不是成功或超時,微信認為通知失敗,
//微信會通過一定的策略(如30分鐘共8次)定期重新發起通知,
//儘可能提高通知的成功率,但微信不保證通知最終能成功。
if($notify-checkSign() == FALSE){
$notify-setReturnParameter(“return_code”,”FAIL”);//返回狀態碼
$notify-setReturnParameter(“return_msg”,”簽名失敗了啊”);//返回信息
}else{
$notify-setReturnParameter(“return_code”,”SUCCESS”);//設置返回碼
}
$returnXml = $notify-returnXml();
echo $returnXml;
//==商戶根據實際情況設置相應的處理流程,此處僅作舉例=======
//以log文件形式記錄回調信息
// $log_ = new Log_();
$log_name= ROOT.”/Public/notify_url.log”;//log文件路徑
if($notify-checkSign() == TRUE)
{
if ($notify-data[“return_code”] == “FAIL”) {
//此處應該更新一下訂單狀態,商戶自行增刪操作
log_result($log_name,”【通信出錯】:\n”.$xml.”\n”);
}
elseif($notify-data[“result_code”] == “FAIL”){
//此處應該更新一下訂單狀態,商戶自行增刪操作
log_result($log_name,”【業務出錯】:\n”.$xml.”\n”);
}
else{
/*查看支付成功的返回值請去 a rel=”nofollow” href=”” target=”_blank”;/a */
$xmlss=$notify-data[“out_trade_no”];//訂單號
$total_fee=$notify-data[‘total_fee’];//訂單總金額,單位為分,詳見支付金額
/*更新訂單狀態這裡寫資料庫的操作*/
/*更新訂單狀態這裡寫資料庫的操作*/
//此處應該更新一下訂單狀態,商戶自行增刪操作
log_result($log_name,”【支付成功】:\n”.$xml.”\n”);
}
//商戶自行增加處理流程,
//例如:更新訂單狀態
//例如:資料庫操作
//例如:推送支付完成信息
}
}
// 列印log
public function log_result($file,$word)
{
$fp = fopen($file,”a”);
flock($fp, LOCK_EX) ;
fwrite($fp,”執行日期:”.strftime(“%Y-%m-%d-%H:%M:%S”,time()).”\n”.$word.”\n\n”);
flock($fp, LOCK_UN);
fclose($fp);
}
}
?
希望我的回答可以幫到您哦
原創文章,作者:NZBP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148779.html