Posts tagged with “wechat”

A tricky issue about [getImageInfo:fail image not found] painter component for WeChat Miniprogram

I heard my colleague Joe met a tricky bug this morning and he has no idea about it. After a brief google, I found it's a rather famous one. So many people met this issue and most of them haven't got an answer.

So I dug it deeper and found a clue that locates at https://developers.weixin.qq.com/community/develop/doc/0000c6d4b6c2d0cb128a1c0475b000?_at=1566630830developers.weixin.qq.com

and eventually, I found my solution. I shared it at https://developers.weixin.qq.com/community/develop/doc/000ac29db444e0b922c6caee759c00

PS: there's a common phenomenon among developers in China. Someone asks a question, and many people replyed they have met the same issue. But, no answers. I don't think all of them haven't found out their answer. People are interested in asking questions but have less interest to answer, even they finally got a valuable answer. It's a shame. I won't be that kind of person.

微信浏览器内H5活动页调起小程序, 服务器端开发备忘

  1. 公众平台设置H5静态页服务器IP白名单

  2. 上传验证文件到根目录(一定要先做好这一步才能做下一步啊

  3. 公众平台设置域名白名单

  4. 服务器端配置公众平台 appId, appSecret

  5. 缓存针对此appId的 accessToken 和 jsapi_ticket

  6. 服务器端生成签名.....参数一定要按字典序!(坑)

Superpay 小程序支付后端接口对接记

这两天在和开发小程序的同事对接supay支付,今天总算基本搞完了。他们的文档过于糟糕,太多槽要吐,记录一下也许会帮到其他也需要对接superpay的人。先说说我们的业务流程

  1. 小程序 wx.login 拿到 code
  2. 小程序 wx.getUserInfo 拿到加密的 userData和iv
  3. 小程序登录请求公司后端服务器 /wechatMiniProgram/login 接口三方登录,登录成功拿到可访问公司其他接口的 accessToken
  4. 小程序拿着accessToken下订单
  5. 小程序拿着订单id请求公司后端服务器 /supay/wechatMiniProgramPay/{orderId}
  6. 公司服务器请求 supay 小程序下单接口,获取pay_info 给小程序。故事主要发生在这里。

他们的文档里是有一个流程图的,写成文本大体是下面这样。

  1. 小程序向公司后台服务器发起下单支付请求
  2. 公司后台服务器请求 superpay 服务器获取 openid
  3. superpay 服务器返回 openid 给公司后台服务器
  4. 公司后台服务器拿着openid 请求superpay服务器(小程序下单接口)拿 pay_info
  5. 公司服务器把 pay_info 返回给小程序
  6. 小程序拿 pay_info 发起支付

这个流程图事后看其实也不算错,只是其中第2步和第3步是不必要的。因为小程序在三方登录的时候,我们已经可以拿到openid和unionid。补充一句,小程序支付只需要openid,并不需要unionid。

在和superpay的技术同事沟通过程中,我发现最有价值的聊天记录包括

不要管其他的接口了,就用小程序下单
交易状态 TRADE_FINISHED 不需要处理
小程序下单返回的接口数据中,所有时间均是北京时间
inner_trade_no是 supay 的单号,mch_order_no和outer_trade_no 是你们的单号
trade_amount是人民币金额,虽然例子里写的是纽币
签名的时候字典序是重要的,文档里虽然没有提到,但在签名串字典序末尾追加一个 &key=商户appsecret 再md5是至关重要的。

因为签名需要拼一个query string格式的串,我就想当然的认为是post这个串到supay服务器。这是我的错,这里要以例子为准。例子里写的就是post一个json格式的数据过去。

10.07.2020 补充一个吐槽,小程序返回的 trade_amount 单位并不是人民币,是纽币。而且小程序各接口没有一个能返回人民币实际支付额。我的解决办法是拿自己的订单号调用 superpay 给非小程序支付的查询交易详情接口,这样就能拿到人民币交易金额数据。