网上已经有很多paypay ipn的文章了,只不过他们都是用paypal的购物车。因为我只是用来作为一个付款渠道,因此,我得先生成订单,然后引导客户去paypal付款。

1.转去付款页面

代码
    <form id="payForm" method="post" action="<%Response.Write(URL);%>">
        
<input type="hidden" name="cmd" value="<%Response.Write(cmd);%>" />
        
<input type="hidden" name="business" value="<%Response.Write(business);%>" />
        
<input type="hidden" name="item_name" value="<%Response.Write(item_name);%>" /> 
        
<input type="hidden" name="amount" value="<%Response.Write(amount);%>" />
        
<input type="hidden" name="no_shipping" value="<%Response.Write(no_shipping);%>" />
        
<input type="hidden" name="return" value="<%Response.Write(return_url);%>" />
        
<input type="hidden" name="rm" value="<%Response.Write(rm);%>" />
        
<input type="hidden" name="notify_url" value="<%Response.Write(notify_url);%>" />
        
<input type="hidden" name="cancel_return" value="<%Response.Write(cancel_url);%>" />
        
<input type="hidden" name="currency_code" value="<%Response.Write(currency_code);%>" />
        
<input type="hidden" name="custom" value="<%Response.Write(request_id);%>" />
    
</form>

    
<script  type="text/javascript" language="javascript">
    document.forms[
"payForm"].submit();
    
</script>

url 就是付款的网址

notify_url用于paypal更新状态的网址,最好使用https,当然了http也行

return 用于返回的网址,个人觉得没啥太大用处,还不如指回到订单页面

custom用于传递特殊的值,paypal回调notify_url的时候会传递,可以验证请求有效性,是隐藏传递的。

 

2.付款确认的页面

 将参数加上"&cmd=_notify-validate"回传回付款网址

如果response的值是VERIFIED的时候,表示请求是从paypal出来的

然后用他的request里面的变量判断数据是否正确,比如金额,产品价格、收款人等等

如果这些都对的话,那么就放心的更新订单的付款状态了。

3.paypal只有在确认付款后, payment_status才会等于Completed

 

posted @ 2010-06-02 15:08 深渊野鱼 阅读(270) 评论(0) 编辑

之前一个项目需要用天敏的卡做图片采集

实现是可以做,但是缺点是:1 图片没法子实时抓取,会滞后1秒左右,客户没法子接受。。。。

                                     2 不知道是我没有处理好还是什么,很容易导致CPU 很高

                          优点:1 SDK真简单,相比之下,directshow实在是太麻烦了

 

 

posted @ 2010-06-02 14:50 深渊野鱼 阅读(58) 评论(0) 编辑

中文的,主要是%date的使用。

可以通过截取获得日期对应的星期几。

 

EXP userid=user/password@oracledatabase file=C:\dumpfolder\%date:~11,3%.dmp

 

echo %date:~11,3%

得到"星期五";

 

echo %date%
得到"2009-04-24 星期五"
posted @ 2009-04-24 14:58 深渊野鱼 阅读(160) 评论(0) 编辑
对于SQL语句
select nvl(to_char(floor(avg((apfndtm-apdldtm)*24*3600))),0) from emflib.eqapypf 
 where apydat >= 20080902 and apydat <= 20080902 and apcfmfg ='C' and apapyfg='A' and  apytim >= 090000 and apytim <= 173000 AND apdeal >= 0 and apntg3 = 0 and apctg4='FANGXN'

如果使用参数化的
速度慢
select nvl(to_char(floor(avg((apfndtm-apdldtm)*24*3600))),0) from emflib.eqapypf 
 where apydat >= :apydat1 and apydat <= :apydat2 and apcfmfg =:apcfmfg and apapyfg=:apapyfg and  apytim >= :apytim1
 and apytim <= :apytim2 AND apdeal >= :apdeal and apntg3 = :apntg3 and apctg4=:apctg4

如下这条,少了一个条件,速度倒还可以
select nvl(to_char(floor(avg((apfndtm-apdldtm)*24*3600))),0) from emflib.eqapypf 
 where apydat >= :apydat1 and apydat <= :apydat2 and apcfmfg =:apcfmfg and apapyfg=:apapyfg and  apytim >= :apytim1
 and apytim <= :apytim2 AND apdeal >= :apdeal and apntg3 = :apntg3

如果把SQL改成
select nvl(to_char(floor(avg((apfndtm-apdldtm)*24*3600))),0) from emflib.eqapypf 
 where apydat >= :apydat1 and apydat <= :apydat2 and apcfmfg =:apcfmfg and apapyfg=:apapyfg and  apytim >= :apytim1
 and apytim <= :apytim2 AND apdeal >= :apdeal and apntg3 = :apntg3  and apctg4='FANGXN'
那么速度也是暴快,真是汗,有些搞不明白为何如此。数据分布
    apctg4         count(*)
1    HUANGJF       106
2    ZHANGYJ       117
3    LINLIJU       2
4    WEISQ         53
5    ZHANGDC       28
6    FANGXN        217
7    LDWANGL       166
8    LINYZ         166
9    SHIXY         184
10    SHAONH        163
11    LIYY          160
12    LDCHENWF      9


根据经验估计,虽然是全部的SQL参数,但是SQL访问计划可能因为数据的分布或者SQL的统计信息的不及时,倒是ORACLE使用全表扫描,而使用直接SQL则可以使其又归回正确的轨道。不过看来,额滴ORACLE功底还是不够深,如果有人晓得,烦请告知原因,实在是没有精力挖那么深啊
posted @ 2008-09-02 16:57 深渊野鱼 阅读(90) 评论(0) 编辑
因为一个客户要把虚拟主机转成另外一种类型 ,结果需要转移服务器,迁移到另外一台机器,log4net死活生成不了日志,并且sqlite的写入一直是失败的。后来查了下,肯定是权限缺失。比如asp.net无法写入,后来让虚拟主机的技术支持把权限设置成完全,才彻底搞定。不过他们公司有一台服务器死活就是不行,这个也够汗的,或许那台服务器死活就是要和我作对。。。

另外不晓得为什么公司服务器最近权限更改后,log4net日志怎么都没法子写入.........
posted @ 2008-08-07 15:22 深渊野鱼 阅读(157) 评论(0) 编辑
这几天新装的系统,把一应齐全都给装了,norton 360safe U盾 开发软件,还有一堆乱七八糟的软件。
貌似没有问题的情况下,做了一个ghost.
没想到这两天,发现输入东西的时候,当前窗口的焦点老是丢失,哇咔咔,以前曾经碰到问题是由于杀毒软件引起的,
于是乎决定试着把罪怪到norton.不料删除的时候,建欣说他好像也遇见过,似乎是一个叫hhukcert的进程引起的,于是咔嚓了那个进程,没问题了。5555,norton已经没法子停止删除。哎,只能再次装了,再次更新病毒库。消耗了一个小时。
这个罪魁祸首的hhukcert就是工行U盾的华虹的驱动带的,想起来一个堂堂的中国工行下的人做出来的程序居然没测试通过就发布,极大的损害了我们对工行的信任。
于是乎,系统重启后,把hhukcert的服务给关了,下次要用U盾的时候再打开即可~~。
工商银行做出来也不保障,失败啊,失败啊。
posted @ 2008-07-22 22:32 深渊野鱼 阅读(204) 评论(0) 编辑
摘要: iframe是一个一个的打开有时候客户有不同的要求,就必须得用iframe但是iframe的打开速度实在是那个慢啊,后来搜搜搜,终于发现终极之道-javascipt在body 的onload的时候指定frame的location,发现速度快的不是一般的多.for example:1<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"...阅读全文
posted @ 2008-05-06 14:48 深渊野鱼 阅读(505) 评论(1) 编辑
摘要: 如何向远程系统提交命令?解答 我们知道,在分布式数据处理的环境下,对远程系统上文件内容的操作可以有很多方式,但是如果想简单地在本地对远程系统进行文件管理方面的操作,则可以由一条命令实现:SBMRMTCMD。现在介绍该命令的用法:1. 首先确保双方系统上的分布式处理服务已启动:STRTCPSVR SERVER(*DDM)2. 为目标系统创建DDM文件:CRTDDMF FILE(Lib/TESTAAA...阅读全文
posted @ 2008-01-09 15:14 深渊野鱼 阅读(289) 评论(2) 编辑
摘要: RUNRMTCMD命令使用解答 能够向client access发送命令的系统包括AS/400,VM,AIX以及其他版本的UNIX。发送的命令应当预先在PC的DOS窗口运行,如果有输出,在把输出内容传送到OS/400并产生相应的spool file(QSYSPRT,使用的print file为QSYSPRT);如果命令本身并不产生输出则也会产生一个spool file,内容是无输出。从OS/400...阅读全文
posted @ 2008-01-09 15:13 深渊野鱼 阅读(515) 评论(0) 编辑
摘要: OS/400与UNIX功能相似的部分命令解答 对于大多数SAP的用户,比较习惯UNIX及WINDOWS命令,而对于OS/400的命令缺少使用经验,这里结合SAP系统经常用到的命令,比较OS/400与UNIX功能相似的命令及其格式。1.与文件系统有关的命令:unix命令 对应的AS/400的命令--------------------------------------------cd ------...阅读全文
posted @ 2008-01-09 15:08 深渊野鱼 阅读(386) 评论(0) 编辑