商户进件
特约商户进件
基础支付
JSAPI支付
APP支付
Native支付
小程序支付
合单支付
付款码支付
经营能力
支付即服务
点金计划
行业方案
电商收付通(商户进件)
电商收付通(普通支付)
电商收付通(合单支付)
电商收付通(分账)
电商收付通(补差)
电商收付通(退款)
电商收付通(余额查询)
电商收付通(商户提现)
电商收付通(下载账单)
智慧商圈
微信支付分停车服务
营销工具
代金券
商家券
委托营销
支付有礼
小程序发券插件
H5发券
图片上传(营销专用)
现金红包
资金应用
分账
连锁品牌分账
风险合规
商户开户意愿确认
消费者投诉2.0
其他能力
图片上传
视频上传

小程序调起支付API

最新更新时间:2020.05.26 版本说明


通过JSAPI下单接口获取到发起支付的必要参数prepay_id,然后使用微信支付提供的小程序方法调起小程序支付。


接口说明

适用对象: 服务商 电商平台

接口定义

此API无后台接口交互,需要将列表中的数据签名


参数名 变量 类型[长度限制] 必填 描述
小程序id appId string[1,32] 商户申请的小程序对应的appid,由微信支付生成,可在小程序后台查看。若下单时候传了sub_appid,须为sub_appid的值。
示例值:wx8888888888888888
时间戳 timeStamp string[1,32] 当前的时间,其他详见时间戳规则
示例值:1414561699
随机字符串 nonceStr string[1,32] 随机字符串,不长于32位。推荐随机数生成算法
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS
订单详情扩展字符串 package string[1,128] 小程序下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
示例值:prepay_id=wx201410272009395522657a690389285100
签名方式 signType string[1,32] 签名类型,默认为RSA,仅支持RSA。
示例值:RSA
签名 paySign string[1,512] 签名,使用字段appId、timeStamp、nonceStr、package计算得出的签名值
示例值:oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==

小程序调起支付的参数需要按照签名规则进行签名计算:

1、构造签名串

签名串一共有四行,每一行为一个参数。行尾以\n(换行符,ASCII编码值为0x0A)结束,包括最后一行。
如果参数本身以\n结束,也需要附加一个\n

参与签名字段及格式:

小程序appId
时间戳
随机字符串
订单详情扩展字符串

数据举例:

wx8888888888888888
1414561699
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
prepay_id=wx201410272009395522657a690389285100 

绝大多数编程语言提供的签名函数支持对签名数据 进行签名。强烈建议商户调用该类函数,使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值。

下面我们使用命令行演示如何生成签名。


$ echo -n -e \
"wx8888888888888888\n1414561699\n5K8264ILTKCH16CQ2502SI8ZNMTM67VS\nprepay_id=wx201410272009395522657a690389285100\n" \
  | openssl dgst -sha256 -sign apiclient_key.pem \
  | openssl base64 -A
  uOVRnA4qG/MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK+VdEUz2FeIoC+D5sB/LN+nGzX3hfZg6r5wT1pl2ZobmIc6p0ldN7J6yDgUzbX8Uk3sD4a4eZVPTBvqNDoUqcYMlZ9uuDdCvNv4TM3c1WzsXUrExwVkI1XO5jCNbgDJ25nkT/c1gIFvqoogl7MdSFGc4W4xZsqCItnqbypR3RuGIlR9h9vlRsy7zJR9PBI83X8alLDIfR1ukt1P7tMnmogZ0cuDY8cZsd8ZlCgLadmvej58SLsIkVxFJ8XyUgx9FmutKSYTmYtWBZ0+tNvfGmbXU7cob8H/4nLBiCwIUFluw==
                

signType参数不参与签名,但需要传递,默认值为“RSA”,生成的签名需要通过字段paySign传递。

调用wx.requestPayment(OBJECT)发起微信支付

Object参数说明:


参数名 变量 类型[长度限制] 必填 描述
时间戳 timeStamp string[1,32] 当前的时间,其他详见时间戳规则
示例值:1414561699
随机字符串 nonceStr string[1,32] 随机字符串,不长于32位。
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS
订单详情扩展字符串 package string[1,128] 小程序下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
示例值:prepay_id=wx201410272009395522657a690389285100
签名方式 signType string[1,32] 签名类型,默认为RSA,仅支持RSA。
示例值:RSA
签名 paySign string[1,512] 签名,使用字段appId、timeStamp、nonceStr、package计算得出的签名值
示例值:oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==

回调结果

回调类型 errMsg 说明
success requestPayment:ok 调用支付成功
fail requestPayment:fail cancel 用户取消支付
fail requestPayment:fail (detail message) 调用支付失败,其中 detail message 为后台返回的详细失败原因

请求示例


wx.requestPayment
(
	{
		"timeStamp": "1414561699",
		"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
		"package": "prepay_id=wx201410272009395522657a690389285100",
		"signType": "RSA",
		"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==",
		"success":function(res){},
		"fail":function(res){},
		"complete":function(res){}
	}
)
 
    
{
JAVA示例代码
}
    

技术咨询

文档反馈