微信小程序支付 demo方式能用其他通道吗

谈谈如何从零接入小程序支付
作者:移动支付网
分类 : 比特网
  小程序中微信支付的能力,是随着小程序的发布一并推出的,然而小程序文档里关于微信支付接口只有一个requestPayment函数的描述。
  这个requestPayment函数确实是小程序前端唯一需要调用的函数,但是微信支付的成功接入实际远远不止这一个函数,对于没有接入过微信支付的开发者,会觉得一头雾水,完全没法下手。
  本文阐述如何从零开始接入小程序支付,尤其适合那些没有微信支付接入经验的开发者。
  1. 申请微信支付
  小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。
  填写信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署迁移,即完成了微信支付的申请流程.。
  微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。
  2. 准备工作
  2.1 配置小程序密钥
  小程序后台设置页,点击生成,管理员验证二维码后,会随机生成AppSecret。请妥善保管好Appsecret,不要明文于,AppSecret用于和微信服务器交互。比如获取用户的openid接口就需要用到.
  2.2 设置密钥和下载证书
  用申请微信支付获得的用户名和密码,登录商户平台(pay.weixin..com),在账户中心,API安全中下载证书和设置密钥。
  密钥是32位,设置以后需要妥善保管,因为无法查看密钥,所有微信支付相关的接口都会使用这个密钥加密。
  2.3 配置Https服务器
  小程序的前端是使用微信提供的框架开发,但是后台依然是开发者自己的服务器。小程序发起的是https请求,意味着小程序开发者必须配置https服务器。
  配置https服务器之前,先要获取证书,证书可以向相关机构购买,云目前可以向用户提供免费的证书.
  证书安装指引,可以参考这里: /doc/product/400/4143
  3. 微信支付流程
  微信支付有多种支付方式,包括刷卡支付,公众号支付,扫码支付,APP支付,所有微信支付的接口在这里找到:
  https://pay./wiki/doc/api/index.html
  小程序是在微信里调起支付的,其实是公众号支付,关于公众号支付的详细文档可以这里找到: https://pay./wiki/doc/api/jsapi.php?chapter=7_1
  所有公众号支付相关的链接都可以在此链接找到,开发者首先需要大概了解这些接口
  小程序公众号支付的主要流程如下(本图只考虑了正常流程,异常流程参考公众号支付文档):
  3.1 关于openid
  上述流程中请求openid,用的是小程序最新api中的接口,开发者可以查看小程序的登录接口。
  开发者从第三方服务器获得的openid,在统一下单的接口里面需要使用到.
  3.2 关于小程序调起微信支付
  上述流程中的小程序调起微信支付,用的是小程序微信支付接口wx.requestPayment,该接口的详细描述可以查看小程序的微信支付API。
  这个接口中的package和timeStamp参数是从开发者的第三方服务器返回的,package是第三方服务器从统一下单接口回复中获得。
  接口中其他的参数,appId,noceStr,signType以及paySign则由小程序这边存储或者计算而得。
  其中paySign是签名,签名算法文档在这里:
  https://pay./wiki/doc/api/jsapi.php?chapter=4_3&t=
  整个公众号支付的主要流程基本都是在第三方服务器上实现,开发者需要熟读公众号支付文档,了解消息交互流程以及每个接口。
  这里并没有描述正常微信支付必不可少的一些功能:异常处理,查询订单,发起退款,下载对账单等等。
  3. 小程序与JSSDK微信支付比较
  JSSDK的微信支付接口是公众号里用JS调起公众号支付的方法,具体可以参考公众平台的文档。
  可以看到,小程序和JSSDK的微信支付非常类似,这里比较一下2者的区别:
[ 责任编辑:韩敏 ]
比特网 09:59:02
带着朋友和机器人上月亮散步
比食人鱼更恐怖:长着人类牙齿的鱼
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。php 微信小程序支付流程(注意事项),小程序支付回调 - 博客频道 - CSDN.NET
万物皆对象
分类:微信小程序
支付步骤逻辑:
1. 小程序发起请求预支付
2. 服务端调用接口发起预支付信息
3. 微信小程序调起支付完成支付
1. 小程序发起请求预支付
2. 服务端调用接口发起预支付信息
服务端接收到请求后,调用微信的api接口,调用成功会得到一个prepay_id 这个就是相当于小程序的预支付id 过程中会生成签名,按照官方文档的实例参数生成即可,如果非必填可选择不填,然后向 api
发送一个xml
参数讲解官方文档地址:
&wx0ec43b&
&支付测试&
&JSAPI支付测试&
&&![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]&&
&1add1a30ac87aa2db72f57a2375d8fec&
&/pub_v2/pay/notify.v2.php&
&oUpF8uMuAJO_M2pxb1Q9zNjWeS6o&
&14.23.150.211&
&0CBEFBCA001&
需要注意sign 生成方式和公众号生成方式一致,下面是php生成签名方法, 可根据不同的框架修改,记得修改 key
签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
public function MakeSign()
ksort($this-&_prepay);
$string = $this-&ToUrlParams();
$string = $string . "&key=".WxPayConfig::KEY;
$string = md5($string);
$result = strtoupper($string);
return $result;
public function ToUrlParams()
$buff = "";
foreach ($this-&values as $k =& $v)
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
$buff = trim($buff, "&");
return $buff;
调用统一下单api
* 统一下单调取返回值
* @return mixed
* $output['return_code'] 状态码 SUCCESS/FAIL
* $output['return_msg'] 返回信息,如非空,为错误原因 签名失败 参数格式校验错误
* $output['time'] 当前时间戳
* $output['nonceStr'] 随机字符串
* $output['prepay_id'] 预支付id
* $output['sign'] 签名
public function pay_place_order()
$xml = '&xml&
&appid&'.$this-&_prepay['appid'].'&/appid&
&body&'.$this-&_prepay['body'].'&/body&
&mch_id&'.$this-&_prepay['mch_id'].'&/mch_id&
&nonce_str&'.$this-&_prepay['nonce_str'].'&/nonce_str&
&notify_url&'.$this-&_prepay['notify_url'].'&/notify_url&
&openid&'.$this-&_prepay['openid'].'&/openid&
&out_trade_no&'.$this-&_prepay['out_trade_no'].'&/out_trade_no&
&spbill_create_ip&'.$this-&_prepay['spbill_create_ip'].'&/spbill_create_ip&
&total_fee&'.$this-&_prepay['total_fee'].'&/total_fee&
&trade_type&'.$this-&_prepay['trade_type'].'&/trade_type&
&sign&'.$this-&MakeSign().'&/sign&
//调用api,自定义对参数进行处理,改请求方式是自定义方式
$xml_result = post_request_https('https://api.mch./pay/unifiedorder', $xml);
对返回的参数从新生成sign,得到一个新的sign,返回小程序
注意: 生成返回小程序签的名参与生成的签名的字段有下图,记得拼接key ,使用的是调取api 返回的值
参数详解:
3. 微信小程序调起支付完成支付
参数详解:
注意: 支付成功后微信回调通知签名验证,需要的参数是所有返回的参数字段除去sign字段,生成签名
= 返回字段中的sign(签名)
参数详解:
排名:千里之外
(4)(2)(8)(0)(1)(1)(1)(1)(1)(1)(3)小程序如何接入微信支付?你可能会遇上这些坑 | 技术宝典
微信支付于 2013 年正式发布,一路走来,作为内测开发团队的爱范儿明显感觉到,微信支付的接口稳定程度有质的提升,围绕支付相关的场景也配备了对应的接口。
微信小程序的发布,随机附送了一个微信支付模块,该模块使用起来的情况如何?知晓程序(微信号 zxcx0101)现在就来告诉你。
我们先总览微信支付的一些基本情况。
微信支付有以下支付模式:
微信客户端内的网页支付 (JSAPI)
扫码支付 (PC 端,移动支付终端)
刷卡支付 (支付终端扫描)
app 支付 (iOS, Android)
各种支付交互流程可通过进行查看,在此不赘述。
关注微信号 zxcx0101,回复「支付文档」,获得微信支付文档原文链接。
1. 支付发起
所有支付方式都需要通过 「统一下单」的 API 来获取一个支付凭证。
但在小程序内测期间,还没有「统一下单」的概念。HTML 5 应用发起支付需要直接通过前端构造参数来发起(不经过后端验证),很容易造成支付凭证泄露等安全问题。
为此,微信支付将其流程进行了优化:在所有支付场景中插入「统一下单」的特性。推荐开发者在后端完成支付参数的构建等行为。
该优化带来以下好处:
尽可能让开发者不犯低级错误,造成财务损失。
简化构造支付参数的复杂度,所有支付方式可共享一个支付后端接口。
通过「统一下单」获取到相对应 prepay_id 或者 code_url 等参数,即可通过各种支付模式的 SDK 来进行微信支付的发起。
2. 支付结果接收
微信支付发起完成后,微信还需要提供一个通知系统,以便及时让应用知道用户已经完成支付,进行下一步的业务操作。
通知方式为一个 POST 请求,payload 为支付的状态信息,以及支付订单信息。
需要注意的是,必须对通知参数进行签名验证,以确保安全。
进行签名验证时,除去签名字段(一般参数名为: sign)不需要参与签名外,其余所有接收到的参数均需要参与签名。
3. 周边接口
通过 「支付发起」、「支付结果接收」,即可完成一个简单的微信支付系统。当然,微信还提供以下接口:
下载对账单
具体使用可以参考,根据自身业务情况适当的进行采用。
嗯,没错,我们吃了一次螃蟹。
在小程序刚内测的时候,我们就决定使用微信支付模块,毕竟我们要实现的是一个电商应用 (电商没支付算什么嘛)。
关注微信号 zxcx0101,回复「电商」,获得电商类小程序开发教程。
在开发过程中,我们掉了一些坑。
1. 支付凭证
小程序的微信支付需要单独去申请,因为小程序是有独立的 appid,不能使用以前的支付账户。
即使是全网发布也不能,因为小程序不是一个 HTML 5 应用。
2. 统一下单参数
统一下单时需要注意将 trade_type 设置为 JSAPI,同时 openid 需要使用与小程序相关联的 openid。
3. 签名方式
MD5!MD5!MD5!
微信公众文档有很多 SHA1, MD5 的签名要求,微信支付相关的签名,暂时暂时暂时都是使用 MD5。
小程序端在发起微信支付的时候,是通过以下方式来进行发起:
按照微信文档签名的要求,参与签名的字段应该为:
OK,按照签名算法得到的签名,去发起支付,居然提示失败了。
经过与微信对接人员沟通后,参与签名的字段还需要加上 appid,哦,不对,是 appId(请严重区分驼峰命名的大小写)。
对这样的结果我表示不服,随即我翻阅了微信支付所有文档,终于在微信 JSSDK 的文档中找到一行备注。
备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有 appId、timeStamp、nonceStr、package、signType。
怪我咯(黑人问号) ……
4. timestamp 类型
小程序端发起微信支付的方式已经贴在上面了,但没那么简单,继续贴文档说明。
timeStamp DateInt 时间戳从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间。
文档告诉我们 timeStamp 应该带着 int 类型传入。我们前端的同学照做了,然后就过来骂我。
你们后端参数是不是有问题!提示 timeStamp 不存在了都?
经过排查,传入的 timeStamp 的值类型应该为 String。
总体上,小程序接入微信支付还是比较简单的,没有过多复杂的设置。
如果之前开发过微信支付后端的开发者,还可以复用同一个支付模块。
微信文档的编写不严谨,使得开发舒爽度严重被削减。相信随着时间推进,文档会慢慢完善,毕竟以前也是这么过来的。
本文由知晓程序原创出品,关注微信号 zxcx0101,回复「我要体验」,获取亲手体验小程序的资格。
快速关注知晓程序↓↓↓
知晓程序(微信号 zxcx0101)是爱范儿旗下专注于小程序生态的公众号。我们提供最全面、新鲜的小程序资讯(消息、观点、指南、活动)和服务,在这里你能了解到关于小程序的一切。
有好的产品或者项目希望我们报道,猛戳这里
全新爱范儿 App 现已适配
Android 及 iPhone
使用微信扫码关注爱范儿微信公众号
关注爱范儿微信号,连接热爱,关注这个时代最好的产品。
想让你的手机好用到哭?关注这个号就够了。
关注玩物志微信号,就是让你乱花钱。小程序如何接入微信支付?你可能会遇上这些坑
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
| 时间 2016 |
作者 红领巾 ]
知晓程序(微信号 zxcx0101),让你了解小程序的一切。
微信支付于 2013 年正式发布,一路走来,作为内测开发团队的爱范儿明显感觉到,微信支付的接口稳定程度有质的提升,围绕支付相关的场景也配备了对应的接口。
微信小程序的发布,随机附送了一个微信支付模块,该模块使用起来的情况如何?知晓程序(微信号 zxcx0101)现在就来告诉你。
我们先总览微信支付的一些基本情况。
微信支付有以下支付模式:
微信客户端内的网页支付 (JSAPI)
扫码支付 (PC 端,移动支付终端)
刷卡支付 (支付终端扫描)
app 支付 (iOS, Android)
各种支付交互流程可通过微信支付文档进行查看,在此不赘述。
关注微信号 zxcx0101,回复「 支付文档 」,获得微信支付文档原文链接。
1. 支付发起
所有支付方式都需要通过 「统一下单」的 API 来获取一个支付凭证。
但在小程序内测期间,还没有「统一下单」的概念。HTML 5 应用发起支付需要直接通过前端构造参数来发起(不经过后端验证),很容易造成支付凭证泄露等安全问题。
为此,微信支付将其流程进行了优化:在所有支付场景中插入「统一下单」的特性。 推荐开发者在后端完成支付参数的构建等行为。
该优化带来以下好处:
尽可能让开发者不犯低级错误,造成财务损失。
简化构造支付参数的复杂度,所有支付方式可共享一个支付后端接口。
通过「统一下单」获取到相对应 prepay_id 或者 code_url 等参数,即可通过各种支付模式的 SDK 来进行微信支付的发起。
2. 支付结果接收
微信支付发起完成后,微信还需要提供一个通知系统,以便及时让应用知道用户已经完成支付,进行下一步的业务操作。
通知方式为一个 POST 请求,payload 为支付的状态信息,以及支付订单信息。
需要注意的是,必须对通知参数进行签名验证,以确保安全。
进行签名验证时,除去签名字段(一般参数名为 : sign )不需要参与签名外,其余所有接收到的参数均需要参与签名。
3. 周边接口
通过 「支付发起」、「支付结果接收」,即可完成一个简单的微信支付系统。当然,微信还提供以下接口:
下载对账单
具体使用可以参考微信支付文档,根据自身业务情况适当的进行采用。
嗯,没错,我们吃了一次螃蟹。
在小程序刚内测的时候,我们就决定使用微信支付模块,毕竟我们要实现的是一个电商应用 (电商没支付算什么嘛)。
关注微信号 zxcx0101,回复「 电商 」,获得电商类小程序开发教程。
在开发过程中,我们掉了一些坑。
1. 支付凭证
小程序的微信支付需要单独去申请,因为小程序是有独立的 appid,不能使用以前的支付账户。
即使是全网发布也不能,因为小程序不是一个 HTML 5 应用。
2. 统一下单参数
统一下单时需要注意将 trade_type 设置为 JSAPI,同时 openid 需要使用与小程序相关联的 openid。
3. 签名方式
MD5!MD5!MD5!
微信公众文档有很多 SHA1, MD5 的签名要求,微信支付相关的签名,暂时暂时暂时都是使用 MD5。
小程序端在发起微信支付的时候,是通过以下方式来进行发起:
按照微信文档签名的要求,参与签名的字段应该为:
OK,按照签名算法得到的签名,去发起支付,居然提示失败了。
经过与微信对接人员沟通后,参与签名的字段还需要加上 appid ,哦,不对,是 appId (请严重区分驼峰命名的大小写)。
对这样的结果我表示不服,随即我翻阅了微信支付所有文档,终于在微信 JSSDK 的文档中找到一行备注。
通过微信支付统一下单接口拿到,
采用统一的微信支付
签名生成方法,注意这里
也要参与签名,
一致,即最后参与签名的参数有
怪我咯……
4. timestamp 类型
小程序端发起微信支付的方式已经贴在上面了,但没那么简单,继续贴文档说明。
timeStamp DateInt
时间戳从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间。
文档告诉我们 timeStamp 应该带着 int 类型传入。我们前端的同学照做了,然后就过来骂我。
你们后端参数是不是有问题!提示
不存在了都?
经过排查,传入的 timeStamp 的值类型应该为 String 。
总体上, 小程序接入微信支付还是比较简单的 ,没有过多复杂的设置。
如果之前开发过微信支付后端的开发者,还可以复用同一个支付模块。
微信文档的编写不严谨,使得开发舒爽度严重被削减。相信随着时间推进,文档会慢慢完善,毕竟以前也是这么过来的。
本文由知晓程序原创出品,关注微信号 zxcx0101,回复「 上手 」获取全网最值得看的小程序上手体验系列文章。
快速关注知晓程序↓↓↓
本文网络安全相关术语:网络安全工程师 网络信息安全 网络安全技术 网络安全知识
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
CodeSecTeam微信公众号
循路觅宗师,形影不相离,师知吾亦知,吾乃成宗师。
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.net

我要回帖

更多关于 微信小程序 支付宝 的文章

 

随机推荐