微信SDK支付的那些坑

最近做支付,我的坑啊,我就想说一句话:你不做微信支付,就不知道自己的才疏智浅!人家就说,文档在这,自己看,自己做,哪块不清楚,哪块有问题,自己搞;我也总算是出来了!!!记在这里希望对您有所帮助

总述

在做微信支付的时候,如果你没有使用官方给的SDK,那进坑的几率还是比较小,有坑也是自己种的,上几次做的时候就是自己做签名,自己发送请求,沙箱种没有出问题;这次有点懒,索性用了官方给的SDK,的确,如果这些坑你都知道,那么接入的速度很快,但是如果是盲目的,那么恭喜你,大部分情况下都会被微信支付装进去的。我建议大家在做微信支付的时候先去调通正式的环境,再去调试沙箱环境。总的支付逻辑我在思否上有提问,在这里也详细说明一下;

网上对微信支付感觉不太友好,难道微信支付就没有他的优点吗?至少我就发现了这点,支付宝支付的时候,各种场景需要我们自己去创造,而且不一定百分百的重现,有没有这种感觉?别说没有,如果没有说明你没有做过支付,但是微信的沙盒就提供了各种常见的场景,只要输入场景对应的的金额,那么该场景就会出现,避免我们去创造那些在平常很难把控的场景,这点上我给微信一个大大的赞!

业务处理逻辑以及解释

现在我把刷卡支付整个支付逻辑梳理一下:

  1. 项目启动,客户端发起创建订单请求,服务器响应创建订单;
  2. 客户端发起支付请求,服务端开始处理支付请求;
    • 服务端拼装支付参数:
      • 如果是沙箱环境,那么参数sign的生成需要沙箱的API密钥,获取沙箱密钥:请求https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey获取沙箱的API密钥,这个密钥就是用来在沙箱环境下替换商户中设置的API密钥,这一点在官方文档中并没有明确的说明。
      • 如果是正式环境,那么直接使用在商户平台上(账户中心→API安全→设置密钥)设置的API密钥即可。
    • 使用获取到API密钥和前面的参数生成签名,具体的生成签名的规则可以在官网文档看到,可以在这个官网文档验证你的签名的正确性;
    • 说明:有的盆友不知道为什么要这样,为什么请求这个什么沙箱密钥。曾经也被问道,所以研究了这个支付系统之后给出了我的理解。如下图所示,微信的支付系统是由一个Nginx服务器对我们的请求地址进行路由,进而把所有的沙箱请求全部路由到仿真测试系统中,实现了测试系统和线上的生产环境系统的分离。然而就是这个分离,就是我们需要请求一个沙箱API密钥的根源。由签名的算法可以看出来,这个API密钥的本质其实就是我们经常说的加密中的加盐中的,当然了MD5也好,SHA256也好都是散列算法,不是真正意义上的加密。这个盐是在商户平台上设置的,那么在沙箱系统中为了良好的保密性,不需要使用线上的真正的API密钥,从而换成了另一套API密钥,即这两个系统是两套独立的系统,不同的是,这套沙箱的API密钥①需要发送请求沙箱得到,而不是自己设置的;②需要使用线上的API密钥换取这个沙箱API密钥(获取沙箱API密钥需要线上API密钥对请求参数做签名处理)
      微信支付仿真测试系统
  3. 开始支付请求,坑的位置,如果你把沙箱支付和正式支付做到一块,那么这块就绝对是一个坑,如果想跳过这个坑,直接调用wxPay的requestWithoutCert,根据沙箱和正式传入不同的请求地址即可。
    • 这里又得絮叨几句了,我在这里栽了个大跟头。因为之前是这么做的,自己填充参数,什么app_id, mch_id, total_fee等等最后根据环境生成签名sign,添加到参数Map中(可查看思否中的代码),最后调用SDK的支付wxPay.microPay(reqData),这个时候报错: 沙箱验证签名失败,请确认沙箱签名key是否正确(通过getsignkey调用生成),我真的是纳了闷了,签名我验证了十多次,每次在页面生成的sign和代码生成的sign都一致,也就是说签名是没问题的,然而却偏偏给我报错:签名失败。搞了我好长时间,最后忍不住去看了SDK的源码,千哪,里面直接使用API密钥再来一次加密,在生成一个sign,最终生成一个二次加密结果的sign,这能成功吗??成功就怪了!!!其实只要自己调用requestWithoutCser方法那么久可以解决这个问题。翻遍SDK的用法,没有说明用法,而是让用户自己猜怎么用,这个SDK的漏洞真的是好让人尴尬。当然了,正确的使用方法就是仍然使用官方SDK的前提下,自定义配置接口(com.github.wxpay.sdk.WXPayConfig),按照沙盒/线上环境返回对应的API密钥即可。
  4. 其他地方就没有什么坑了,但是也是有一些注意点的,我记录了下面几个,后面如果有就继续更新吧。
    • INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified. 这个错误呢,就是说你的参数key中有空格,去掉就OK了!
    • {return_code=FAIL, retmsg=请确认请求参数是否正确total_fee, retcode=1},这个错误没有记录,忘记了应该还是参数的问题
    • 沙箱被扫支付金额(x)无效,请检查需要验证的case。在微信的沙盒中只能输入几个固定的订单金额,而且每个订单金额的背后是一个场景。
    • java.net.SocketException: Connection reset或者java.net.SocketException: Unexpected end of file from server,证书没有正确的加载

在做支付的时候,需要回调支付结果,可公司内网。。。所以必须做内网穿透,我就使用完全免费的natapp的方式实现,暂时就记在这里吧

官方网站:https://natapp.cn
教程:https://natapp.cn/article/natapp_newbie

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • 一、背景介绍 作为一名Android开发,从最初的跌跌撞撞到现在小有所悟,这其中经历过的辛酸苦辣也是一种痛并快乐着...
    freecats08阅读 4,830评论 7 54
  • 引言 秋高气爽,天气转凉,正是学习工作做的好时候。(~ ̄▽ ̄)~~(~ ̄▽ ̄)~ 我是个phper最近在写微信支付...
    恩就是这个名阅读 7,949评论 2 15
  • 自己总结的微信支付宝支付流程和注意点: 准备工作: 需要公司的营业执照,税务信息,等老板的身份证信息等,我记得,用...
    Www刘阅读 18,560评论 2 50
  • 六角冰晶舞南京,随风飘落地镀银; 手心向上赊一朵,冰肌傲骨慰心扉。
    春归立地阅读 381评论 0 4
  • 10月6日、农历八月十七、星期五、室外温度31度。读经方式137累积法。今日读经内容,《易经》下册通读一遍,《孝经...
    南山胡碧鸿阅读 397评论 0 5