目录
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件,遇到问题ecshop
首页 php教程 php手册 分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件,遇到问题ecshop

分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件,遇到问题ecshop

Jun 13, 2016 am 08:55 AM
ecshop 微信支付 扫码支付

分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件,遇到问题ecshop

最近比较工作比较轻松,帮一个朋友的基于ecshop开发的商城加入微信扫描支付功能,本以为是很简单的事儿——下载官方sdk或开发帮助文档,按着里面的做就ok了,谁知折腾了两三天的时间才算搞定,中间也带着疑问在网上找了不少技术文章,却发现都只是比较粗略的写他们是怎么开发接入的,并没有解决我遇到的问题...,唉,有时候真心的感觉‘只能靠自己'。

本文就是想把自己遇到的问题及解决办法写出来,让做这方面开发的朋友有所帮助!

  开发之前,先查看官方【扫码支付】开发文档,扫码支付分为以下两种模式:

  △模式一:

  遇到的问题:第一次扫描二维码还能正常扫描,未付款再次扫描会提示:ok 或 请求商户信息超时HttpCode非200——此问题尝试通过各种途径寻找解决办法都无果,在这里希望有知道朋友能给与解答,谢谢!

  △模式二:

  注意:不可以直接用商城的订单号作为交易订单号(out_trade_no),否则再次生成微信扫码支付二维码时,接口会提示:商户订单号重复,无法重新生成。

  那么酱紫问题来了,应该怎样设置交易订单号,还能保证后面通过接口查询微信商户平台里的相应订单信息或实现对账?可行的办法是:扫码之前的统一下单接口,out_trade_no不要传入商城订单系统的订单号,而是重新生成一个新的唯一流水;再增加一个订单号和微信支付交易订单号(out_trade_no)对应表,如下:

     上表中有个serial_is_paid字段:用于标记此交易是否已完成,即:在支付成功通知回调处理中,根据回传的out_trade_no更新支付状态;至于怎么查询订单支付状态,想必你应该也知道了...

    

  好了,很久没写技术博客有些找不到感觉,写的可能比较粗略,有不清楚的朋友可以留意&交流!

到处都是坑的微信支付V3之 微信支付回调页面

据上次 到处都是坑的微信支付V3 后很多园友在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程。

1. html中根据前台支付后反馈信息成功与否跳转到相关页面

if (res.err_msg == "get_brand_wcpay_request:ok") {
   // message: "微信支付成功!",
   window.location.replace("@Url.Content("~/WxPay/Success?ordercode=@(Model.order_no)"));
}else if (res.err_msg == "get_brand_wcpay_request:cancel") { 
  // message: "已取消微信支付!"
 }
登录后复制

2. 支付开发教程(微信商户平台版) 中下载 微信支付接口文档及demo(公众账号).zip

返回的参数参考接口文档中 4.2.通用通知接口 一节。

通知 URL是 4.1 节中提交的参数 notify_url ,支付完成后,微信 会把相关和用户信息发送到该URL,商户需要接收处理信息。

//支付回调页面
    public ActionResult notice_url()
    {
      string resultFromWx = getPostStr();
      //设置支付参数
      RequestHandler paySignReqHandler = new RequestHandler(null);
      WriteLog(" 微支付notice resultFromWx=" + resultFromWx);
      var res = XDocument.Parse(resultFromWx);
      //通信成功
      if (res.Element("xml").Element("return_code").Value == "SUCCESS")
      {
        if (res.Element("xml").Element("result_code").Value == "SUCCESS")
        {
          //交易成功
          paySignReqHandler.SetParameter("return_code", "SUCCESS");
          paySignReqHandler.SetParameter("return_msg", "OK");
          string ordecode = res.Element("xml").Element("out_trade_no").Value;
          BLL.orders Bll = new BLL.orders();
          try
          {
            if (Bll.Update(ordecode ))
            {
             WriteLog(" 微支付交易成功=" + ordecode);
            }
            else
            {
             WriteLog(" 微支付交易失败=" + ordecode);
            }
          }
          catch (Exception ex)
          {
            WriteLog(ex," 微支付交易异常=" + ordecode);
          }
        }
        else
        {
          paySignReqHandler.SetParameter("return_code", "FAIL");
          paySignReqHandler.SetParameter("return_msg", "交易失败");
        }
      }
      else
      {
        paySignReqHandler.SetParameter("return_code", "FAIL");
        paySignReqHandler.SetParameter("return_msg", "签名失败");
      }
      string data = paySignReqHandler.ParseXML();
      var result = TenPayV3.Unifiedorder(data);
      WriteLog(" 微支付notice result=" + result);
      return View();
    }
登录后复制

注意:

因此接收到成功支付后需要返回代码中红色的部分来提醒微信服务器已处理,否则会不断收到微信服务器的反馈。

getPostStr()方法:

//获得Post过来的数据
    public string getPostStr()
    {
      Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
      byte[] b = new byte[intLen];
      Request.InputStream.Read(b, 0, intLen);
      return System.Text.Encoding.UTF8.GetString(b);
    }
登录后复制

 现在前后台都打通了,主要还是要耐心调试,祝君好运~

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

微信支付密码忘记了怎么找回 微信支付密码忘记了怎么找回 Feb 23, 2024 pm 09:40 PM

微信中用户可以输入支付密码来购物,那么支付密码忘记了怎么找回呢?用户们需要我的-服务-钱包-支付设置-忘记支付密码就能恢复。这篇支付密码忘记找回方法介绍就能告诉大家具体的操作方法,下面就是详细介绍,赶紧看看吧!微信使用教程微信支付密码忘记了怎么找回答:我的-服务-钱包-支付设置-忘记支付密码具体方法:1、首先点击我的。2、点击里面的服务。3、点击里面的钱包。4、找到支付设置。5、点击忘记支付密码。6、输入自己的信息验证。7、然后输入新的支付密码就可以更改了。

微信支付密码忘记了怎么办 微信支付密码忘记了怎么办 Jan 08, 2024 pm 05:02 PM

微信支付密码忘记了的解决办法:1、打开微信APP,点击右下角的”我“,进入个人中心页面;2、在个人中心页面中,点击“支付”,进入支付页面;3、在支付页面中,点击右上角的“…”,进入支付管理页面;4、在支付管理页面中,找到并点击“忘记支付密码”;5、按照页面提示,输入个人信息进行身份验证,验证成功后,可以选择“刷脸找回”或“验证银行卡信息找回”的方式来找回密码等等。

美团外卖怎么设置微信支付 设置微信付款的方法 美团外卖怎么设置微信支付 设置微信付款的方法 Mar 12, 2024 pm 10:34 PM

  美团外卖app软件内提供的美食小吃店铺非常多,而且所有的手机用户都是通过账号登录的。添加个人的收货地址以及联系电话,享受最便捷的外卖服务。打开软件首页,即可输入商品关键词,在线搜索就能找到相对应的商品结果,上下滑动选购下单即可,平台也会根据用户提供的配送地址,推荐周边附近数十家好评超高的店铺,还能设置不同的支付方式,一键下单完成订单即可,骑手第一时间安排配送速度非常快,还有不同金额的外卖红包领取使用,现在小编在线详细为美团外卖用户们带来设置微信付款的方法。  1选择好商品后,提交订单,点击立

微信支付扣款顺序怎么设置 微信支付扣款顺序怎么设置 Sep 06, 2023 am 11:11 AM

微信支付扣款顺序设置步骤:1、打开微信APP,点击“我”界面,点击“服务”,再点击“收付款”;2、点击收付款界面付款码下方的“优先使用此付款方式”;3、选择自己需要的优先支付方式即可。

闲鱼可以用微信支付吗  改成微信付款的方法 闲鱼可以用微信支付吗 改成微信付款的方法 Mar 12, 2024 pm 12:19 PM

  大家没事的时候,都是会选择逛逛闲鱼这一平台的,大家都能够发现这一平台上,是有着大量的一些商品的存在,都能够让大家看到各种各样的的一些二手的宝贝,虽然是二手的产品,但是这一些产品的质量,绝对都是没有任何的问题,所以大家都能够放心的选购,价格都是特别的实惠,都还是能让大家面对面的与这一些卖家们进行交流沟通,进行一些讲价的操作,完全都是可以的,只要大家谈的妥当的话,那么你们就能够选择进行交易,且大家在这里付款的时候,想要进行微信付款,但是好像平台上是不允许,具体情况如何,跟着小编一起来看看吧。闲鱼

阿里巴巴怎么用微信付款_阿里巴巴1688用微信支付方法 阿里巴巴怎么用微信付款_阿里巴巴1688用微信支付方法 Mar 20, 2024 pm 05:51 PM

阿里巴巴1688是采购批发网,里面的东西要比淘宝便宜很多。那么阿里巴巴怎么用微信付款呢?小编整理了一些相关内容分享给大家,有需要的朋友可以来看看哦。阿里巴巴怎么用微信付款答案:暂不能使用微信付款;1、我们在购买商品的页面中我们点击其中的【更换支付方式】2、然后在弹出的页面中我们可以到只有【支付宝、分阶段付款、收银台】可以选择;

微信支付申请退款的步骤分享 微信支付申请退款的步骤分享 Mar 25, 2024 pm 06:31 PM

1、首先我们需要打开手机上的微信APP,然后点击登录微信账号,这样就进入了微信的首页。2、在微信首页点击右下角的【我】按钮,再选择【支付】选项,我们点击进入支付页面。3、进入【支付】页面后点击【钱包】选项进入,在【钱包】页面点击右上角的【账单】。

微信支付成功后能马上取消吗 微信支付成功后能马上取消吗 Nov 29, 2023 pm 02:19 PM

微信支付成功后不能马上取消。退款通常需要满足以下条件:1、商户的退款政策,商户会制定自己的退款政策,包括退款的时间窗口、退款金额和退款方式等;2、支付时间,退款通常需要在一定的时间范围内进行申请,超过该时间范围可能无法退款;3、商品或服务状态,如果用户已经收到了商品或享受了服务,商户可能会要求用户将商品退回或提供相应的证明;4、退款流程等等。

See all articles