微信扫码支付

1、微信扫码支付申请

微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。

申请步骤:

第一步:注册公众号(类型须为:服务号)

请根据营业执照类型选择以下主体注册。 

第二步:认证公众号

公众号认证后才可申请微信支付,认证费:300元/次。

第三步:提交资料申请微信支付

登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。

第四步:开户成功,登录商户平台进行验证

资料审核通过后,请登录联系人邮箱查收商户号和密码,并登录商户平台填写财付通备付金打的小额资金数额,完成账户验证。

第五步:在线签署协议

本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。

2、 开发文档

在线微信支付开发文档:

https://pay.weixin.qq.com/wiki/doc/api/index.html

1、点Native支付,查看文档

 

2、选择"扫码支付->开发指引"菜单

  1. 商户后台系统:即我们开发的系统

  2. 微信支付系统:微信支付平台

3、时序图如下

关注点

1. 生成支付二维码

  1. 商户生成订单

  2. 商户调用微信下单接口,获取预交易的链接

  3. 商户将链接生成二维码图片,展示给用户

2. 收到支付结果通知

  1. 微信通知商户支付结果,商户告知微信支付接收情况

  2. 商户如果没有收到通知,可以调用接口,查询支付状态

  3. 如果支付成功则发货,并且修改订单状态

3、接下来,我们需要做的是

  1. 调用微信下单接口,生成链接。

  2. 根据链接生成二维码图片

  3. 接受微信支付的结果

  4. 支付成功后修改订单状态

4、 API

 统一下单

请求路径

  • 请求方式:POST请求

请求参数

字段名变量名必填类型示例值描述
公众账号IDappidString(32)wxd678efh56微信支付分配的公众账号ID
商户号mch_idString(32)1230000109微信支付分配的商户号
随机字符串nonce_strString(32)5K8264ILT随机字符串,长度要求在32位以内
签名signString(32)C380BEC2B通过签名算法计算得出的签名值
商品描述bodyString(128)娃娃商品简单描述
商户订单号out_trade_noString(32)20150806125商户系统内部订单号
标价金额total_feeInt88订单总金额,单位为分
终端IPspbill_create_ipString(16)123.12.12.123APP和网页支付提交用户端IP,Native支付填调用微信支付API的机器IP。
通知地址notify_urlString(256)http://www.weixin.qq.com/wxpay/pay.php异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
交易类型trade_typeString(16)NATIVEJSAPI 公众号支付;NATIVE 扫码支付

这些参数大致分成3类

  1. 商家自己的信息或固定数据,可以提前配置,无需每次请求单独配置统一设置好即可。

    1. appid:微信支付分配的公众账号ID

    2. mch_id:微信支付分配的商户号

    3. spbill_create_ip:提交用户端IP

    4. notify_url:异步接收微信支付结果通知的回调地址

    5. trade_type:支付类型

  2. 为了保证数据安全而添加的验证数据,根据算法去生成,每次请求自动生成即可

    1. nonce_str:随机字符串

    2. sign:签名算法计算得出的签名值

  3. 订单相关信息,需要我们自己填写

    1. body:商品简单描述

    2. out_trade_no:商户系统内部订单号

    3. total_fee:订单总金额,单位为分

 

2.3.2 支付结果通知

支付完成后,微信会把相关支付结果和用户信息发送给商户(我们的程序),商户需要接收处理,并返回应答。

微信服务会自动向notify_url地址发起POST请求:

通信成功,微信会返回下面信息

字段名变量名必填类型示例值描述
商户订单号out_trade_noString(32)44642109e5商户系统内部订单号,要求32个字符内
业务结果result_codeString(16)SUCCESSSUCCESS/FAIL

我们需要返回给微信的参数

字段名变量名必填类型示例值描述
返回状态码return_codeString(16)SUCCESSSUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断
返回信息return_msgString(128)OK当return_code为FAIL时返回信息为错误原因 ,例如签名失败参数格式校验错误

以XML的格式返回

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

5、SDK

虽然请求参数比较复杂,但官方已经提供了SDK,供我们使用;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值