posts - 123, comments - 209, trackbacks - 3, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

.net下paypal的电子支付方式编程(1)

Posted on 2006-02-07 17:02 myzerg 阅读(4067) 评论(35)  编辑 收藏 所属分类: .net和电子商店

11个月后[20070122]我再次对本文勘误,呵呵
apiPassword  是 API Username  的密码 在paypal上面设定的
certPassword 是导出证书的密码,是你在本地设定的


本文只讨论并记述了利用paypal Express Checkout方式支付,目前中文的paypal(贝宝)不能和其他paypal互相支付,可能是因为国内汇市还未开放的问题,这里因为我的客户不需要处理贝宝,所以我也没有看他的资料,但我想应该差不多。本文很多地方是引用PP_WebsitePaymentsPro_IntegrationGuide.pdf 中内容并汉化了,但其中有些细节的地方,本人做了详细说明,这样可以减少您开发时候的一些迷惑,所以,当你看到有熟悉文字时,请理解作者的苦心,呵呵,有问题的朋友可以在这里或在西客集留言来找我

众所周知 paypal是ebay旗下的电子支付网关,去年还收购了Verisign,啧啧,难道他要一统电子支付的江湖?

paypal 本身是通过Email就可以收取或支付钱的电子支付网关,但他也同时支持对信用卡如 VISA Card, MasterCard, American Express,

Discover Card这些烂玩意儿收取,如同Verisign那样,并称为paypal Direct payments,但听说手续费太贵了,我的客户没有用它的这个功能,所以我也没有研究,但我想既然我们目前使用的Verisign都让人家收购了,我想我们用他的Direct payments日子也不远了

还有一种比较简单的称为WebsitePaymentsStandard支付方式,这个比较简单,比较适合在虚拟主机上架设自己电子商务网站的用户,而WebsitePaymentsPro才是一个成熟电子商务网站需要的,下面请听寡人一一为您道来

1 安装篇
 这里不得不说paypal做的仔细,竟然专门开发了一个称为sandbox[我叫他傻盒,呵呵]用来进行开发人员测试,精力充沛阿

 a 安装Microsoft .NET Framework Service Pack 1 或者你直接用 Microsoft .NET Framework2.0
 
 b 安装OpenSSL for Microsoft Windows ,没有的朋友去http://www.slproweb.com/products/Win32OpenSSL.html 找并安装

 c 安装WinHttpCertCfg.exe ,没有的朋友去http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=C42E27AC-3409-
40E9-8667-C748E422833F 找并安装,并在你的环境变量 path 增加对WinHttpCertCfg.exe所在目录的引用

 d  到https://developer.paypal.com/ 注册并建立你的测试帐户,这里需要注意,注册成功后需要到sandbox中建立一个Business account


左右收款方,一个Personal account 为付款方,都是测试用途,email地址不会和你现有paypal发生冲突的,最后记得去Email那个Tab页去激活你

的帐户,并给你的Business account增加一个bank,两个帐户都增加信用卡什么的

 e  从sandbox中进入你刚才建立的 Business account 中,找到API Access link,作一个request,然后你刷新你的sandbox,察看 test

Certificates 就可以看到一个证书了,这证书是你的通行证,点击他并下载吧

 f  将证书转换为p12格式,你问我啥是p12格式,我也不知道,用如下命令
       openssl pkcs12 -export -inkey cert_key_pem.txt -in cert_key_pem.txt -out mycert.p12 记得写在一行,
     其中cert_key_pem.txt是source file   mycert.p12 target file  导出的时候会要求你输入一个password 和确认输入,请输入并记下这个password,下个步骤会用到
 g  安装证书到windows系统 用命令
   WinHttpCertCfg -i mycert.p12 -p certPassword -c LOCAL_MACHINE\my -a account 
     其中certPassword 是你证书的密码,上面我请您记下的那个,别说你忘了  account是windows帐户名称,这里我建议为Everyone,可以省却许多麻烦
 不放心可以指定 mycert.p12文件的路径
  
   上面两个命令都是在 command line中做的 ,有些朋友不熟悉dos路径用法的话 请带全路径,并请确认path 环境变量中的winhttpcertcfg得路径。

 h  安装  PayPal_AspNet_SDK_v3_2.msi ,在那里下载的我忘记了,反正在www.paypal.com的某个地方

 i  测试你的安装,找到SDK_root\bin\Console.exe 文件并执行,其中SDK_root指的是PayPal_AspNet_SDK的安装路径
    出现小窗口后 执行
     1 AddAPIProfile apiUsername sandbox    其中apiUsername 就是你下载证书那页的api user name,想起来了么
     2 SetAPIProfile 0 apiPassword          其中 apipassword就是你证书的密码,不能错哦
     3 GetRequestTemplate TransactionSearch search-template.txt 这是从paypal返回一个测试文件的命令,成功后会在SDK_root\bin\路

径下出现一个search-template.txt文件,如果没有文件,系统会提示你错误的
     4 修改search-template.txt文件内容为
<TransactionSearchRequestType>
<StartDate xmlns="urn:ebay:api:PayPalAPI">0001-01-
01T00:00:00.0000000-08:00</StartDate>
</TransactionSearchRequestType>
并save一下,
执行Call TransactionSearch search-template.txt,看返回的新息中有没有Success这个字,有的话,恭喜你,你安装成功了!
没有的话也别灰心,按照这些步骤仔细检查,不会出错的,当然,你的网络条件要差不多哦

喜欢的朋友请顶下,我不知道大家喜欢这样的文章。。想知道还没有必要写下去

Feedback

#1楼    回复  引用  查看    

2006-02-07 17:59 by MyXQ      
UP

#2楼    回复  引用  查看    

2006-02-08 09:07 by happyprogram      
关注,建议把其他的支付平台的使用方式都整理一下,那就太好啦:)

#3楼    回复  引用    

2006-02-08 10:29 by Riancy [未注册用户]
不错~正缺这样的技术文章呢,希望楼主写得更好

#4楼    回复  引用  查看    

2006-02-08 13:06 by 沐枫      
很有用的。谢谢分享。
请继续。

#5楼    回复  引用    

2006-02-08 19:10 by day [未注册用户]
加油,谢谢。。

#6楼    回复  引用    

2006-02-08 19:51 by 加油 [未注册用户]
不错,越详细越好。!

#7楼    回复  引用    

2006-02-08 20:42 by ant [未注册用户]
加油!

#8楼    回复  引用  查看    

2006-02-09 12:00 by 清香的工夫茶      
谢谢分享。期待你更多更好的文章。

#9楼    回复  引用  查看    

2006-02-10 10:46 by Jason.NET      
还想知道更多

#10楼    回复  引用    

2006-02-13 10:38 by 我爱一条菜 [未注册用户]
哥们,继续啊

#11楼    回复  引用    

2006-05-08 13:25 by liangzhi [未注册用户]
l转到正式环境下,应该怎么安装安全证书呢?

#12楼    回复  引用    

2006-05-24 09:51 by mansan [未注册用户]
还有没有?????要继续写啊

#13楼    回复  引用    

2006-09-11 12:12 by Jeff[匿名] [未注册用户]
写得不错。我是Paypal中国的系统集成负责人,很高兴看到你的文章,想跟你联络一下。请问如何联系?

#14楼    回复  引用  查看    

2006-09-12 15:43 by myzerg[匿名]      
to jeff
myzerg#gmail.com #换成@就可以了

#15楼    回复  引用  查看    

2006-09-14 09:01 by ZergTant      
支持,等待下篇

#16楼    回复  引用    

2006-09-14 21:01 by xx[匿名] [未注册用户]
非常好 !!!严重关注 !请问Paypal中国的系统集成负责人的邮件地址是多少?我想有些问题要请教。。。我的邮件地址:xxqq0824@gmail.com,因为我们公司最近在做一个.net基于paypal的网站,您是否可以帮我向他发邮件,征得他同意后我与他联系也可。

#17楼    回复  引用  查看    

2006-09-16 12:15 by myzerg[匿名]      
to:xx
我也不知道,不过大部分问题应该看文档都能解决

#18楼    回复  引用    

2006-09-18 10:02 by xx[匿名] [未注册用户]
哦,好的,您这块针对的解决方式是不是在自己的网站上checkout页面,扣款,不需要登陆到他的paypal页面扣款的,是吗?我现在找到的一些文章就是基于payflow pro的解决方案,整个流程在自己的网站上,不跳转的。
还有对于代码这块,应该不会很难吧?我咨询了paypal的技术人员,他们说一旦跟他们签订协议后,能够在2到3周内配置好整体环境好,您觉得他估计的事件够吗?因为我们的项目急着上线。。。

#19楼    回复  引用  查看    

2006-09-19 10:04 by myzerg[匿名]      
to xx:不好意思,在家病了几天,才看到你的文章
据我看paypal文档的结论是,无论是普通方式[standard]还是专业方式[professional]都会有一次跳到paypal页面登录确认的动作,也许你提到的payflow pro作到了,因为它本身就是做信用卡电子认证的,又被paypal收购
,payflow pro得信用卡收费开发很简单,安装一个com插件后,认真看文档2~4天,应该能搭建你的应用,有些难度的地方在退款那里,以及一些信用卡的特殊使用,如授权后锁住钱,然后再扣和直接扣钱,这些要看你的具体应用了,我觉得2~3周可行,前提是你看过文档,针对他的数据结构有一定的了解情况下
而直接用paypal来做的时间就。。难以估计了,我觉得当时对我是场噩梦.

#20楼    回复  引用    

2006-09-21 12:53 by xx[匿名] [未注册用户]
非常感谢再次回复,只是领导想在十一前把paypal支付模块实现,看来我只有硬着头皮了说了报告了。我在网上也找到了很多payflow pro的实现代码,我非常支持你再把文章继续写下去。

#21楼    回复  引用    

2006-12-23 02:07 by kaka[匿名] [未注册用户]
很久没有更新了。

从自己的页面到paypal,然后再返回来,也可以不返回来,手工确认。

#22楼    回复  引用  查看    

2006-12-23 09:58 by myzerg[匿名]      
@kaka
照我目前的理解是不可以,如过你需要这种方式,那么我想google checkout比较适合,他可以指定跳回来的页面,最近正在研究这个,有空可以讨论

@all

最近一直被工作进度困扰,为了谋生我的先干点其他的,不过这篇文章我会完成的,谢谢大家的关注

#23楼    回复  引用    

2006-12-24 00:18 by kaka[匿名] [未注册用户]
跳转页面的时候,可以传return 这个参数,定义好返回时候的页面,比如xxxwait_return.php,然后,设置IPN= true,可以多传个自定义的订单号,顾客付完款,连订单号返回来可以发货了。

#24楼    回复  引用    

2006-12-25 14:34 by ruirui [未注册用户]
请问:按照你说的步骤配制好后,运行http://localhost/PayPalAspNetSamples一直报错

Unable to retrieve certificate from user or system keystores for : sdk-seller_api1.sdk.com
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: com.paypal.sdk.exceptions.FatalException: Unable to retrieve certificate from user or system keystores for : sdk-seller_api1.sdk.com

源错误:


行 15: {
行 16: caller = new CallerServices();
行 17: caller.APIProfile = Global.SessionProfile;
行 18: }
行 19:


源文件: d:\program files\paypal asp.net sdk\samples\aspnet\paypalapi.cs 行: 17

请问:这是为什么?是因为我的网络问题么?怎么解决?
不胜感谢

#25楼    回复  引用    

2007-01-22 05:08 by zxb [未注册用户]
合作开发一个.net基于paypal的多语言外贸网站,希望您能尽快回复,谢谢.
dhyzxb@yahoo.com.cn

#26楼 [楼主]   回复  引用  查看    

2007-01-24 09:59 by myzerg      
@ruirui
我怀疑你引用证书错了
sdk-seller_api1.sdk.com 是系统默认的,你应该把他改成你的,就是你刚才转化的证书 和apiname ,类似我的是 myzerg_api1.danceshopper.com

#27楼    回复  引用    

2007-03-15 15:04 by feil [未注册用户]
楼主能不能PayPal_AspNet_SDK_v3_2.msi 文档给我,我英文太差了,从上面找不到,谢谢. liangsequn9@126.com
你好:
能不能把PayPal_AspNet_SDK_v3_2.msi 文档给我,我英文也不行,从上面找不到,谢谢.
lvhejin100@qq.com

#29楼    回复  引用    

2007-05-26 14:39 by godspeed [未注册用户]
请教一些关于WebsitePaymentsPro的问题,请加我qq:39326782 / msn:godspeed.huang@hotmail.com,或者发邮件到godspeed.huang@imaker.com.cn 告知你的联系方式,谢谢!

#30楼    回复  引用    

2007-06-12 16:31 by Andy [未注册用户]
你好,你的文章给我很大帮助,我现在有个问题出现了,也就是在最后一步!
Call TransactionSearch search-template.txt

结果返回的是这样:
<TransactionSearchResponseType >
<Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2007-06-12T16:22:19.0000000
+08:00</Timestamp>
<Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
<CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">37067bca6357</Correlati
onID>
<Errors xmlns="urn:ebay:apis:eBLBaseComponents">
<ShortMessage>Security error</ShortMessage>
<LongMessage>Security header is not valid</LongMessage>
<ErrorCode>10002</ErrorCode>
<SeverityCode>Error</SeverityCode>
</Errors>
<Version xmlns="urn:ebay:apis:eBLBaseComponents">2.400000</Version>
<Build xmlns="urn:ebay:apis:eBLBaseComponents">1.0006</Build>
</TransactionSearchResponseType>

没有你说的success,能帮我看看问题大致在那里吗?谢谢!
qq:181263209 Email:lxtf214@163.com

#31楼    回复  引用    

2007-08-04 11:04 by panhaijian [未注册用户]

中国电信应国家外贸组织要求,推出了用来收取外汇的通道--收
汇宝,用于安全收取国外各种信用卡,paypal,moneybooker,或
者各种金融机构的外汇款,方便您做外贸的时候更加轻松的收取
货款。请登陆中国电信的收汇宝专业网站:www.ctopay.com 电
话:13556864667 075526507721-812 QQ 460990516 传真:
075526584179-801 msn:sales-72@ctopay.com 联系人:潘先生
注明:在相应的结算周期后我们将会以人民币的方式直接结算到您的国内银行帐户里

#32楼    回复  引用  查看    

2008-04-22 15:48 by 小熊し☆ve<}+++<      
谢谢LZ啊,

#33楼    回复  引用  查看    

2008-04-22 15:49 by 小熊し☆ve<}+++<      
刚做到一个交易平台的支付功能,刚刚毕业以前没做过,十分感谢这文章

#34楼    回复  引用  查看    

2008-04-28 13:26 by 爱爱      
晕死,需要这么麻烦吗

#35楼    回复  引用  查看    

2008-08-05 14:24 by Lordz      
感激不尽,不过我还没有成功

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-24 10:39 编辑过


相关链接: