echshop 微信扫码支付 遇到的问题
参考的网站
(转)http://www.ecshop119.com/ecshopjc-937.html
(转)http://www.6gdown.com/softedupage/58929.html 下面有源码的下载地址
记录下遇到的问题,上面两个url里面有配置和源码了
1.支付成功后的怎么接收微信服务器给发的信息和怎么回复微信服务器,开始弄的时候不知道微信返回的什么,然后我微信返回的都写到了一个log文件查看的, 还有给微信返回的,开返回的SUCCESS不行,返回那段xml就行了。
// 获取微信通知接口postData信息
$resp = $GLOBALS['HTTP_RAW_POST_DATA']; //接收到的是一个xml
$obj = simplexml_load_string($resp, 'SimpleXMLElement', LIBXML_NOCDATA); //把xml转成对象
if($obj instanceof SimpleXMLElement) {
$packet['return_code']=strval($obj->return_code);
$packet['openid']=strval($obj->openid);
$packet['result_code']=strval($obj->result_code);
$packet['attach']=strval($obj->attach);
$packet['out_trade_no']=strval($obj->out_trade_no);
$packet['total_fee']=strval($obj->total_fee); $xml='<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>'; }else{ // $xml='<xml><return_code>FAIL</return_code><return_msg>is error</return_msg></xml>';
}
$content = ""; if($packet['return_code']=='SUCCESS' && $packet['result_code']=='SUCCESS')
{
echo $xml;
$content .="xml".$xml;
$order_sn = str_replace($packet['attach'], '', $packet['out_trade_no']); //获取到订单id
$order_sn = trim($order_sn);//此$order_sn有可能为log_id或pay_pici_no,合并付款时,order_sn=$pay_pici_no
$content .= "order_sn".$order_sn;
/* 改变订单状态 */
order_paid($order_sn, 2); } $content .= "obj=".var_export($packet,TRUE);
$file = "log/".date('Y-m-d')."log.txt";//要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个
$f = file_put_contents($file, $content,FILE_APPEND); exit;
2.扫码后页面怎么自动跳转,因为威信支付是异步的,支付完不会返回商家的页面,我这里用了一个笨的方法,让那个扫码页面不停访问后台查询订单的状态,订单状态变成支付成功了,就跳转
{literal}
<script>
//设置每隔1000毫秒执行一次load() 方法
var myIntval=setInterval(function(){load()},1000);
function load(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
trade_state=xmlhttp.responseText;
if(trade_state == 'SUCCESS'){ //支付成功
location.href='./wxpay_success.php';
}else if(trade_state=='PAYERROR'){
// document.getElementById("myDiv").innerHTML='支付失败';
clearInterval(myIntval);
}
}
}
//orderquery.php 文件返回订单状态,通过订单状态确定支付状态
xmlhttp.open("POST","native_notify.php",true);
//下面这句话必须有
//把标签/值对添加到要发送的头文件。
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("order_sn="+{$order.order_sn}); //order_sn订单号
}
</script>
{literal}
后台
//获取订单号
$ordersn = $_POST['order_sn']; $pay_status=get_goods_pay_status($ordersn); //查询订单状态
if($pay_status == '2'){
echo "SUCCESS";
exit;
}
echshop 微信扫码支付 遇到的问题的更多相关文章
- MVC 微信扫码支付
微信扫码支付有两种模式, 模式一和模式二, 两者具体的区别可参考官网文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 微 ...
- C# 微信扫码支付 回调页面
.NET版 微信扫码支付,官方推荐使用[模式二] 一.微信扫码支付模式一: 1.回调页面:官方demo中example文件下的NativeNotifyPage.aspx 2.微信回调地址:http:/ ...
- C# 微信扫码支付API (微信扫码支付模式二)
一.SDK下载地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1,下载.NET C#版本: 二.微信相关设置:(微信扫码 ...
- Net MVC微信扫码支付
微信扫码支付+Asp.Net MVC 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下. 一.准备工作 使用的微信API中的统一下单方法,关键的 ...
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- php微信扫码支付
一 概述 扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信"扫一扫"完成支付的模式.该模式适用于PC网站支付.实体店单品或订单支付.媒体广告支付等场景.前几天公司需要做 ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇
这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...
- 【转载】ASP.NET Core Web 支付功能接入 微信-扫码支付篇
转自:http://www.cnblogs.com/essenroc/p/8630730.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步 ...
- Thinkphp5整合微信扫码支付开发实例
ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...
随机推荐
- MySQL的安装——源码方式(实验环境下测试用,真实环境请忽略此文)
#虚拟机是最初的的系统,我们在虚拟机里安装scp [root@serv01 ~]# yum install /usr/bin/scp -y #安装过程略 #我们拷贝MySQL的源码包到目标机的/roo ...
- UART与USART的差别
UART与USART都是单片机上的串口通信,他们之间的差别例如以下: 首先从名字上看: UART:universal asynchronous receiver and transmitter通用异步 ...
- js 如何将无限级分类展示出来
这个需要运用递归. 案例:将数据以 ul li ul li形式展现在div中. <div id="div"></div> 数据格式为json: var da ...
- There is no Action mapped for namespace [/pages/action/student] and action name [findStudent]
1.错误描写叙述 2014-7-13 2:38:54 org.apache.jasper.compiler.TldLocationsCache tldScanJar 信息: At least one ...
- W5500问题集锦(二)
attachment_id=5620" rel="attachment wp-att-5620" style="margin:0px; padding:0px; ...
- 使用Unison同步服务器目录
一.Unison简介Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系 ...
- J2EE的13个规范之(三) Servlet简单介绍
Servlet是一种server端脚本,它是一个特殊的Java类,继承自HttpServlet.开发中主要用于处理和响应client的请求. Servlet在容器中执行,事实上例的和销毁创建由容器进行 ...
- Redis 和 Memcached 的区别
来源:标点符 链接:http://www.biaodianfu.com/redis-vs-memcached.html Redis 的作者 Salvatore Sanfilippo 曾经对这两种基于内 ...
- 列式存储 V.S. 行式存储
列式数据库 http://zh.wikipedia.org/wiki/%E5%88%97%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93 列式存储与行式存储 http://my ...
- aggregation 详解2(metrics aggregations)
概述 权值聚合类型从需要聚合的文档中取一个值(value)来计算文档的相应权值(比如该值在这些文档中的max.sum等). 用于计算的值(value)可以是文档的字段(field),也可以是脚本(sc ...