php对接微信小程序获取openid

1、首先需要注册一个自己的微信小程序地址:https://mp.weixin.qq.com/
2、或取自己微信小程序中的appid ,secret

将appid,secret放入自己的配置文件,不要直接写到程序中,作为单一获取源方便程序后期更换appid和secret,如tp可设置在config.php文件中。

'WeChat'=>[
	'appid'=>'xxxxxxxxxxxxxxxx',
	'secret'=>'xxxxxxxxxxxxxxxxxxxxxxxx',
],

小程序需要由前端发送code,作为后端直接获取前端发送的参数即可。

	$code = input('code'); 
	$WeChat = config('WeChat');
	$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$WeChat['appid'].'&secret='.$WeChat['secret'].'&js_code=' . $code . '&grant_type=authorization_code';
	$info = file_get_contents($url);//该函数用作发送get请求
	$data=json_decode($info,true);
	var_dump($data);exit;
### 实现微信小程序中的微信支付 #### 环境准备 为了能够顺利集成微信支付到微信小程序中,首先需要注册一个微信小程序账号[^1]。这一步骤至关重要,因为只有拥有合法的小程序账号才能进一步获取必要的API权限和其他资源。 #### 准备工作 在着手技术实现之前,还需要完成一系列准备工作: - **申请材料**:准备好营业执照副本复印件、法人身份证正反面照片以及银行开户许可证等文件用于提交审核。 - **费用**:确认是否满足免手续费条件或是知晓具体的交易费率标准。 - **申请流程**:按照官方指引填写相关信息并上传所需资料来发起商户平台入驻请求[^2]。 #### 技术实现 ##### 用户登录 确保用户已通过`wx.login()`方法获得临时登录凭证code,并以此换取session_key与openid作为后续调用微信接口的身份验证依据。 ```javascript // 获取用户的登录状态 wx.login({ success(res) { if (res.code) { // 发送 res.code 到后台服务器交换 openId 和 sessionKey ... } else { console.log('登录失败!' + res.errMsg); } } }); ``` ##### 订单创建 当用户确认购买商品后,在服务端生成预支付订单号(prepay_id),此过程涉及向WeChat Pay API发送HTTP POST请求携带必要参数如总金额、描述信息等。 ```php <?php $data = [ 'appid' => APPID, 'mch_id' => MCH_ID, 'nonce_str' => md5(time()), 'body' => "Test", 'out_trade_no' => date("YmdHis").rand(1000,9999), 'total_fee' => 1, // 单位为分 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => NOTIFY_URL, 'trade_type' => 'JSAPI', ]; ?> ``` ##### 调起支付 前端接收到由后端返回的数据包之后,利用`wx.requestPayment()`函数触发客户端侧的实际付款动作。 ```javascript const payInfo = { /* ... */ }; // 来自于服务器响应体内的json对象 wx.requestPayment({ timeStamp: payInfo.timeStamp, nonceStr: payInfo.nonceStr, package: `prepay_id=${payInfo.prepay_id}`, signType: 'MD5', paySign: payInfo.paySign, success() {}, fail(e) {} }) ``` ##### 支付结果查询 最后可以通过轮询的方式定期询问支付状态直至得到最终的结果反馈;也可以设置回调地址接收异步通知消息以便及时更新数据库记录。 ```bash curl https://api.mch.weixin.qq.com/pay/orderquery \ -d "<xml> <appid>wxd930ea5d5a258f4f</appid> <mch_id>10000100</mch_id> <out_trade_no>1409811653</out_trade_no> <nonce_str>e7c2eefb4d30fdbcfac8dcdb45bdfdec</nonce_str> <sign>BACD6CCEBECFDEEFAAEBDBDFCAABDDDA</sign> </xml>" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值