微信支付开发指南
Posted SuperAvalon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信支付开发指南相关的知识,希望对你有一定的参考价值。
简介
微信支付是腾讯公司在2014年9月推出的基于微信客户端的第三方支付平台,目前支持APP支付、公众号支付、扫码支付、H5支付、微信小程序支付、微信免密代扣等不同支付场景,文档规范易读,系统稳定,用户基数庞大,国内两大主流支付平台之一。
支付场景
支付方式 | trade_type | 支付凭证 | 是否依赖SDK |
APP支付 | APP | prepay_id | Y |
公众号支付 | JSAPI | prepay_id | N |
扫码支付 | NATIVE | prepay_id | N |
H5支付 | MWEB | prepay_id | N |
小程序支付 | JSAPI | prepay_id | N |
微信免密代扣 | APP | contract_id | N |
支付流程
除被扫支付场景、免密代扣场景以外,商户系统先调用统一下单接口,在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识prepay_id后,再按扫码、JSAPI、APP等不同场景生成交易串调起支付。
- APP支付,通过SDK凭prepay_id发起支付;
- 公众号支付,有微信JSAPI凭prepay_id发起支付;
- 扫码支付,使用code_url 生成二维码,有微信APP扫码发起支付;
- H5支付,通过手机浏览器跳转至mweb_url(deeplink),发起微信支付;
- 微信小程序支付,拿到prepay_id后组织支付请求报文,通过微信小程序发起支付;
- 微信免密代扣,不需要prepayid,支付前要先签约,通过签约协议号contractid发起支付;
签名机制
所有调用微信支付业务相关的接口,请求报文都需要对签名做MD5签名,签名步骤如下:首先对报文中所有数据字段采用key=value的形式按照参数名ASCII码从小到大排序排序,然后再以&作为连接符拼接成待签名字符串,最后在待签名字符串后面拼接&key=密钥进行MD5计算。
签名密钥配置:前往微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置。
微信支付接口中,涉及资金回滚的接口会使用到商户证书,包括退款、撤销接口。证书下载:前往微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->证书下载 。
签名算法
- php版本
/**
* 签名
*/
public function unifiedsign($data, $signType = 'md5')
$strInfo = '';
foreach ($data as $key => $val)
if( $val === '' )
continue;
if($strInfo)
$strInfo .= "&".$key."=".$val;
else
$strInfo = $key."=".$val;
if($signType == 'md5')
return strtoupper(md5($strInfo . '&key=' . $this->secret_key));
elseif($signType == 'sha1')
return sha1($strInfo . '&key=' . $this->secret_key);
APP支付时序图
以上是关于微信支付开发指南的主要内容,如果未能解决你的问题,请参考以下文章