微信开放支付接口申请,所有认证过的服务号均可申请

  “微信支付”终于来了!

  一直让大家翘首以盼的微信最核心的杀手锏——“微信支付”终于开放申请了!今天微信团队在官网发布消息,微信公众平台支付功能已正式开放申请,已开通公众号的开发者可以登录公众平台申请 App 支付功能。未开通公众号的 APP 开发者,我们将在近期开放,届时可在微信开放平台申请。

  此次微信支付开放申请主要向微信公众账号中的服务账号,所有之前经过认证的服务账号,均有资格申请微信支付接口。据了解,申请微信支付,需要填写商户基本资料、业务基本资料、财务审核资料。通过审核了的商户才能进入开发流程,通过开发接口文档的指引,完成开发。此后签订合同并缴纳保证金后,申请全网发布,即可开通微信支付能力。

  在此之前,微信一直没有明确“支付接口”的申请规则,只有极小部分商家获取到了内测的资格。全面开放支付接口的申请,也意味着经过数月的测试,微信的支付能力,以及和线下移动支付场景的匹配,已经基本达到预期,是时候放开手脚,大举进军移动支付领域了。

  在不久之前,微信公众平台刚刚调整过一次公众账号认证体系,订阅号可获得“自定义菜单”接口,而服务号则可获取所有高级接口。全面开放支付接口的申请,之前所有关于微信服务账号的想象,都将得以落地。

  另外据我们了解,除了全面开放支付接口,微信还将推出线下 POS 机——微 POS。微 POS 主要面向本地生活服务商家提供支付解决方案,商家通过服务员端输入金额后,自动生成二维码,消费者使用微信扫码进入支付页面,输入密码后完成支付。

  也就是说,不仅仅是推广电子支付,微信还想要借助“微信支付”颠覆传统的线下支付,将整个生活服务领域的支付场景和微信支付进行融合。开放微信支付接口,也意味着微信已经准备就绪,将大大加速这一过程。

微信支付申请指引https://mp.weixin.qq.com/cgi-bin/readtemplate?t=news/app-apply-guide_tmpl&lang=zh_CN

微信商户服务中心https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/faq_tmpl

ERROR: The version of SQL Server in use does not support datatype 'datetime2'

我把程序中的Entity Framework的SQL2012的数据库转为SQL2005后

出现了错误:

The version of SQL Server in use does not support datatype 'datetime2'.

解决办法:

把.edmx后缀文件中的

<Schema Namespace="NerdDinnerModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2012" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">

改为

<Schema Namespace="NerdDinnerModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">

即可

微软开放了.NET 4.5.1的源代码

.NET Reference Source 发布了 beta 版,可以在线浏览 .NET Framework 4.5.1 的源代码,并且可以通过配置,在 Visual Studio 2013 中调试 .NET Framework

  .NET Framework 团队的项目经理 Alok Shriram 在.NET Framework 的博客中撰文介绍了最新的 .NET Reference Source。它不仅可以用来浏览最新的 .NET 代码,而且通过强大的 Roslyn,改善了“Go to Defination”和“Finding Reference”的在线体验。此外,开发者还可以下载整个源代码包,在 Visual Studio 中打开并浏览。使用 Schabse Laks 编写的插件,可以在 VS 中直接导航到该网站。

  通过简单的配置,开发者可以在 Visual Studio 中单步调试 .NET Framework 4.5.1 及其后续补丁和更新。这无疑是广大开发者翘首以盼的功能。启动 Visual Studio 2013,打开 Tools -> Options -> Debugging -> General 菜单,进行如下配置:

  • 禁用 Just My Code
  • 禁用 Step over properties and operators
  • 禁用 Require source files to exactly match the original version
  • 选中 Enable .NET Framework source stepping
  • 选中 Enable source server support

  这样,开发者在调试代码时,就可以通过 F11 直接进入 .NET 代码。

  这并不是微软第一次开放 .NET Framework 的源代码。早在 2007 年,他们就第一次公布了 .NET 3.5 的源代码并支持 Visual Studio 调试。并且对于后续的 4.0 和 4.5,也都提供了相应的源代码包。但当框架升级时,这些旧的包就变得毫无价值了。从 4.5.1 开始,.NET Framework 团队彻底改变了符号索引和发布的过程,使其与构建过程同步,这样在新版本发布时,相应的 PDB 文件也会从 Reference Source 网站进行更新。

  目前的 beta 站点只是临时的,届时将会取代现在的旧站点。后续微软也会将还未公布源代码的程序集逐步添加进来。

  新的 .NET Reference Source 许可协议回归到了 MS-RSL,这也使得像 Mono 这样的团队可以放心大胆地使用。

  正如 Scott Hanselman所说:微软可能并不是开源的,但却绝对是源代码开放的。

SQL Server 2005/2008 加密存储过程解密

SQL Server 2005 以上存储过程无法进行查看和编辑,解密存储过程代码如下:

Create PROCEDURE [dbo].[sp_windbi$decrypt]
(@procedure sysname = NULL, @revfl int = 1)
AS
/*
调用形式为:
exec dbo.sp__windbi$decrypt @procedure,0
如果第二个参数使用1的话,会给出该存储过程的一些提示。
--版本4.0  修正存储过程过长解密出来是空白的问题
*/
SET NOCOUNT ON
IF @revfl = 1
BEGIN
PRINT '警告:该存储过程会删除并重建原始的存储过程。'
PRINT ' 在运行该存储过程之前确保你的数据库有一个备份。'
PRINT ' 该存储过程通常应该运行在产品环境的一个备份的非产品环境下。'
PRINT ' 为了运行这个存储过程,将参数@refl的值更改为0。'
RETURN 0
END
DECLARE @intProcSpace bigint, @t bigint, @maxColID smallint,@procNameLength int
select @maxColID = max(subobjid) FROM
sys.sysobjvalues WHERE objid = object_id(@procedure)
--select @maxColID as 'Rows in sys.sysobjvalues'
select @procNameLength = datalength(@procedure) + 29
DECLARE @real_01 nvarchar(max)
DECLARE @fake_01 nvarchar(max)
DECLARE @fake_encrypt_01 nvarchar(max)
DECLARE @real_decrypt_01 nvarchar(max),@real_decrypt_01a nvarchar(max)
declare @objtype varchar(2),@ParentName nvarchar(max)
select @real_decrypt_01a = ''
--提取对象的类型如是存储过程还是函数,如果是触发器,还要得到其父对象的名称
select @objtype=type,@parentname=object_name(parent_object_id)
from sys.objects where [object_id]=object_id(@procedure)
-- 从sys.sysobjvalues里提出加密的imageval记录
SET @real_01=(SELECT top 1 imageval FROM sys.sysobjvalues WHERE objid =
object_id(@procedure) and valclass = 1 order by subobjid)

--创建一个临时表
create table #output ( [ident] [int] IDENTITY (1, 1) NOT NULL ,
[real_decrypt] NVARCHAR(MAX) )
--开始一个事务,稍后回滚
BEGIN TRAN
--更改原始的存储过程,用短横线替换
if @objtype='P'
  SET @fake_01='ALTER PROCEDURE '+ @procedure +' WITH ENCRYPTION AS select 1
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
else if @objtype='FN'
  SET @fake_01='ALTER FUNCTION '+ @procedure +'() RETURNS INT WITH ENCRYPTION AS BEGIN RETURN 1
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/ END'
else if @objtype='V'
  SET @fake_01='ALTER view '+ @procedure +' WITH ENCRYPTION AS select 1 as col
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
else if @objtype='TR'
  SET @fake_01='ALTER trigger '+ @procedure +' ON '+@parentname+'WITH ENCRYPTION AFTER INSERT AS RAISERROR (''N'',16,10)
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
EXECUTE (@fake_01)
--从sys.sysobjvalues里提出加密的假的
SET @fake_encrypt_01=(SELECT top 1 imageval FROM sys.sysobjvalues WHERE objid =
object_id(@procedure) and valclass = 1 order by subobjid )
if @objtype='P'
  SET @fake_01='Create PROCEDURE '+ @procedure +' WITH ENCRYPTION AS select 1
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
else if @objtype='FN'
  SET @fake_01='CREATE FUNCTION '+ @procedure +'() RETURNS INT WITH ENCRYPTION AS BEGIN RETURN 1
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/ END'
else if @objtype='V'
  SET @fake_01='Create view '+ @procedure +' WITH ENCRYPTION AS select 1 as col
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
else if @objtype='TR'
  SET @fake_01='Create trigger '+ @procedure +' ON '+@parentname+'WITH ENCRYPTION AFTER INSERT AS RAISERROR (''N'',16,10)
  /**//*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/'
--开始计数
SET @intProcSpace=1
--使用字符填充临时变量
SET @real_decrypt_01 = replicate(cast('A'as nvarchar(max)), (datalength(@real_01) /2 ))
--循环设置每一个变量,创建真正的变量
--每次一个字节
SET @intProcSpace=1
--如有必要,遍历每个@real_xx变量并解密
WHILE @intProcSpace<=(datalength(@real_01)/2)
BEGIN
--真的和假的和加密的假的进行异或处理
SET @real_decrypt_01 = stuff(@real_decrypt_01, @intProcSpace, 1,
NCHAR(UNICODE(substring(@real_01, @intProcSpace, 1)) ^
(UNICODE(substring(@fake_01, @intProcSpace, 1)) ^
UNICODE(substring(@fake_encrypt_01, @intProcSpace, 1)))))
SET @intProcSpace=@intProcSpace+1
END

--通过sp_helptext逻辑向表#output里插入变量
insert #output (real_decrypt) select @real_decrypt_01
--select real_decrypt AS '#output chek' from #output --测试
-- -------------------------------------
--开始从sp_helptext提取
-- -------------------------------------
declare @dbname sysname
,@BlankSpaceAdded int
,@BasePos int
,@CurrentPos int
,@TextLength int
,@LineId int
,@AddOnLen int
,@LFCR int --回车换行的长度
,@DefinedLength int
,@SyscomText nvarchar(max)
,@Line nvarchar(255)
Select @DefinedLength = 255
SELECT @BlankSpaceAdded = 0 --跟踪行结束的空格。注意Len函数忽略了多余的空格
CREATE TABLE #CommentText
(LineId int
,Text nvarchar(255) collate database_default)
--使用#output代替sys.sysobjvalues
DECLARE ms_crs_syscom CURSOR LOCAL
FOR SELECT real_decrypt from #output
ORDER BY ident
FOR READ ONLY
--获取文本
SELECT @LFCR = 2
SELECT @LineId = 1
OPEN ms_crs_syscom
FETCH NEXT FROM ms_crs_syscom into @SyscomText
WHILE @@fetch_status >= 0
BEGIN
SELECT @BasePos = 1
SELECT @CurrentPos = 1
SELECT @TextLength = LEN(@SyscomText)
WHILE @CurrentPos != 0
BEGIN
--通过回车查找行的结束
SELECT @CurrentPos = CHARINDEX(char(13)+char(10), @SyscomText,
@BasePos)
--如果找到回车
IF @CurrentPos != 0
BEGIN
--如果@Lines的长度的新值比设置的大就插入@Lines目前的内容并继续
While (isnull(LEN(@Line),0) + @BlankSpaceAdded +
@CurrentPos-@BasePos + @LFCR) > @DefinedLength
BEGIN
SELECT @AddOnLen = @DefinedLength-(isnull(LEN(@Line),0) +
@BlankSpaceAdded)
INSERT #CommentText VALUES
( @LineId,
isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText,
@BasePos, @AddOnLen), N''))
SELECT @Line = NULL, @LineId = @LineId + 1,
@BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0
END
SELECT @Line = isnull(@Line, N'') +
isnull(SUBSTRING(@SyscomText, @BasePos, @CurrentPos-@BasePos + @LFCR), N'')
SELECT @BasePos = @CurrentPos+2
INSERT #CommentText VALUES( @LineId, @Line )
SELECT @LineId = @LineId + 1
SELECT @Line = NULL
END
ELSE
--如果回车没找到
BEGIN
IF @BasePos <= @TextLength
BEGIN
--如果@Lines长度的新值大于定义的长度
While (isnull(LEN(@Line),0) + @BlankSpaceAdded +
@TextLength-@BasePos+1 ) > @DefinedLength
BEGIN
SELECT @AddOnLen = @DefinedLength -
(isnull(LEN(@Line),0) + @BlankSpaceAdded)
INSERT #CommentText VALUES
( @LineId,
isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText,
@BasePos, @AddOnLen), N''))
SELECT @Line = NULL, @LineId = @LineId + 1,
@BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded =
0
END
SELECT @Line = isnull(@Line, N'') +
isnull(SUBSTRING(@SyscomText, @BasePos, @TextLength-@BasePos+1 ), N'')
if LEN(@Line) < @DefinedLength and charindex(' ',
@SyscomText, @TextLength+1 ) > 0
BEGIN
SELECT @Line = @Line + ' ', @BlankSpaceAdded = 1
END
END
END
END
FETCH NEXT FROM ms_crs_syscom into @SyscomText
END
IF @Line is NOT NULL
INSERT #CommentText VALUES( @LineId, @Line )
select Text from #CommentText order by LineId
CLOSE ms_crs_syscom
DEALLOCATE ms_crs_syscom
DROP TABLE #CommentText
-- -------------------------------------
--结束从sp_helptext提取
-- -------------------------------------
--删除用短横线创建的存储过程并重建原始的存储过程
ROLLBACK TRAN
DROP TABLE #output
go

TFS2013升级Update 2错误 - TFS255440

TF255440: The following account has a SQL Server login, but the login was denied access: lsw\lishewen. The server selected to host the databases for Team Foundation Server is: lswserver. The SQL Server login associated with the user account must be granted access to the SQL Server instance on that server.

解决方法:

首先将你的账号加入sqlserver管理员组(如果是,则不用加)

如security\logins下添加账号   赋予systemadmin,serveradmin权限

利用旧版Android漏洞的E-Z-2-Use攻击代码发布

  利用 Android 操作系统 WebView 编程接口漏洞的攻击代码已作为一个模块加入到开源漏洞利用框架 Metasploit 中。漏洞影响 Android 4.2 之前的版本,Google 在 Android 4.2 中修正了这个漏洞,但根据官方统计,超过五成用户仍然使用存在漏洞的旧版本。

  WebView 的漏洞允许攻击者在 Android 浏览器和其它应用中注入恶意 JavaScript 代码,获得与目标程序相同的访问权限,攻击者可以开启一个 shell 窗口访问受害者的文件系统、照相机,地理位置数据、SD 卡数据和地址簿。漏洞还可通过不安全网络的中间人攻击触发。漏洞存在于 Android 系统中,而不是私有的 GMS 应用平台,只有更新系统才能修正漏洞。安全研究人员 Tod Beardsley 希望,攻击代码的披露能迫使供应商尽快升级系统。

ECShop实现立刻购买与添加到购物车并存的方法

在后台开启“一步购物则”可以不用到购物车“直接结算” 。从而实现立刻购买。然而购物车的功能又没有了。有没有像淘宝那样即可以立刻购买。又有购物车功能呢?

    1、首先我们先将“添加购物车”的跳转链接复制替换“收藏商品”的按钮上然后设一个bool值为1 。

<a href="javascript:bool =1;addToCart({$goods.goods_id})">。

    2、然后打开JS处理文件“common.js” ,在这个脚本的第一行代码之上加一个全局变量var bool =0; 查找点击购物车之后的那条链接即:flow.php?step=cart  ,找到这个(在第88行
那块)之后,在下面加这句话(bool == 1) && (cart_url = 'flow.php?step=consignee');

    意思是 当bool = 1 条件满足时 则cart_url链接到  'flow.php?step=consignee' 直接购买的页面

    这样就实现了“立刻购买”与“添加到购物车”并存的方法

如何在Windows Store应用闪退的时候自动生成dump

    当开发者在测试或者用户使用Windows store 应用的时候,我们可能希望Windows store程序能够在发生异常的时候自动生成dump文件以便于以后分析。在写桌面应用的时候,我们可以通过调用API MiniDumpWriteDump来实现。但是这个API在Windows store应用中是不被支持的。那么有没有其他办法来生成dump了呢? 其实以前的Windows Error Reporting机制针对Windows store应用还是有效的,所以你可以通过改写注册表的办法让应用程序自动生成dump,具体步骤如下:

1) 运行REGEDIT.EXE 找到 “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps”. 如果该键不存在的话则新建LocalDumps 键,。

2) 创建一个与你的Windows store应用进程同名的子键,比如说MyApp.exe。

3) 在子键中创建一个名为DumpFolder,类型为REG_EXPAND_SZ的值,设置它的值为你需要生成dump的目录(保证要存在),比如说C:\Dumps。

4) 在同一个子键中创建一个名为DumpCount,类型为REG_DWORD的值,设置他的值为5 (生成dump的最大数目)。

5) 在同一个子键中创建一个名为DumpType,类型为REG_DWORD的值,设置他的值为2 (full dump)。

其结果如图所示:

这样在你的Windows store应用闪退的时候就可以自动得到full dump了。你可以将上述注册表键值放在一个注册表文件中,当用户有闪退的情况是,让用户倒入该注册表文件,然后将生成的dump文件上传。