.net mvc 微信支付之企业付款

先说一下功能需求,是关注微信公众号,然后根据用户的输入,判断是否需要从商户账号提现零钱到个人账户。由于这是第一次做公众号的开发,所以看了一下官方文档。

第一步要实现的是根据用户的输入关键字,做识别判断是否需要发送领钱到用户,并且回复一条消息,提醒用户。微信公众平台提供了三种消息回复,即文本回复,音乐回复和图文回复。

配置公众号后台服务器,启用的时候,需要向服务器地址发送一个get请求,然后用户发送消息的时候,微信会向这个服务器地址发送一个post请求,在mvc里面就是同一个action,只是一个是Get请求,一个是post请求。因为mvc不允许相同名字的action,所以,在post的action请求里面,加上[ActionName("XXXX")],然后action换一个其他的名字,这个里面的XXXX就是跟Get请求的action是同样的名字,这样就能避免相同名字的action的情况。

现在来说,回复用户消息,上段我们说道,当用户向公众号发送了一个消息的时候,微信会把用户的消息,post请求到服务器,这个请求里面包含了xml结构的消息。我们需要对XML进行解析,XML的结构如下:

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>12345678</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[content]]></Content>
 </xml> 

从这个里面,我们可以获取下一步,向用户发送领钱的一个重要参数,就是openid, openid是个人微信账号关注特定公众号之后生成的唯一识别码,这个识别码是绑定用户的微信号与公众号,所以我之前在网上查资料的时候,好多人都问,领钱提现,怎么知道用户的openId,这个是一个方法,你可以把openId存到数据库保存起来,因为微信的好多接口都需要这个参数,每个用户关注不同的公众号都会生成不同的openId,在微信的接口里面你只能获取到或者使用的只有openId, 不会用到用户的微信号。

我们这里只需要判断MsgType是text的情况,这是发送的消息是文本的情况。通过获取Content内容,关键字识别,你可以进行下一步,提现领钱到用户账号。

微信的官方接口说明网址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2

通过这个文档,其实很简单,我只说一下需要注意的地方,第一个地方就是需要证书,这个证书你需要去商户号后台里面下载。这个证书有什么用? 问得好,用处就是带着证书向微信的接口发出请求,不然会报一个“请下载证书”的错误。 这里我说明一下,怎么带着证书发送post请求,你下载完了证书之后,把他放到服务器,你可以选择导入到服务器的证书里面去,也可以不导入,貌似我没有导入证书,也可以提现成功。在.net里面有这样一个类,X509Certificate2 , 不知道的,可以百度或者谷歌。

  X509Certificate2 cert = new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + "cert\\apiclient_cert.p12", mchid);

这个p12就是我们所需要的证书,mchid是证书的密码,是微信商户号。

我自己在做的时候,调用这个类发现一个错误,就是找不到指定文件,我以为是证书没有权限,访问不了,后来发现不是,在网上找到的答案,需要到应用程序池里面,设置一个参数,设置完了就可以了。

实例化这个类之后,在发起请求的时候,把这个证书加上就可以向微信的服务器发送post请求了。

第二个需要注意的地方就是她的接口里面的参数:

如果是第一次做这个会懵逼,这个商户帐号appid,指的是公众号的appid,商户号是微信商户平台的商户号。这里我需要吐槽一下,微信他有好多平台,每个平台都有一个后台,像我们这里,涉及到微信公众号平台和微信商户平台。

第三个需要注意的就是他返回的内容,他返回的消息里面,依然是一个xml结构的内容。里面有一个return_code 和result_code,returncode 为SuCCESS表示请求发送成功,并不代表提现成功,只要result_code 为SUCCESS,才表示提现成功。

基本上倒了这一步,就可以成功完成。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值