微信公众号内支付相关

业务场景

最近在做虚拟货币的"反向提现"(天朝不允许这么做, 只是擦边球啦), 所以起个高大上的名字"兑现". 我司创业公司, 财力单薄, 银联2000+的申请费, 千8的手续费自然让人望而却步. 于是乎苦思冥想下, 选择了微信做反向账户. 调研了n多文档, 结合自己的老司机经验, 选择了微信公众号的企业打款做给用户定向打款的业务功能组.

业务解析

1-支付业务分析

那么好了从上面的业务分析图1中, 我们可以知道, 在已有技术资源渠道选定的情况下, 如何解决在移动app中实现公众号的企业打款api, 就成了解决业务问题的关键.

2-支付业务分析

如业务分析图2中所示, 业务拆解分用户id转换, 打款api接入两步.


接口相关

<b>一. 微信公众号相关

1.获取access_token

文档地址: https://mp.weixin.qq.com/wiki/11/0e4b294685f817b95cbed85ba5e82b8f.html

请求方式: GET

请求地址:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明:

参数 必填 说明
grant_type 获取access_token填写client_credential
appid 公众号的唯一id
secret 公众号的密钥

返回示例:

200 OK
Connection: close
Date: Wed, 15 Feb 2017 02:15:24 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 154
{
    "access_token": "zoma7kz-VdhDMDraUBrmW3ouVAa-64YAKE1Ce_LDAhMCftwcq1fjFE2X0WcjFUgWAcYQTTLYIKiK-I2OncrHMZ2_vpPvV9mwUvSvoVJTC2gKKUdAHASSC", 
    "expires_in": 7200
}

2.根据access_token得到open_id列表

文档地址: https://mp.weixin.qq.com/wiki/0/d0e07720fc711c02a3eab6ec33054804.html

请求方式: GET

请求地址:

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID

参数说明:

参数 必填 说明
access_token 调用接口的凭证
next_openid 第一个拉取的OPENID,不填默认从头开始拉取

返回示例:

有数据更新时:

200 OK
Connection: close
Date: Wed, 15 Feb 2017 07:06:27 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 272
{
    "total": 6, 
    "count": 6, 
    "data": {
        "openid": [
            "olSBQxKIV7FCXx7WW0iQsXEoXE9k", 
            "olSBQxENCojqbp_c_11lOIGempI4", 
            "olSBQxILNooroKuHtNc9ioDMUsPQ", 
            "olSBQxISsjAh_kwrxTmjPZ_56NoQ", 
            "olSBQxPay4YhRs2kBCXrLMNDxxjs", 
            "olSBQxFQfuqw8yJcbyX3INjBxIGs"
        ]
    }, 
    "next_openid": "olSBQxFQfuqw8yJcbyX3INjBxIGs"
}

没有数据更新时:

200 OK
Connection: close
Date: Wed, 15 Feb 2017 07:13:02 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 38
{
    "total": 6, 
    "count": 0, 
    "next_openid": ""
}

*特别说明返回示例中的next_openid的含义发生变化: 此时代表拉取用户列表的最后一个id! *

3.根据openid获取用户的基本信息

文档地址: https://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html

请求方式: GET

请求地址:

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明:

参数 必填 说明
access_token 调用接口的凭证
openid 普通用户的标识,对当前公众号唯一
lang 返回国家地区语言版本

返回示例:

200 OK
Connection: close
Date: Wed, 15 Feb 2017 07:20:28 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 421
{
    "subscribe": 1, 
    "openid": "olSBQxKIV7FCXx7WW0iQsXEoXE9k", 
    "nickname": "BobRen࿐", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "朝阳", 
    "province": "北京", 
    "country": "中国", 
    "headimgurl": "http://wx.qlogo.cn/mmopen/8uptaMS0ibfVs1LyqliciaiajlKIcWYSMZd2B9JgK3g0qr63oyz18jUppZFa3naGS3r38NSAibLZvpicESZjDia6kIIv5f4mXW7s1ZI/0", 
    "subscribe_time": 1482460774, 
    "unionid": "IamUnionid", 
    "remark": "", 
    "groupid": 0, 
    "tagid_list": [ ]
}

以我为例, ok, 这里我们就拿到了我们朝思暮想的<unionid>, got it!

截止到此, 微信公众平台的部分搞定. 至于用户数据更新上, 建议用定时任务, 每天0:00或者几个静态时间点用next_openid拉取最新的数据.


二. 微信开放平台-移动app

通过"微信登陆授权"拿到unionid

文档地址:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=4fab694b3d1260a639eeb0b5a98d81cf7919cacb&lang=zh_CN
具体api指向如下:
微信登陆-> 拉起微信-> 用户授权 -> code -> accesstoken && unionid

注意: 兑现功能的前置条件, 需要调起微信登陆!!! 这个设计有点奇葩, 但是如果用户信息未绑定微信账号, 只能如此, 暂时没有更好的处理方案.
存储相应的unionid到我司用户信息表中, 完成公众号 到 app的id信息关联, 齐活儿~


三. 业务实现方式总结

优点:

  • 财务分离, 公司进账账户和出账账户完全分离, 一定程度上保证了财务安全.
  • 较低的手续费, 0.6%的手续费, 感觉即使不盈利也像是在赚钱.
  • 一定程度上降低了开发成本, 完全对着微信的api巴拉巴拉就行了.(不要和我说ping++, 提现功能解决不了)
  • 现成的微信流水替代了财务系统的开发
  • 提现的自动化api降低了客服的工作量

不足:

  • 申请账号, 真尼玛麻烦, 各种资料劳神伤身
  • 中间的穿域授权完全依托于微信登陆, 对于高质用户而言, 体验很一般
  • 要提现, 还要关注微信公众账号, 累不累?(当然你也可以为, 解决刚性需求-- RMB, 顺便带点营销的小伎俩, 哈哈)
  • 这么多, 这么多, 好久不用markdown, 好手残, 好手残

最后,
不得不说, 我的方案是有点反人类设计的方案, 其灵感也是在麻辣诱惑任职时, 为了解决公众号二次开发的商城退款问题而找的api, 并设计的方案, 在这个新平台上能实现并完善这个方案还是很欣慰的, 哈哈~

最后的最后, 我做码农的时间不是很长, 但总归是快乐的,不写业务代码也快半年了, 在项目管理和产品设计的scope也谈不上精进. 27的年龄, 会有些新的思考, 新的认知, 当然尽管发现自己渐乎是有些平庸的, 但总会想要挣扎下. 太久不写, 有些verbose了, 希望和各位交流技术, 共勉吧.

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

推荐阅读更多精彩内容