• 【weixin】微信支付---Native支付模式一


    【模式一】:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号)。
    用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL),商户后台系统根据productid生成支付交易,
    最后微信支付系统发起用户支付流程。
    商户支付回调URL设置指引:进入商户平台-->产品中心-->开发配置,进行配置和修改,如下图所示。

    图一

    模式一开发前,商户必须在公众平台后台设置支付回调URL。URL实现的功能:接收用户扫码后微信支付系统回调的productid和openid;URL设置详见图一

    业务流程时序图

     

    图二

    业务流程说明:

    (1)商户后台系统根据微信支付规定格式生成二维码(规则见下文),展示给用户扫码。
    
    (2)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。
    
    (3)微信支付系统收到客户端请求,发起对商户后台系统支付回调URL的调用。调用请求将带productid和用户的openid等参数,并要求商户系统返回交数据包,详细请见"本节3.1回调数据输入参数"
    
    (4)商户后台系统收到微信支付系统的回调请求,根据productid生成商户系统的订单。
    
    (5)商户系统调用微信支付【统一下单API】请求下单,获取交易会话标识(prepay_id)
    
    (6)微信支付系统根据商户系统的请求生成预支付交易,并返回交易会话标识(prepay_id)。
    
    (7)商户后台系统得到交易会话标识prepay_id(2小时内有效)。
    
    (8)商户后台系统将prepay_id返回给微信支付系统。返回数据见"本节3.2回调数据输出参数"
    
    (9)微信支付系统根据交易会话标识,发起用户端授权支付流程。
    
    (10)用户在微信客户端输入密码,确认支付后,微信客户端提交支付授权。
    
    (11)微信支付系统验证后扣款,完成支付交易。
    
    (12)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。
    
    (13)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
    
    (14)未收到支付通知的情况,商户后台系统调用【查询订单API】。
    
    (15)商户确认订单已支付后给用户发货。

    生成二维码规则

    二维码中的内容为链接,形式为:

    weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX

    其中XXXXX为商户需要填写的内容,商户将该链接生成二维码,如需要打印发布二维码,需要采用此格式。商户可调用第三方库生成二维码图片。参数说明如下:

    表6.1 生成二维码所需参数列表

    名称变量名类型必填示例值描述
    公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID
    商户号 mch_id String(32) 1900000109 微信支付分配的商户号
    时间戳 time_stamp String(10) 1414488825 系统当前时间,定义规则详见时间戳
    随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
    商品ID product_id String(32) 88888 商户定义的商品id 或者订单号
    签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法

    举例:

    weixin://wxpay/bizpayurl?appid=wx2421b1c4370ec43b&mch_id=10000100&nonce_str=f6808210402125e30663234f94c87a8c&product_id=1&time_stamp=1415949957&sign=512F68131DD251DA4A45DA79CC7EFE9D

    回调商户支付URL

    商户提供的支付回调URL(回调地址设置)需要实现以下功能:接收用户扫码后微信支付系统发送的数据,根据接收的数据生成支付订单,调用【统一下单API】提交支付交易。

    3.1 输入参数

    表6.2 输入参数说明

    名称变量名类型必填示例值描述
    公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID
    用户标识 openid String(128) o8GeHuLAsgefS_80exEr1cTqekUs 用户在商户appid下的唯一标识
    商户号 mch_id String(32) 1900000109 微信支付分配的商户号
    是否关注公众账号 is_subscribe String(1) Y 用户是否关注公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
    随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
    商品ID product_id String(32) 88888 商户定义的商品id 或者订单号
    签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 返回数据签名,签名生成算法

    3.2 输出参数

    表6.3 输出参数说明

    名称变量名类型必填示例值描述
    返回状态码 return_code String(16) SUCCESS SUCCESS/FAIL,此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
    返回信息 return_msg String(128) 签名失败 返回信息,如非空,为错误原因;签名失败;具体某个参数格式校验错误.
    公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID
    商户号 mch_id String(32) 1900000109 微信支付分配的商户号
    随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 微信返回的随机字符串
    预支付ID prepay_id String(64) wx201410272009395522657a690389285100 调用统一下单接口生成的预支付ID
    业务结果 result_code String(16) SUCCESS SUCCESS/FAIL
    错误描述 err_code_des String(128)   当result_code为FAIL时,商户展示给用户的错误提
    签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 返回数据签名,签名生成算法

     相关资料:

  • 相关阅读:
    redis你要知道的事
    Nginx七层负载均衡的几种调度算法
    JQuery的父、子、兄弟节点选择器
    laravel通用和万能路由
    jquery竖向企业组织结构图
    phpexcel功能操作
    animatext.js使用介绍
    Centos firewalld开放端口
    获取微信accesstoken并文件缓存方式
    css处理文字不换行、换行截断、溢出省略号
  • 原文地址:https://www.cnblogs.com/websmile/p/11115045.html
Copyright © 2020-2023  润新知