• php 调用微信虚拟支付


    摘要:小游戏对接微信虚拟支付,需要自己的后台调用微信的虚拟支付接口,微信的文档实在烂,总结走过的坑。

    1、报错{errcode:90007,errmsg:invalid openid}

    无效的openid

    遇到的这种情况并非是openid出错或者无效,而是在调用虚拟支付的接口时,如,查询余额的接口,[查询余额]:https://api.weixin.qq.com/cgi-bin/midas/sandbox/getbalance?accesstoken=ACCESSTOKEN

    这里需要注意的地方是调用此接口是,access_token必须跟着url后面,其他参数则是正常的post参数提交。

    在调用此接口需要传递的参数里需要特别注意的参数有三个:

    a、 access_token

    accesstoken 只需要注意它的过期时间的7200s,刷新后老的accesstoken 会在五分钟内失效

    b. sig

    sig 这个参数计算时,需要注意的就是,根据不同的URI生成sig,如 查询接口,生成sig时,需要的URI是 /cgi-bin/midas/getbalance, 扣除金币生成sig时,需要的URI是/cgi-bin/midas/pay

    c.mpsig mpsig 这个参数计算时,需要注意的就是生成它时,需要获取openid时,一块带来的sessionkey,这个需要特别注意,因为sessionkey,容易过期,且可能含有特殊符号,传递过程中可能导致特殊符号的丢失。 可以使用

    `` rawurlencode(sessionkey) //对sessionkey进行编码

    rawurldecode(urlencode(urldecode(session_key))); //解码 `` 这样来说,相对比较保险。

    2、调用扣除游戏币接口 报错{errcode:90009,errmsg:mp_sig error}

    mp_sig 签名错误

    在调用这个接口时需要特别注意,在生成sig 和 mpsig 签名时需要额外加入的参数里有billno和amt这两个参数,这点是在文档里没有提及的。

  • 相关阅读:
    【模式分解】无损连接&保持函数依赖
    【范式与函数依赖】3NF与BCNF的区别
    C#设置按钮三态背景图片
    C#代码设置窗体和Panel的位置大小
    C#窗体嵌套
    C#中弹出新窗口
    C#定义委托函数实现在别的窗体中操作主窗体中的SerialPort控件
    C#界面设计疑问2:panel摆放问题
    C#拖动自己的定义标题栏(panel)以及实现窗体拖动关闭和最小化
    C#界面设计疑问
  • 原文地址:https://www.cnblogs.com/xiaoshudian/p/10317625.html
Copyright © 2020-2023  润新知