微信openid原理及支付过程中使用方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信openid原理及支付过程中使用方案相关的知识,希望对你有一定的参考价值。

参考技术A 微信openid原理及支付过程中使用方案

一、 微信openid原理
微信openid由微信公众号提供,是微信公众号对于消费者微信产生的唯一用户身份标识。openid可以应用于云计算中的去中心化的身份认证技术,为用户以一个身份在多个云服务应用中通行提供了一种方式。
在聚合支付过程中,微信、支付宝在消费者使用手机支付的时,支付成功会返回给调用方openid(支付宝是buy_user_id)以标识消费者。结合微信的服务商模式,微信支付提供返回openid(对服务商),sub_openid(对渠道服务商)两个openid供业务方自定义使用,支付宝返回的buy_user_id是支付宝为消费者在支付宝系统中生成的唯一id,对所有通道、所有服务商都一样(本文不再描述)。
二、 支付过程中openid、sub_openid生成规则及使用
在云pos聚合支付(被扫)过程中,生成的openid,是消费者微信对支付服务商报备到微信的主体为支付服务商的公众号生成的。在微信支付的规则体系中,银行通道支付服务商只能是银行、三方通道(如中金)支付服务商只能是三方公司,因此,产生的openid,同一个消费者各个通道各不相同,同一通道是相同的。为了解决同一个消费者在多个通道支付时返回的openid一样的需求,微信提供了sub_openid的字段,供调用方自定义。对于实现本需求,可以在所有提供服务的银行、三方公司通道上,将烟草公司设置成渠道服务商,统一配置sub_appid为烟草公司公众号appid,这样微信就会返回该appid对应的openid放到sub_openid字段,这样就实现了同一个消费者在不同通道(不同店铺)支付时,产生的openid一样,就可以唯一识别一个消费者了。

三、 对于sub_openid的生成所需的实施工作
实现基于烟草公司公众号生成sub_openid,银行、三方公司在做商户入网时需在烟草公司渠道服务商下做商户入网,主要如下:
(1) 每一个银行、三方公司将地市烟草公司在微信支付上进件成渠道服务商。(提供营业执照、法人身份证、对公账户打款验证),设置sub_appid为烟草公司公众号appid
(2) 为商户在烟草公司渠道服务商下入网
(3) 确认支付时是否需要实时上送sub_appid,确定支付时接口调用规则。

微信网页授权-公众号支付(获取openid用户信息等)

名词解释:

openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID

 

业务功能描述:实现H5页面可以在微信浏览器里面进行微信支付,所以需要使用微信公号支付功能才能实现,

微信公众号支付功能需要用户的openid,所以进入页面时需要通过网页授权首先获取到openid。

 

支付流程大致流程如下:

1,进入支付页面时,请求以下链接获取code

appid 公众号的唯一标识
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

2,然后根据code获取openid

参数是否必须说明
appid 公众号的唯一标识
secret 公众号的appsecret
code 填写第一步获取的code参数
grant_type 填写为authorization_code 
 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

 

3.根据openid,发起wx_pub支付订单,OK  

 

注:只记录大致流程,具体细节参考微信官网:微信官方网页授权

 

以上是关于微信openid原理及支付过程中使用方案的主要内容,如果未能解决你的问题,请参考以下文章

微信支付

支付微信公众号遇到的坑--解决方案

微信网页授权-公众号支付(获取openid用户信息等)

php微信公众号支付openid问题

java实现微信授权获取用户openid及授权用户相关信息

微信支付刷新后undefined index: openid