精华内容
下载资源
问答
  •  微信支付,apache-commons InputStream input = request.getInputStream(); String content = IOUtils.toString(input); Map<String, String> params = WXPayUtil.xmlToMap(content);   回调...

     

        微信支付,apache-commons

    InputStream input = request.getInputStream();
    String content = IOUtils.toString(input);
    Map<String, String> params = WXPayUtil.xmlToMap(content);

     

    回调地址中签名失败:isPayResultNotifySignatureValid,返回false

    但是isResponseSignatureValid,返回true

    isPayResultNotifySignatureValid方法中sign_type属性缺失时,默认选择SignType.MD5

    而之前统一下订单中,使用了默认的构造函数,useSandbox默认为false,使用是SignType.HMACSHA256;

    前后SignType不一样,导致签名失败

        public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception {
            this.config = config;
            this.notifyUrl = notifyUrl;
            this.autoReport = autoReport;
            this.useSandbox = useSandbox;
            if (useSandbox) {
                this.signType = SignType.MD5; // 沙箱环境
            }
            else {
                this.signType = SignType.HMACSHA256;
            }
            this.wxPayRequest = new WXPayRequest(config);
        }

     

    展开全文
  • 方法是用 file_get_contents("php://input"); 不建议用$GLOBALS['HTTP_RAW_POST_DATA'] ,因为php7以后已经被移除。 $GLOBALS['HTTP_RAW_POST_DATA']在未来的版本会被移除掉,官方推荐读取流。 ......
    方法是用 file_get_contents("php://input"); 
    不建议用$GLOBALS['HTTP_RAW_POST_DATA']
    ,因为php7以后已经被移除。
    $GLOBALS['HTTP_RAW_POST_DATA']在未来的版本会被移除掉,官方推荐读取流。
    也就是php://input

     

    展开全文
  • 在集成微信支付时才发现微信的开发文档果然有些坑,本文主要是记录我在区分微信支付回调问题的处理。也让遇到同样问题的小伙伴们找到处理方法。若您知道此问题的解决办法,请不要喷我,您可以选择点击关闭此浏览器...

    在集成微信支付时才发现微信的开发文档果然有些坑,本文主要是记录我在区分微信支付回调问题的处理。也让遇到同样问题的小伙伴们找到处理方法。若您知道此问题的解决办法,请不要喷我,您可以选择点击关闭此浏览器标签,谢谢。

    问题

    我所遇到的需求是APP里有两处涉及到微信支付,订单支付和充值支付,且支付完成后需要通知后台做其他操作(后台收到的支付结果通知是异步的,服务器是被动的),而微信支付的结果回调都在一个WXPayEntryActivity里面,而且此类微信官方规定的。我想要区分我的支付结果是属于订单支付还是充值支付,以便做出相应的操作,该怎么办呢?

    思路

    刚开始有些懵逼,毕竟不熟悉微信支付。所以最开始选择了用一个全局变量来保存当前的操作类型值,收到支付回调后判断此类型值,做出不同的操作。但总觉得这样做有些不妥。又想想微信这样的设计肯定不是没有考虑到这方面啊,所以就在调用微信支付SDK的地方来找方法。果不其然在PayReq里找到了这样一个方法:

    9784a0ade8da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    调起微信支付SDK的地方

    光找到传入数据的地方还不行,所有又去了回调页面WXPayEntryActivity里找接收数据的地方:

    9784a0ade8da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    WXPayEntryActivity

    阿西吧!居然没有关于接收数据的方法...

    又把PayResp拿来试试,果然功夫不负有心人:

    PayResp resp = (PayResp) baseResp;

    String payType = resp.extData;

    那这样一来就好办了呀,我就说嘛,微信这样设计肯定是考虑了这个问题的。

    代码

    还是把具体代码贴一下吧

    1.生成加密串。

    加密操作放在后台的,所以只需要传入相应的标题、本地订单号、价格给后台,后台会返给我调用微信支付SDK的相应参数,这里要注意一下,传给后台的价格必须是乘以100,比如支付价格为1元,那就得传100给后台,当然后台做处理也是可以的,还有价格不能为0,包括支付宝也是一样的。收到后台的数据如下:

    {

    "msg": 1,

    "data": {

    "appid": "wxf6a28d9fa0e4a5e7",

    "partnerid": "1482680562",

    "prepayid": "wx201711161536297ca36c8ab20902031739",

    "package": "Sign=WXPay",

    "noncestr": "cd98f00b204e9800998ecf8427e",

    "timestamp": 1510817789,

    "sign": "D1262473FD0AFD56E24E59248756666D"

    },

    }

    2.调起微信支付。

    这里是将后台返回的数据都装在了一个JavaBean里面

    public void wxPay(WxPayStringBean.DataBean bean) {

    PayReq request = new PayReq();

    IWXAPI api = mModel.wxPay();

    api.registerApp(Constants.KEY.WeChat.APP_ID);

    request.appId = bean.getAppid();

    request.partnerId = bean.getPartnerid();

    request.prepayId = bean.getPrepayid();

    request.packageValue = bean.getPackageX();

    request.nonceStr = bean.getNoncestr();

    request.timeStamp = bean.getTimestamp() + "";

    //传入一个标识,以便区分回调

    request.extData = "RechargePay";

    request.sign = bean.getSign();

    api.sendReq(request);

    }

    @Data

    public class WxPayStringBean {

    private int msg;

    private String error;

    private DataBean data;

    private int hc;

    @Data

    public static class DataBean {

    private String appid;

    private String partnerid;

    private String prepayid;

    @SerializedName("package")

    private String packageX;

    private String noncestr;

    private int timestamp;

    private String sign;

    }

    }

    在上门的wxPay方法中,可以看到传入一个参数

    request.extData = "RechargePay";

    3.在收到支付回调的页面做判断

    @Override

    public void onResp(BaseResp baseResp) {

    PayResp resp = (PayResp) baseResp;

    String payType = resp.extData;

    switch (payType) {

    case "OrderPay": //订单支付的回调

    // TODO: doSomething

    break;

    case "RechargePay": //充值支付的回调

    // TODO: doSomething

    break;

    }

    }

    End

    展开全文
  • java相关:SpringMvc微信支付回调示例代码发布于 2020-7-14|复制链接微信一直是一个比较热门的词汇,今天介绍大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在...

    java相关:SpringMvc微信支付回调示例代码

    发布于 2020-7-14|

    复制链接

    微信一直是一个比较热门的词汇,今天

    介绍大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在参数上,希望能获取xml数据,测试失败。最后使用HttpServletRequest去获取数据成功了。示例代码

    ```java

    @RequestMapping("/weixinpay/callback")

    public String callBack(HttpServletRequest request){

    InputStream is = request.getInputStream();

    String xml = StreamUtil.inputStream2String(is, "UTF-8")

    /**

    * 后面把xml转成Map根据数据作逻辑处理

    */

    }

    ```

    ```java

    /**

    * InputStream流转换成String字符串

    * @param inStream InputStream流

    * @param encoding 编码格式

    * @return String字符串

    */

    public static String inputStream2String(InputStream inStream, String encoding){

    String result = null;

    try {

    if(inStream != null){

    ByteArrayOutputStream outStream = new ByteArrayOutputStream();

    byte[] tempBytes = new byte[_buffer_size];

    int count = -1;

    while((count = inStream.read(tempBytes, 0, _buffer_size)) != -1){

    outStream.write(tempBytes, 0, count);

    }

    tempBytes = null;

    outStream.flush();

    result = new String(outStream.toByteArray(), encoding);

    }

    } catch (Exception e) {

    result = null;

    }

    return result;

    }

    ```

    展开全文
  • java相关:SpringMvc微信支付回调示例代码发布于 2020-7-14|复制链接微信一直是一个比较热门的词汇,今天介绍大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在...
  • android微信支付回调,微信登陆,分享都有回调微信支付成功后WXEntryActivity的onCreate都没有进去,咋整啊?微信登陆,分享回调都正常啊,配置是没问题的吧。用的最新的sdkimplementation'...
  • 微信支付。按照微信官网文档写的。能正常生成prepay_id给客户端,但是客户端支付成功后,微信异步回调接口一直没有接收到数据。网上查了好多原因:1、有说notify_url 地址不对的,不能带参数。这确实是一个注意的...
  • Android 微信支付回调

    2021-01-27 11:46:07
    2、有些情况下,需要在支付完成后做一些操作,因此就需要用到微信支付回调。 (1)首先在自己的包名路径+wxapi 包下创建WXPayEntryActivity类继承Activity并实现IWXAPIEventHandler。既然是Activity,
  • 支付宝支付回调问题: 1、支付宝需要传的参数中有两个为returnUrl和notifyUrl;returnUrl是同步回调,对于前后端分离的项目来说returnUrl就是你支付之后要去的前端页面的地址;notifyUrl是你支付后异步回调处理业务...
  • 微信支付回调踩坑

    2019-11-06 11:39:53
    3、关于微信支付回调,首先地址是可访问的,不带参数的url地址,接受的函数不能有错误,我部署到服务器上后用postman检测出现$GLOBALS["HTTP_RAW_POST_DATA"]报错,将$xml = $GLOBALS["HTTP_RAW_POST_D...
  • 介绍大家都知道微信支付回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在参数上,希望能获取xml数据,测试失败。最后使用HttpServletRequest去获取数据成功了。示例代码@...
  • 伪装微信支付回调通知支付安全

    万次阅读 2019-05-11 10:10:53
    1.微信支付成功后,微信会给业务服务器发送回调通知,回调内容为一系列 参数的键值对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串,然后用商户私钥对其进行签名,如MD5,并将签名撇接到字符串后...
  • 微信支付回调代码

    2020-12-10 15:03:26
    微信支付回调代码 <?php ini_set('date.timezone','Asia/Shanghai'); include_once '../config_file.php'; $postXml = $GLOBALS["HTTP_RAW_POST_DATA"]; //接受通知参数 if(empty($postXml)){ echo ('{"code":...
  • 微信支付回调问题

    2018-11-22 21:48:00
    支付时传给微信回调接口是符合回调接口要求的;给微信发的邮件回复内容:按照以下几点检查,1,检查回调url是否正确,回调url是不能带参数的,请注意。2,是否有按照文档要求正确返回参数给到微信。3,是否开启...
  • 微信支付回调效验签名

    千次阅读 2017-08-15 16:33:32
     微信支付二维码 -》通过参数生成XML 传给微信 返回给你 数据 此时(sign)签名是你定义的 , 微信效验签名 然后给你二维码  重点来了  扫码支付 成功 , 微信给回调地址内传参 此时的(SIGN )签名 是微信 自己...
  • 方法有多种,这里介绍一下其中一二 先把微信支付回调请求的数据解析出来 $postStr = file_get_contents('php://input'); //禁止引用外部xml实体 libxml_disable_entity_loader(true); $postObj = simplexml_load...
  • 微信支付回调页面

    千次阅读 2018-06-07 21:43:12
    通知 URL是 4.1 节中提交的参数 notify_url ,支付完成后,微信 会把相关和用户信息发送到该URL... //支付回调页面 public ActionResult notice_url() { string resultFromWx = getPostStr(); //设置支付参数 ...
  • 微信支付回调

    2016-07-13 16:10:32
    回调页面的格式必须是这样的,全路径,不能带参数。 http://www.xx.com/api/notify.aspx 1,回调页面是否继承了自己写的基类,如果继承了自己写的基类,基类里有身份验证之类的,微信请求自然不成功。 2,在回调...
  • 关于Yii2 微信支付回调地址处理

    千次阅读 2018-08-14 19:31:25
    今天碰到微信支付回调地址 的问题,因为公司路由是 r=A/B/C 的方式,作为微信回调的话是有参数的,会被微信过滤掉。 解决办法: nginx设置: location ~ ^/callback\d*\.php { rewrite /(.*)\....
  • 坑死人不偿命之微信支付回调

    千次阅读 2017-08-13 10:52:52
    遇到微信回调无法获取回调参数,导致重写的回调函数无法执行的问题 xml=xml = GLOBALS[‘HTTP_RAW_POST_DATA’];//无法获取参数 改成 $xml=file_get_contents(“php://input”); 就可以了 /** * * 支付结果...
  • 微信支付。按照微信官网文档写的。能正常生成prepay_id给客户端,但是客户端支付成功后,微信异步回调接口一直没有接收到数据。网上查了好多原因: 1、有说notify_url 地址不对的,不能带参数。这确实是一个注意的...
  • 那么在微信支付第三方支付服务商的支持下,大家都在力推刷脸支付,微信刷脸支付官方还给出100亿元进行市场补贴政策,并且基于AI识别技术基础上拓展了更多的商户应用,那么微信刷脸支付加盟需要具有什么条件呢?...
  • 在Koa系框架(如EggJS)中进行微信支付开发时,遇到一个问题:微信支付平台会发送一个回调请求,通知支付订单的处理结果。该请求传入的参数是xml格式,而Koa中间件koa-bodyparser对xml格式的请求参数没有做处理,这...
  • 微信支付回调地址 http https问题

    万次阅读 2019-01-14 18:01:29
    看这个帖子 ... 首先你得排除其他的问题 比如:地址错误,带参数,重定向了,内部报错这种错误就自己检查吧 ...回调不成功,地址也没问题(带参数啥啥啥的都是没有的),很正常的一个回调地址 但是就是不成功 换成ht...
  • 回调地址链接是通过【统一下单API】中提交的参数notify_url设置, 如果链接无法访问,商户将无法接收到微信通知。 通知url必须为直接可访问的url,不能携带参数。 示例:notify_url:...
  • 最近接的一个小项目,客户要求用asp写,微信公众号支付完成后回调入库,晚上加了会班,帮他写了一段asp微信公众号支付回调参数入库demo详细示例 sub AddData() '当本接口网络出现问题或无法返回success字符时,...
  • 今天同事做微信支付时候,回调地址传了一个jersey的接口,当微信回调的时候,总是取不到它的xml信息,很恼火,然后注意到控制台里边微信访问的Context-Type是text/xml格式的,对于text/xml格式应该怎么去接收他的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 537
精华内容 214
关键字:

微信支付回调参数