tp中微信小程序上传怎么写

author author     2023-03-13     139

关键词:

参考技术A 第一步 先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致。
第二步 把 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="http://nicaicai.imwork.net" target="_blank">http://nicaicai.imwork.net</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="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1" target="_blank">https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1</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);


?>
希望我的回答可以帮到您哦本回答被提问者采纳

微信小程序中template里面怎么写样式

微信小程序的样式是在*.wxss文件里定义的,也可以直接在*.wxml模板文件里直接写style="XXX"跟普通html里写css一样的参考技术A 查看详情

微信小程序怎么写代码,试了几次都是错误,不会写,不知道怎么添加代

微信小程序怎么写代码,试了几次都是错误,不会写,不知道怎么添加代码,哎哎,小白一个。参考技术A多看他们提供的开发文档 查看详情

微信小程序实训的原理与内容怎么写

参考技术A1、首先要搞清楚微信小程序实训的原理与内容分别是什么。2、其次将其记录整理下来。3、最后将其如实写下来即可。 查看详情

微信小程序如何给服务器上传多张图片,微信小程序实现上传多张本地图片到服务器和图片预览...

1,前言最近在写小程序,用到了wx.uploadFile方法,发现这方法居然不支持同时上传多个文件,于是自己写了一个上传多个的方法。[图片上传失败...(image-c4d973-1610865751169)]2,需求博主做的是用户投诉页面;需... 查看详情

微信小程序默认input样式左右两行怎么写

...开系统设置-应用程序-选择默认的那个程序(这里就选择微信)-清除默认值即可。参考技术Ainput是行内替换元素,等同于块元素,块元素默认是换行的。要不换行的话给input的样式加个diaplay:inline-block(意思就是行内块) 查看详情

微信小程序代码怎么写?

参考技术A不懂代码怎么制作微信小程序首先看一下官方的干货:mp.weixin.qq/...201714指南包括小程序产品定位功能介绍,设计规范,开发入门教程,小程序数据相关分析等等一系列新手教程,接近手把手教,只要认真看总会有所感... 查看详情

怎么扒微信小程序源码

参考技术A登录微信公众平台小程序,进入开发管理,开发版本中展示已上传的代码,管理员可以扒微信小程序源码。微信号将提供给微信审核人员审核微信小程序时登录使用,测试微信号需能够体验小程序的全部功能,请勿使... 查看详情

微信小程序空格符怎么写

参考技术A\r\n用微信工具看的效果和在手机上看的距离不一样。一个汉字的距离是\r\n\r\n\r\n\r\n 参考技术B\xa0空格\n换行例:“少儿\xa0\xa0\xa0创意\n编程”显示:少儿创意编程 参考技... 查看详情

微信小程序并列行怎么设置

打开微信,搜索并找到要设置的小程序,点击打开,在主页菜单里选择并列行设置,即可完成设置。参考技术Ah5id="微信小程序里不免需要列表显示有时候需要两排或者三排并列">微信小程序里不免需要列表显示,有时... 查看详情

微信小程序怎么写显示和隐藏效果

可以把微信小程序隐藏起来。打开微信“我”的页面,然后打开“设置”2.然后点开设置,在设置页面有个“通用”3.点开通用,再点开“发现页管理”4.打开发现页管理,把“小程序”关掉5.这样再返回“发现”页面看,就看不... 查看详情

微信小程序怎么把自己的产品显示出来

...品上传成功之后即可。 参考技术B小程序如何上传产品?微信小程序怎么把自己的产品显示出来?下面跟随小编一起来看看吧!首先,你得先有一个小程序啊,这里的“有”,是指开发,如果没有开发的话,是无法实现产品展示... 查看详情

开题报告微信小程序购物选题背景怎么写

参考技术A一、研究的目的、意义与应用前景等:基于微信小程序的商城平台的目的:随着信息时代的发展,用户的消费水平也在不断的上升,传统超市以及电子商务在线上推广和购物体验等方面也到了一个瓶颈期。淘宝、京东... 查看详情

微信小程序介绍怎么写?

...是用在哪里。小程序简介主要在以下2个场景中呈现:1、微信“搜索小程序”时在小程序列表展现小程序名称与简介2、用户在进入小程序后,选择“...”并点击小程序头像,呈现小程序相关资料包括简介与账号主体针对以上场景... 查看详情

微信小程序修改多维数组里面的值键要怎么写'

参考技术A1、首先你要确定数组的类型(比如整型数组、字符串数组、字节数组等类型)2、其次你要能访问到数组元素,即:明确访问数组元素的方法。3、按照1和2中确认的类型和方法来对数组元素的值进行修改!本回答被提问... 查看详情

微信小程序,通过摇一摇实现大转盘抽奖的效果代码怎么写?

...自己写会存在很多问题,会出现bug的参考技术A有很多的微信抽奖小程序啊,摇一摇之类的软件。自己写使用很麻烦,而且需要域名服务器,要对接公众号什么的很麻烦,成本也很高。我现在用的大转盘抽奖小程序叫趣推邦,用... 查看详情

微信制作跨年代码小程序怎么弄

参考技术A1.首先,需要先安装微信开发者工具,可以从微信官网下载。2.然后,在微信开发者工具中创建一个新的小程序项目,并选择“跨年代”模板。3.接下来,编写跨年代小程序的代码,在微信开发者工具中可以使用WXML和WXSS... 查看详情

微信小程序字体怎么换行?

参考技术A文本后面直接写\n\t 参考技术B微信小程序就开放了吗追问现在应该还在公测吧追答那你怎么有这个追问咱俩整反了吧,怎么成我回答你的问题了?!!,我这个是小程序提供的开发者工具,开放的,你也可以试试... 查看详情

微信小程序拍照和上传图片实现

参考技术A将图片上传到后台服务器的写法 查看详情