[label][转载][paypal]paypal在线支付接口的WEB语言设置

http://stephen830.iteye.com/blog/274072

★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/274072 》 ,谢谢支持!★★★

以前曾经写过一篇关于《paypal在线支付的通信接口 http://stephen830.iteye.com/blog/254565 》的文章。对以前文章的一个补充:

自从国际paypal增加了繁体中文的WEB版本后,许多早先集成paypal接口的系统,当国外客户通过系统进入paypal的在线支付界面, 往往会打开繁体中文的页面,而不是以前的英文页面,导致国外客户面对的是一堆的乱码(国外客户一般不会安装繁体中文)。虽然在paypal页面上可以手动 的切换语言(UK English/繁体中文)。

这一切或多或少给国外客户的使用带来了不便,为此需要完善原来的paypal接口来解决这个小问题。寻遍paypal提供的api接口都没有找到相关的语言设置参数。因此在研究了paypal网站的html代码后,在原来的接口中增加了一个新的参数就解决了上面的问题。

Html代码  

  1. <form name="paypal" action="https://www.paypal.com/cgi-bin/webscr?locale.x=zh_HK" method="post">
  2. ...
  3. </form>

locale.x=zh_HK 繁体中文
locale.x=en_GB 英文(UK English)

http://stephen830.iteye.com/blog/254565

本篇将讲述与paypal在线支付的通信接口问题:

关于paypal在线支付的信息可以直接访问http://www.paypal.com。paypal作为国际在线支付的一种比较常用的工具,在现在的国际电子商务中使用的非常多,这里将就paypal支付接口与企业自己的网上电子商务系统之间沟通作一详细描述。

一般电子商务系统实现的流程如下:
客户在系统内下订单 -> 将订单的金额信息提交到paypal网站 -> 客户在paypal上付款 -> paypal将客户的付款完成信息发送给电子商务系统 -> 系统收到paypal信息后确定客户订单已经付款 -> 进行发货等后续流程。

从这个流程中可以看到系统与paypal的通信尤其关键,可以实现订单的自动付款确认。

(1)如何调用paypal接口?(将订单的金额信息提交到paypal网站)

Html代码  

  1. <%@ page contentType="text/html;charset=UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  3. "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>goto paypal</title>
  8. </head>
  9. <body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  10. <form name="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
  11. <input type="hidden" name="cmd" value="_xclick">
  12. <input type="hidden" name="business" value="[email protected]"><!--这里填写你的paypal账户email-->
  13. <input type="hidden" name="item_name" value="order information"><!--这里填写客户订单的一些相关信息,当客户连到paypal网站付款的时候将看到这些信息-->
  14. <input type="hidden" name="amount" value="220.00"><!--订单的总金额信息-->
  15. <input type="hidden" name="currency_code" value="USD"><!--订单总金额对应的货币类型 ,客户可以用其他币种来付款,比如这里订单币种是美元USD,客户可以用欧元EUR来付款,由paypal根据当前汇率自动实现币种之间的换算-->
  16. <input type="hidden" name="on0" value="customerId"><!-- 自定义的参数1 -->
  17. <input type="hidden" name="os0" value="stephen"><!-- 对应上面自定义参数1对应的值 -->
  18. <input type="hidden" name="on1" value="address"><!-- 自定义的参数2 -->
  19. <input type="hidden" name="os1" value="shanghai china"><!-- 对应上面自定义参数2对应的值 -->
  20. <input type="hidden" name="notify_url" value="http://www.xxx.com/notifyurl.jsp?order_id=23876412"><!--这里告诉paypal付款的通信url,即当客户付款后调用这个url通知系统-->
  21. <input name="Paypal" type="button" value="Go to Paypal" onclick="javaScript:this.form.submit();"></td>
  22. </form>
  23. </body>
  24. </html>

在生成上面的paypal表单时,其中的[cmd],[action],[business],[amount], [currency_code],[notify_url]参数设置绝对不能出错,[cmd]和[action]指定paypaly接口类型, [business]出错,你将收不到客户的付款,[amount]与[currency_code]关系到订单的金额,[notify_url]是系统 与paypal的付款通知接口url。

当客户下单后看到上面的页面后,就可以通过设置的按钮[Go to Paypal]连接到paypal.com网站,然后登录并进行付款。

(2)paypay将付款信息返回给系统
当客户付款后,paypal就会自动调用上面表单提供的[notify_url],下面是一个[notifyurl.jsp]的一个例子:

Html代码  

  1. <%@ page contentType="text/html;charset=UTF-8"%><%@ page import="com.soft4j.NotifyUrlMgr"%><%
  2. String ret = NotifyUrlMgr.insert(request);
  3. if(ret==null){out.print("200 OK");}else{out.print("fail");}
  4. %>

如果确认收到paypal发来的客户付款信息,则返回"200 OK",这样子paypal就知道系统已经收到信息了;否则返回"fail",这样paypal会过一段时间后再次发来。其实,只有当paypal收 到"200 OK"的返回信息后才会停止发送付款信息,否则会自动的每隔一段时间就调用上面
的[notify_url]通信接口。

(3)系统处理paypay发来的付款信息

Java代码  

  1. /*
  2. * Created on 2005-6-12
  3. * Author stephen
  4. * Email zhoujianqiang AT gmail DOT com
  5. * CopyRight(C)2005-2008 , All rights reserved.
  6. */
  7. package com.soft4j;
  8. import java.sql.Connection;
  9. import java.sql.SQLException;
  10. import java.util.Enumeration;
  11. import java.util.Vector;
  12. import javax.servlet.http.HttpServletRequest;
  13. /**
  14. * paypal付款通知接口.
  15. *
  16. * @author stephen
  17. * @version 1.0.0
  18. */
  19. public final class NotifyUrlMgr {
  20. public static String insert(HttpServletRequest httpRequest) {
  21. //定义变量和进行必要的初始化工作
  22. Enumeration parameterNames = null;
  23. String parameterName = null;
  24. String parameterValue = null;
  25. int count = 0;
  26. Vector[] params = null;
  27. Vector vParameterName = new Vector();
  28. Vector vParameterValue = new Vector();
  29. //判断paypal付款账户是否正确
  30. String business = httpRequest.getParameter("business");
  31. if( !"[email protected]".equals(business) ) {
  32. System.out.println("gu:Wrong receive paypal email:"+business);
  33. return null;
  34. }
  35. try {
  36. String orderId = httpRequest.getParameter("order_id");//订单号
  37. if(orderId==null||"".equals(orderId)) orderId="-1";
  38. parameterNames = httpRequest.getParameterNames();
  39. boolean isPrint = false;
  40. while (parameterNames.hasMoreElements()) {//循环收取paypal发来的所有参数信息
  41. parameterName = (String) parameterNames.nextElement();
  42. parameterValue = httpRequest.getParameter(parameterName);
  43. if(parameterValue==null) parameterValue="";
  44. vParameterName.add(parameterName);
  45. vParameterValue.add(parameterValue);
  46. count++;
  47. }
  48. //这里添加对收到信息的处理:一般是将这些信息存入数据库,然后对客户的订单进行处理.
  49. return null;
  50. } catch (Exception e) {
  51. return e.toString();
  52. } finally {
  53. //
  54. }
  55. }
  56. }

这样系统可以自动对客户订单的付款情况进行跟踪,更快捷的进行订单处理。

附录:
[1] paypay允许的币种

AUD Australian Dollar
CAD Canadian Dollar
CHF Swiss Franc
CZK Czech Koruna
DKK Danish Krone
EUR Euro
GBP Pound Sterling
HKD Hong Kong Dollar
HUF Hungarian Forint
JPY Japanese Yen
NOK Norwegian Krone
NZD New Zealand Dollar
PLN Polish Zloty
SEK Swedish Krona
SGD Singapore Dollar
USD U.S. Dollar

[2] paypal付款信息的参数含义:

https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html

[3] paypal提供的开发api的pdf文档

PP_OrderManagement_IntegrationGuide.pdf.zip [在附件中可以下载]

[4] paypal提交付款所支持的参数及其含义(也就是你提交给paypal中的那个Form表单中需要设置的参数)
https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html

[5] paypal显示页面的语言设置(也就是打开paypal网站的语言)。需要用参数locale.x进行设置,但这个参数在paypal提供的参数表(参见上面[4])中没有的。

Html代码  

  1. <form name="paypal" action="https://www.paypal.com/cgi-bin/webscr?locale.x=zh_HK" method="post">
  2. ...
  3. </form>

locale.x=zh_HK 繁体中文
locale.x=en_GB 英文

如果你的电子商务系统不是java环境的,也可以参考上面的内容。

时间: 2024-10-29 04:34:56

[label][转载][paypal]paypal在线支付接口的WEB语言设置的相关文章

工商银行在线支付接口,php语言,在ecshop,shopex等的wap版本上完美实现移动支付

php版本各个主要银行在线支付接口开发. 1 中国银行在线支付接口2 工商银行在线支付接口3 建设银行在线支付接口+手机移动支付接口4 交通银行在线支付接口5 农业银行在线支付接口6 银联在线支付接口+手机移动支付接口7 招商银行在线支付接口+手机移动支付接口完美融合ecshop,shopex等php版本的商城系统. 其他银行的在线支付接口均能开发,详情请咨询QQ:804752009 原文:http://www.0475seo.com/tech/2dev/297.html其他接口:http://

中国银联ecshop 在线支付接口开发,php语言,在shopnc,ecshop,shopex,ecmall,xpshop,ectouch等的wap版本上完美实现移动支付

中国银联的在线支付接口PC版大家应该不在话下,但是中国银联手机移动支付接口做过的人就很少了.本人有幸和中国银联手机移动支付接口的开发者孙晨岚有过几个小时的讨论,也为客户做了几个中国银联手机移动支付接口.php语言开发的接口,在普遍流行的ecshop,shopex,ecmall等的wap版本上完美实现移动支付.    function get_code($order, $payment) { // 订单相关时间        // echo "yigang";        $order

PHP商城网站绑定中国银联在线支付接口

PHP商城网站绑定中国银联在线支付接口用的越来越广泛,我们公司这几年给客户建立过很多的商城网站,今天就分析下怎么为自己的PHP商城网站接入中国银联在线支付端的接口.在使用前我们必须先申请成为中国银联在线支付的商户. 第一步:下载中国银联官方PHP支付接口文件 进入中国银联在线官方网站的商户服务网站,下载PHP的技术资料端口文件(https://online.unionpay.com/mer/pages/merser/index.jsp这是中国银联在线支付商户服务网站),点击右上角的“文档下载”

如何接入中国工商银行网上银行B2C在线支付接口

中国工商银行网上银行B2C在线支付接口说明,亲测可行. 工具/原料 merID:银行提供.唯一确定一个商户的代码,由商户在工行开户时,由工行告知商户. merAcct:银行提供 , 商城收费入账账号 (只能交易时指定). 懂得html代码跟PHP的程序员一名 方法/步骤 1 到银行开户,说明要做B2C在线支付接口,此时银行会提供给你 merID  .merAcct  这两个 2 由程序员按照一下步骤来做即可,在商城提交表单的页面添加以下控件. 3 <html xmlns=http://www.w

在线支付接口详解

当我们在商城购物时,可能会用到在线支付,你会发现无论你是哪个银行的银行卡接口中都会支持,在做项目开 发时,也经常会用到支付接口,我们当然希望支持所有的网银,但这需要我们针对每个银行开发一套接口吗?不是不可以而是没必要,使用第三方的支付接口就可以 满足,第三方支付平台已经与各大银行进行签约,网站主只需要在此平台申请一个账号即可支持几乎所有的种类的银行卡信用卡的交易,当然是可能支付少量的手续 费的.什么是第三方支付呢? 所谓第三方支付,就是一些和各大银行签约.并具备一定实力和信誉保障的第三方独立机构

在线支付接口之PHP支付宝接口开发简单介绍

php100:92:在线支付接口之PHP支付宝接口开发 支付接口一般是第三方提供的代收款.付款的平台,可以通过支付接口帮助企业或个人利用一切可以使用的支付方式.常见支付平台:支付宝.快钱.云网支付.财付通. 支付宝页面:订单页面.状态页面.返回页面.---->支付宝平台-->收款人账户 1.首先到支付宝申请账户:2.商家服务-->网站继承支付宝-->选择申请接口类型-->等待合同生效3.生效后下载开发集成文档. 在线申请特约商家(申请实时到账)合作者身份id:这是不会变的.交

天下支付ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)

最近应一个客户的要求,给他的一个ecshop网站开发天下支付(www.tfb8.com)在线支付接口和代付接口.天下有自己的收银台,集成了各类银行,也是不错.但是天下支付对接的时候很是麻烦,先要在测试环境下测试,有专门的测试商户号,测试通过需要把测试参数和提交的返回结果发给他们的技术支持,天下支付的技术验证通过的才会正式开通.其他的接口,比如代付API接口也需要发送测试参数才会开通.基本上还是比较正规. $reqHandler->setParameter ( "spid", $s

九派ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)

最近应一个客户的要求,给他的一个ecshop网站开发九派在线支付接口和代付接口.九派有自己的收银台,集成了各类银行,也是不错. 九派原来采用MD5私钥认证,后来采用RAS认证.首先,对报文中出现签名域( merchantS S ign /serverSign )和证书域( merchantCert /serverCert )之外的所有数据元采用 key=value 的形式按照名称排序 ,然后以&作为连接符拼接成待签名串(value 为空的域,不参与待签名串).再使用九派支付颁发给商户的商户 RS

网银在线支付接口和应用

最近关注项目中在线支付,所以看一下文档,在线支付应用开发: 基本所有的在线支付均采用以下方式: 客户点击结帐时将关于訂單的信息和货币信息,相应的信息URL,经过md5或其他方式发送(可能Socket和Http或Https)支付平台(块钱,paypal或支付宝等),支付平臺处理完毕时根据相应URL,返回相关的信息(付款信息,訂單信息,验证信息). 在实际操作Money的问题人们一向关注他的安全性等问题,同时本人习惯在通过http方式访问非外网时采用Commons-httpclient的post发送