我去南方旅游,买东西用微信支付分,操作方式跟北方人完全不同,回来北方操作微信支付分,老感觉是错的,后来

支付主要分为几个步骤:

前端携帶支付需要的数据(商品id购买数量等)发起支付请求

后端在接收到支付请求后,处理支付数据然后携带处理后的数据请求 微信服务器 的 支付统一下单接口

后端接收到上一步请求微信服务器的返回数据,再次处理然后返回前端让前端可以开始支付。

前端支付完成后微信服務器会向后端发送支付通知(也就是微信要告诉你客户已经付过钱了),后端根据这个通知确定支付完成然后就去做支付完成后的相应動作,比如修改订单状态添加交易日志啊等等。

    从这几个步骤可以看出后端主要的作用就是将支付需要的数据传给微信服务器,再根據微信服务器的响应确定支付是否完成

    这个流程还是蛮容易理解的。形象的说前端就是个顾客,后端就是店家微信服务器的统一下單接口就像收银员。顾客跟店家说我是谁谁谁,现在我要付多少多少钱给你买什么什么店家就跟收银员说,那个谁谁谁要付多少钱伱准备收钱吧。收银员收到钱后就去告诉店家,我已经收到钱了你给他东西吧。
下面就详细的说明一下各个步骤的具体实现

//微信支付分类的构造函数 //微信支付分类向外暴露的支付接口 //对微信统一下单接口返回的支付相关数据进行处理 *请求微信统一下单接口 //发送xml请求方法 //要求结果为字符串且输出到屏幕上 * 对要发送到微信统一下单接口的数据进行签名 //签名步骤一:按字典序排序参数 //签名步骤三:MD5加密 //签名步骤四:所有字符转为大写 *排序并格式化参数方法,签名时需要使用 * 生成随机字符串方法

以上就是微信支付分的相关流程在理清思路后,流程还是比较清晰和简单的重点在于需要注意一些细节问题,例如数据格式加密方法等。

下面说一下微信小程序退款的具体实现

小程序退款的流程和付款相似但有一些细节上的不同。

首先退款的步骤通常如下:

  • 用户前端点击退款按钮后后端接收到用户的退款请求通過商城后台呈现给商户,商户确定允许退款后后端再发起向微信退款接口的请求来请求退款。

  • 后端向微信退款接口发送请求后得到响應信息,确定退款是否完成根据退款是否完成再去进行改变订单状态等业务逻辑。

退款的步骤相对微信支付分来说比较简单

值得注意嘚有以下两点:

  • 商户号 mch_id 。申请开通微信支付分商户认证成功后微信发给你的邮件里有

  • 商户订单号 out_trade_no 退款订单在支付时生成的订单号

  • 退款订單号 out_refund_no 。由后端生成的退款单号需要保证唯一,因为多个同样的退款单号只会退款一次

  • 总金额 total_fee 。订单总金额单位为分。

  • 退款金额 refund_fee 需要退款的金额,单位同样为分

  • 签名 sign 使用上面的所有参数进行相应处理加密生成签名。(具体处理方式与支付相同可直接复用。)

    在发起退款请求后就可以直接根据请求的响应XML中的  result_code字段来判断退款是否成功,从而对订单状态进行处理和后续操作不需要像支付那样等待另一個接口的通知来确定请求状态。当然如上文所说如果需要微信服务器发送通知到后端的话,可以到微信商户平台进行设置

退款因为流程与支付大同小异,因此退款的PHP类我选择了直接继承支付类

代码如下,注意区分退款请求方法postXmlSSLCurl和支付请求方法postXmlCurl的区别这也就是上文提箌的退款需要的双向证书的使用。

//需要使用证书的请求 //这里设置代理如果有的话 //要求结果为字符串且输出到屏幕上 //默认格式为PEM,可以注釋 //默认格式为PEM可以注释

我要回帖

更多关于 微信支付分 的文章

 

随机推荐