wechat

微信支付文档……不说了

沙箱测试……没法用

怎么办……直接上线吧,一分钱大发。

openid 与 unionid

openid = 加密(微信用户id, 应用Id);
unionid = 加密(微信用户id, 开放平台id);

openid 本质上就是加密后的微信号。

用户在公众号内的身份标识,不同公众号拥有不同的openid。商户后台系统通过登录授权、支付通知、查询订单等API可获取到用户的openid。主要用途是判断同一个用户,对用户发送客服消息、模版消息等。

同一个用户在 网站应用公众账号 两个应用的 openid 是不同的。

unionid

如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的

Q: unionid 的应用场景有哪些?
A:

获取 openid

  • 公众号获取 openid,微信公众平台
  • 移动应用微信授权登录,微信开放平台
    • 第一步:请求CODE
    • 第二步:通过code获取access_token,能够获取 openid 和 unionid
  • 移动应用微信授权登录,微信开放平台
    • 第一步:请求CODE
    • 第二步:通过code获取access_token

微信支付

两种接入方式:

  • PC站(PC设备)
    • 扫码支付(NATIVE)
  • M站(移动设备)
    • H5 支付,在微信进入商家 h5 页面的支付接口,仅在微信外可用!
    • 公众号支付(JSAPI),在微信进入商家 h5 页面的支付接口,仅在微信内可用!
  • App

由于微信的支付场景较多,为了将每个场景统一,微信支付提出了一个叫做预支付交易单的概念。

  1. 公众账号支付。登录公众平台 ,选择【微信支付】->【开通】,按照页面提示填写资料。
  2. APP 支付。登录开放平台 ,选择【管理中心】->【移动应用】,选择需要申请支付的应用,点击【查看】->【微信支付】->【申请开通】,申请流程与公众号支付申请流程一致。

微信支付和支付宝不同的地方在于,微信支付没有 同步通知(return_url),只有异步通知 (即调用你提供的 notify_url)。所以,就需要在微信扫码支付的页面上加入 ajax 轮询订单状态:

(function() {
  'use strict';
  $(document).ready(function() {
    setInterval("ajaxstatus()", 3000);
  });

  function ajaxstatus() {
    if ($("#out_trade_no").val() != 0) {
      $.ajax({
        url: "URL?tradeno=" + $("#out_trade_no").val(),
        type: "GET",
        dataType: "json",
        data: "",
        success: function(data) {
          if (data == 1) { //订单状态为1表示支付成功
            window.location.href = "wxScanSuccessUrl.action"; //页面跳转
          }
        },
        error: function() {
          alert("请求订单状态出错");
        }
      });
    }
  }
}());

我们自己的系统,还应该具有主动向 支付宝或微信查询交易订单状态的机制,以规避异步通知异常造成交易状态无法更新的问题。

常见问题

  1. 手机端如何区分是跳转到 h5 支付页面 还是 公众号支付页面?
  2. 网站应用 和 公众号 的 openid 如何统一?

微信支付的沙箱就是糊弄鬼的,跟支付宝的沙箱不是一个概念。

  • 沙箱验证签名失败,请确认沙箱签名key是否正确(通过getsignkey调用生成)

微信登录

微信登录有两种方式:

  • 电脑上使用微信登录,用户使用手机上的微信app,在电脑上扫码完成授权。微信开放平台,登录开放平台 ,选择【管理中心】->【网站应用】
  • 手机上使用微信登录,手机上直接拉取微信,点击同意按钮后即可完成授权。微信公众平台,【公众号】。

实现方式:

  1. 没有自己的账号体系,直接拉取微信用户信息来进行网站登录,显示的头像、昵称、性别、地区信息全来自微信。
  2. 有自己的账号体系,授权成功后需要绑定自己的账号,显示的信息还是网站自身的用户名等信息。

名词解释

  1. 微信公众平台

微信公众平台是微信公众账号申请入口和管理后台。商户可以在公众平台提交基本资料、业务资料、财务资料申请开通微信支付功能。

平台入口:http://mp.weixin.qq.com

提供以下服务:

  • 服务号
  • 订阅号
  • 小程序

功能:

  • 微信支付。

mp.weixin.qq.pay

年审 300 元。

  1. 微信开放平台

微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。

平台入口:http://open.weixin.qq.com

开发者资质。第三方审核机构:长沙公信诚丰信息技术服务有限公司,年审 300 元。

开发者资质认证通过后,微信开放平台帐号下的应用,将获得微信登录、智能接口、第三方平台开发等高级能力。

提供以下服务:

  • 移动应用。
  • 网站应用。
  • 公众账号。
  • 小程序。
  • 第三方平台。

open.weixin

  1. 微信商户平台

微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。

平台入口:http://pay.weixin.qq.com

  1. 微信企业号

微信企业号是企业号的申请入口和管理后台,商户可以在企业号提交基本资料、业务资料、财务资料申请开通微信支付功能。

企业号入口:http://qy.weixin.qq.com

  1. 微信支付系统

微信支付系统是指完成微信支付流程中涉及的API接口、后台业务处理系统、账务系统、回调通知等系统的总称。

  1. 商户收银系统

商户收银系统即商户的POS收银系统,是录入商品信息、生成订单、客户支付、打印小票等功能的系统。接入微信支付功能主要涉及到POS软件系统的开发和测试,所以在下文中提到的商户收银系统特指POS收银软件系统。

  1. 商户后台系统

商户后台系统是商户后台处理业务系统的总称,例如:商户网站、收银系统、进销存系统、发货系统、客服系统等。

  1. 扫码设备

一种输入设备,主要用于商户系统快速读取媒介上的图形编码信息。按读取码的类型不同,可分为条码扫码设备和二维码扫码设备。按读取物理原理可分为红外扫码设备、激光扫码设备。

  1. 商户证书

商户证书是微信提供的二进制文件,商户系统发起与微信支付后台服务器通信请求的时候,作为微信支付后台识别商户真实身份的凭据。

  1. 签名

商户后台和微信支付后台根据相同的密钥和算法生成一个结果,用于校验双方身份合法性。签名的算法由微信支付制定并公开,常用的签名方式有:MD5、SHA1、SHA256、HMAC等。

  1. JSAPI网页支付

JSAPI网页支付即前文说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。

  1. Native原生支付

Native原生支付即前文说的扫码支付,商户根据微信支付协议格式生成的二维码,用户通过微信“扫一扫”扫描二维码后即进入付款确认界面,输入密码即完成支付。

  1. 支付密码

支付密码是用户开通微信支付时单独设置的密码,用于确认支付完成交易授权。该密码与微信登录密码不同。

  1. Openid

用户在公众号内的身份标识,不同公众号拥有不同的openid。商户后台系统通过登录授权、支付通知、查询订单等API可获取到用户的openid。主要用途是判断同一个用户,对用户发送客服消息、模版消息等。企业号用户需要使用企业号userid转openid接口将企业成员的userid转换成openid。

清理内置浏览器缓存

安卓可以访问:debugx5.qq.com
iOS下