codecamp

微信小程序 扫码支付

扫码支付

(1)支付回调接口

业务方调用微信扣费接口之后,接收扣费结果通知。

1、 请求参数

参数名称 类型 必选 备注
appid string Y 小程序
appidmch_id string Y 支付商户号
nonce_str string Y 随机字符串
encrypted_data string Y 使用AESCBCPKCS7PADDING
iv string Y 用于解密的IV
sign string Y 1~5字段的签名

解密后的参数如下:

参数名称 类型 必选 备注
openid string Y 用户在小程序appid下的openid
bank_type string Y 支付类型
total_fee int Y 支付总额,单位为分
trade_state string Y 支付状态:SUCCESS/FAIL
trade_msg string N 支付失败时返回
transaction_id string Y 微信支付单号
out_trade_no string Y 乘车码业务方单号
attach string N 扣费API的入参,原样带回
time_end string Y 支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010
qrcode string Y 二维码

2、 返回参数

参数名称 类型 必选 备注
errcode int Y 0为成功
errmsg string N 错误信息
nonce_str string Y 原样带回

3、 示例代码

{"appid":"test","mch_id":"123456","nonce_str":"abcdefg","encrypted_data":"jfiwajeofjiefef","iv":"afweifwefe"}

解密后数据:

{"openid":"fafwefawef","bank_type":"CFT","total_fee":100,"trade_state":"SUCCESS",...}

(2)微信扣费接口(微信API接口)

用于接收业务方依据扫码接口获取到的信息对用户进行免密扣费。

1、请求参数

参数名称 类型 必选 备注
qrcode string Y 乘车码数据,需要base64
total_fee int Y 支付总额,分为单位(优惠后)
original_fee int Y 支付总额,分为单位(优惠前)
machine_ip string N 扫码机接入IP
machine_latitude float N 扫码机GPS纬度
machine_longitude float N 扫码机GPS经度
body string Y 公交代扣/地铁代扣
start_time string Y 上车/乘车时间,如20091225091010
end_time string N 下车时间,格式同上,适用于二次刷码的场景
line_name string Y 乘车线路
trade_scene string Y METRO/BUS
start_qrcode string N 二次刷码时,传入首次刷码使用的二维码
out_order_no string N 业务方自定义订单号,需要保证唯一
attach string N 业务方自定义数据,对账单和查询接口会原样返回

2、 返回参数

参数名称 类型 必选 备注
errcode int 32Y 返回码
errmsg string N 返回信息

3、 示例代码

入参:

{"qrcode":"afefawefwef",....}

返回

{"errcode":0,....}


微信小程序 生码
微信小程序 用户注册签约(可选)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

微信小程序 指南

目录结构

开放能力

微信小程序 调试

微信小程序 实时日志

微信小程序 小程序测速

微信小程序 基础组件

微信小程序 API

媒体

界面

微信小程序API 绘图

微信小程序 服务端

接口调用凭证

统一服务消息

微信小程序 服务市场

微信小程序 生物认证

微信小程序 云开发

服务端

微信小程序云开发服务端API 数据库

SDK文档

微信小程序 扩展能力

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }