当前位置: 首页 > news >正文

think php框架接入微信支付中需要注意的问题(php 小白适用)

接触php也有一段时间了,感觉有越来越多的地方需要学习,最近接入了微信扫码支付(pc端),记录一下,让php刚入门的小白们少走弯路。

准备阶段,到“微信公众平台”注册微信公众号,具体注册就不说了,有了微信公众号后,就能得到AppID,APPSECRET(注意保存,微信现在不会存贮了,要自己记下来),再有就是申请微信支付,要到 “微信商户平台”,要提交各种材料,包括营业执照注册号,影印件

等各种材料,审核通过后,大体准备就已经完成了。

首先:要有appID,APPSECRET和商户平台中的商户号,支付秘钥,其中前两个在微信公众平台中,后两个在商户平台中,账号中心中就能查看。

支付秘钥在api安全中可以配置。

 

在商户平台中也有开发文档可以参考,pc扫码支付有两种模式,模式一,模式二,推荐使用模式二(比模式一简单),下载微信支付的插件加入到自己的项目中下,下面是微信支付的demo

在WxPayConfig中配置

 

demo中都有例子,可以自己对照参考。

还有就是回调的问题,在发起微信支付的时候,在设置的众多参数中就有回调地址,在支付成功后会调用回调,再回调中我们可以进行自己的逻辑,比如修改数据库中的订单信息。

 

下面是回调的例子,可以参考 ,  红色的部分,原先用post取值,怎么都不行,百度了很久才发现用这个

  public function wx_notify_url(){

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$values = \WxPayResults::Init( $this->wxpay_config,$xml);
$result_code=$values['result_code']; //状态
if($result_code=='SUCCESS'){ //数据库操作
//处理数据库操作 例如修改订单状态 给账户充值等等
$out_trade_no = $values['out_trade_no'];
$transaction_id = $values['transaction_id'];
$o_data = array(
'pay_type' => 'wxpay',
'trade_no' => $transaction_id,
'pay_time' => time(),
'order_status' => 1,
'pay_status' => 1
);
M("Order")->where("name = '%s'",$out_trade_no)->save($o_data);
header('Location: http://shop.wfcmw.cn/User/order.html');
// 返回给微信的响应参数
$arr = array(
'return_code' => 'SUCCESS', 'return_msg' => 'OK'
);
arrayToXml($arr);

}else{ //失败
// 返回给微信的响应参数
$arr = array(
'return_code' => 'FAIL', '' => $values['return_msg']
);
echo arrayToXml($arr);
}
}

另外,在商户中心中要配置回调地址,回调要外网能访问,不能带有参数

另外在微信公众平台中,也有一个绑定的授权地址,在“公众号设置”-“功能设置”中,授权回调域名,将上面的MP.............tex文件上传到服务器上,填上回调域名,点击确定就行了。

另外,还有个问题,就是页面生成付款二维码,扫码付款成功后,pc上是不会有变化的,要想弹出页面或者跳转页面啥的,可以在页面写一个轮询,调用api列表,查询订单是否支付成功,成功就跳转页面。

其实我感觉在回调中跳转也行,但是不知道为什么没有跳转。。。。。。。

 

 
 

 

 

 

 


转载于:https://www.cnblogs.com/andzhang/p/8276217.html

相关文章:

  • 第一章
  • 分布式文件系统FastDFS如何做到高可用
  • Vmware Workstation及Centos6.8 的安装
  • Android系统shell中的clear命令实现【转】
  • 剑指offer15
  • iOS开发_记录调用系统应用
  • JavaScript异步流程控制的前世今生
  • 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)...
  • 泛型的应用
  • 生成字符Banner
  • 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
  • tomcat 和 数据库的连接
  • 使用laravel构建spa
  • MyBatis 缓存机制深度解剖 / 自定义二级缓存
  • weex打包android apk采坑之旅(windows)
  • 2017届校招提前批面试回顾
  • Android 架构优化~MVP 架构改造
  • Computed property XXX was assigned to but it has no setter
  • ES2017异步函数现已正式可用
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript新鲜事·第5期
  • Java教程_软件开发基础
  • leetcode46 Permutation 排列组合
  • leetcode98. Validate Binary Search Tree
  • Mysql5.6主从复制
  • Objective-C 中关联引用的概念
  • Webpack 4x 之路 ( 四 )
  • 初识MongoDB分片
  • 浮现式设计
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 利用jquery编写加法运算验证码
  • 两列自适应布局方案整理
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 你不可错过的前端面试题(一)
  • 判断客户端类型,Android,iOS,PC
  • 使用parted解决大于2T的磁盘分区
  • 数据可视化之 Sankey 桑基图的实现
  • 小而合理的前端理论:rscss和rsjs
  • 再谈express与koa的对比
  • Java数据解析之JSON
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (分类)KNN算法- 参数调优
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (新)网络工程师考点串讲与真题详解
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转)项目管理杂谈-我所期望的新人
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET DataGridView数据绑定说明