微信支付v2开发(11) Native支付
关键字:微信公众平台 微信支付 Native原生支付
作者:方倍工作室
原文:http://www.cnblogs.com/txw1958/p/wxpay-native.html
在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的Native功能。
本文分为以下三个部分:
- 生成Native支付URL
- 生成二维码
- 生成Package
一、生成Native支付URL
Native(原生)支付URL是一系列具有weixin://wxpay/bizpayurl?前缀的URL,同时后面紧跟着一系列辨别商户的键值对。Native(原生)支付URL的规则如下:
weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXXX&productid=XXXXXX×tamp=XXXXXX&noncestr=XXXXXX
生成代码如下
- 1 <?php
- 2 include_once("WxPayHelper.php");
- 3 $wxPayHelper = new WxPayHelper();
- 4 echo $wxPayHelper->create_native_url("1234567890");
- 5 ?>
其中productid是商品唯一id,开发人员需要定义并维护自己的商品id,这个id与一张订单等价,微信后台凭借该id通过POST商户后台获取交易信息。
上述代码生成的URL如下:
- weixin://wxpay/bizpayurl?appid=wxb489e8caeabcdefg&noncestr=BBvdr5atZ9D7s08X&productid=1234567890&sign=e15d2466a85cd62b530e2f690604e7502f67ccb5×tamp=1408025996
二、生成二维码
生成二维码可以用第三方接口,也可以使用自己的代码或插件,这里介绍PHP QR Code。
PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.sourceforge.net/。
其生成二维码的语法非常简单,直接填入URL当参数即可。范例如下
- include 'phpqrcode.php';
- QRcode::png('http://www.cnblogs.com/txw1958/');
这样就生成了一个支付的二维码。
三、生成Package
当用户扫描上述二维码的时候,会调用Native支付URL,URL需要调用订单信息Package返回给用户,而该Package由WxPayHelper类的create_native_package()实现,调用代码如下:
- 1 <?php
- 2 include_once("WxPayHelper.php");
- 3
- 4 $commonUtil = new CommonUtil();
- 5 $wxPayHelper = new WxPayHelper();
- 6 $wxPayHelper->setParameter("bank_type", "WX");
- 7 $wxPayHelper->setParameter("body", "方倍工作室微信支付开发教程");
- 8 $wxPayHelper->setParameter("partner", "1900000109");
- 9 $wxPayHelper->setParameter("out_trade_no", $commonUtil->create_noncestr());
- 10 $wxPayHelper->setParameter("total_fee", "1");
- 11 $wxPayHelper->setParameter("fee_type", "1");
- 12 $wxPayHelper->setParameter("notify_url", "htttp://www.baidu.com");
- 13 $wxPayHelper->setParameter("spbill_create_ip", "127.0.0.1");
- 14 $wxPayHelper->setParameter("input_charset", "GBK");
- 15 echo $wxPayHelper->create_native_package();
- 16 ?>
当用户扫描二维码后,将直接跳到商品页面,如下所示
这样一个Native支付就形成了。
微信支付v2开发(11) Native支付的更多相关文章
- 微信支付开发(11) Native支付
关键字:微信公众平台 微信支付 Native原生支付作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/wxpay-native.html 由于微信支付接口更新,本 ...
- 微信支付v2开发(10) 全网发布
关键字:微信公众平台 微信支付 全网发布 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wxpay-publish.html 在这篇微信公众平台开发教程中, ...
- 微信支付v2开发(5) 订单查询
本文介绍微信支付中订单查询功能的实现. 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/wxpay-order-query.html 一.订单查询 因为某一方 ...
- 微信支付v2开发(1) 微信支付URL配置
本文介绍微信支付申请时如何设置授权目录及URL. 在申请微信支付时,第一项就会碰到下图的配置. 下面就对这一设置进行讲解! 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生 ...
- 微信支付v2开发(3) JS API支付
本文介绍如何使用JS API支付接口完成微信支付. 一.JS API支付接口(getBrandWCPayRequest) 微信JS API只能在微信内置浏览器中使用,其他浏览器调用无效.微信提供get ...
- 微信支付v2开发(8) 维权通知
本文介绍微信支付中如何获得维权通知. 一.维权通知URL 在 微信支付开发(1) 微信支付URL配置 已提到,维权通知URL为 http://www.doucube.com/wxpay/rights. ...
- 微信支付v2开发(7) 告警通知
本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...
- 微信支付v2开发(6) 发货通知
本文介绍微信支付中发货通知功能的实现. 一.发货通知 为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知API告知微信后台该订单的发货状态. 发货时间限制:虚拟.服务类24小时内 ...
- 微信支付v2开发(4) 交易通知
本文介绍如何使用JS API支付时如何获得交易通知. 一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果 ...
随机推荐
- Linux系统安全加固(一)
Linux系统安全加固(一) 去年8月,某所网站遭黑客攻击瘫痪虽然港交所随后及时启用备用系统,但还是致使7支股票1支债卷被迫停牌,次日再次遭受攻击而瘫痪:在去年年底继CSDN信息安全出现之后, ...
- window安装MQTT服务器和client
http://activemq.apache.org/apollo/download.html 官方下载地址 MQTT目录: MQTT简单介绍 window安装MQTT服务器和client ja ...
- Unity 实现Log实时输出到屏幕或控制台上<一>
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/49818953 作者:car ...
- Objective-C method及相关方法分析
## Objective-C method及相关方法分析 转载请注名出处 [http://blog.csdn.net/uxyheaven](http://blog.csdn.net/uxyheaven ...
- ip6tables: ipv6-icmp vs icmp
ip6tables: ipv6-icmp vs icmp资料来源 https://www.jethrocarr.com/2013/02/09/ip6tables-ipv6-icmp-vs-icmp/I ...
- es8 --- 新特性
ES8尚未发布(2017年1月),下面是它已经完成起草的一些特性: Object.values() Object.entries() padStart() padEnd() Object.getOwn ...
- 59.C++与正则表达式
regex_match 整个字符串是否匹配 (通过cmatch存储匹配的结果),match[0]代表整个匹配序列,match[1]代表第1个匹配后的子序列,match[2]代表第2个匹配后的子序列 代 ...
- AtCoder Grand Contest 018 A - Getting Difference
A - Getting Difference Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement ...
- Laravel输出sql语句
$queries = DB::getQueryLog();
- 一个简易版的Angular js 三层 示例
var myApp = angular.module('produceline', []); myApp.factory('ajax', ["$http", "$q&qu ...