- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我希望构建一个用户能够从我的站点购买产品的应用程序。购买将包括他们购买的实物、运输、税收(如果适用)等。我知道 PayPal 有许多付款选项,其中一个是 Web 服务,另一个只是重定向到他们的网站。我希望用户体验尽可能无缝,但我不想涉足存储信用卡等业务。
如果我确实在我的服务器上处理交易(使用安全连接/SSL),我是否会承担将信用卡信息传递给他们的服务进行处理的风险?
最佳答案
玩吧! Framework v1.2 对WebServices 有很好的支持。 Play 没有paypal 模块,但是代码写起来并不复杂。我为我们的招聘网站 (www.express-board.fr) 实现了 Web 服务解决方案,用了 3 天时间。
首先:用户总是被重定向到 Paypal 网站。没有面向 paypal 客户端的解决方案。如果您选择 Web 服务解决方案 (developer.paypal.com),您可以使用您的 Logo 自定义 paypal 网页。不是最好的解决方案,但它有效。
在 Play 方面,这是使用 Paypal Web 服务的结帐方法的示例代码:
public static void checkout() {
Double amount = Double.parseDouble(session.get("amount"));
Long userId = Long.parseLong(session.get("user-id"));
User user = User.findById(userId);
if (user != null) {
renderArgs.put("user", user);
}
// we calculate the net and gross amount with French V.A.T (19.6%)
BigDecimal amountBD = new BigDecimal(amount * 1.196);
BigDecimal netAmountBD = new BigDecimal(amount);
BigDecimal taxAmountBD = amountBD.subtract(netAmountBD);
String netAmount = netAmountBD.setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
String totalAmount = amountBD.setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
String taxAmount = taxAmountBD.setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
String subject="Publication d'une offre d'emploi";
// Paypal Web service callback executed by Play!
// I have a paypal.api.server configuration property with prod and sandbox server
WS.HttpResponse res = WS.url(Play.configuration.get("paypal.api.server").toString() +
"&USER=%s" +
"&PWD=%s" +
"&SIGNATURE=%s" +
"&VERSION=%s" +
"&METHOD=%s" +
"&PAYMENTREQUEST_0_PAYMENTACTION=%s" +
"&LANDINGPAGE=%s" +
"&SOLUTIONTYPE=%s" +
"&EMAIL=%s" +
"&FIRSTNAME=%s" +
"&LASTNAME=%s" +
"&STREET=%s" +
"&STREET2=%s" +
"&CITY=%s" +
"&ZIP=%s" +
"&STATE=%s" +
"&PAYMENTREQUEST_0_CURRENCYCODE=%s" +
"&MAXAMT=%s" +
"&PAYMENTREQUEST_0_AMT=%s" +
"&PAYMENTREQUEST_0_ITEMAMT=%s" +
"&PAYMENTREQUEST_0_TAXAMT=%s" +
"&PAYMENTREQUEST_0_DESC=%s" +
"&L_PAYMENTREQUEST_0_NAME0=%s" +
"&L_PAYMENTREQUEST_0_NUMER0=%s" +
"&L_PAYMENTREQUEST_0_DESC0=%s" +
"&L_PAYMENTREQUEST_0_AMT0=%s" +
"&L_PAYMENTREQUEST_0_QTY0=%s" +
"&NOSHIPPING=%s" +
"&LOCALECODE=%s" +
"&RETURNURL=%s" +
"&CANCELURL=%s" +
"&ADDROVERRIDE=%s" +
"&BRANDNAME=%s"
,
//-------
Play.configuration.get("paypal.api.username").toString(),
Play.configuration.get("paypal.api.password").toString(),
Play.configuration.get("paypal.api.signature").toString(),
"69.0", // API Version
"SetExpressCheckout", //Method
"Sale",
"Billing",
"Sole",
user.email,
"" + user.fullname,
"" + user.fullname,
"" + user.postalAddress,
"" + user.postalAddress2,
"" + user.city,
"" + user.zip,
"None",
"EUR",
totalAmount, //MaxAMT
totalAmount, //amount.toString()
netAmount, //PAYMENTREQUEST_n_ITEMAMT
taxAmount,
subject,
//---------
"Item name",
"1",
subject,
netAmount,
"1",
//---------
"1",
"FR",
Play.configuration.get("paypal.returnUrl").toString(),
Play.configuration.get("paypal.cancelPay").toString(),
"1", //ADDROVERRIDE
"eXpress-Board pour Innoteria"
).get();
String message = res.getString();
PaypalResponse paypalResponse = new PaypalResponse(message);
if (paypalResponse.isSuccess()) {
Payment payment = new Payment();
payment.userId = user.id;
payment.totalAmount = totalAmount;
payment.netAmount = netAmount;
payment.taxAmount = taxAmount;
payment.token = paypalResponse.getToken();
payment.correlationID = paypalResponse.getCorrelationID();
payment.save();
redirect(Play.configuration.get("paypal.api.http").toString() + "/cgi-bin/webscr?cmd=_express-checkout&token=" + paypalResponse.getToken());
}
Logger.error("Error on SetExpressCheckout with: ");
for (String tokens : message.split("&")) {
try {
Logger.error(URLDecoder.decode(tokens, "UTF-8"));
} catch (UnsupportedEncodingException e) {
}
}
error("Error from Paypal");
}
希望对你有帮助
关于java - 玩!框架支付处理(电子商务/ Paypal ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982894/
我正在为客户建立一个 EC 网站,项目经理提出了一些奇怪的想法,我正在努力实际实现他向客户销售的产品。 这是我的主要问题和系统设置的快速总结:产品在类别内,类别可能是另一个类别的子类别。因此,该类别在
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
最近一直在想响应式网站与移动网站,尤其是电子商务网站。我有一个相当大的项目即将开始,看起来它将是一个相对繁重的项目(就模板和功能而言)。因此,立即想到的是做一个移动站点来削减某些可能对性能要求很高但不
我正在为大学考试编写一些 Java 代码,该项目基于“电子商务”。要求之一是将产品插入购物车,我必须使用 Visitor 模式。 这是教授给我的一个例子,我必须“用”它来代表我的购物车。问题是我有一个
我正在尝试确定在数据库中存储订单的最佳方式。 每个产品都可以配置,但并非所有选项都相同。例如: Product A Size: small, medium, large Membership: 1 y
我整天都在苦思冥想,试图找到这个问题的答案;我终其一生都无法弄清楚如何在我为客户建立的 Woocommerce 商店中右对齐价格。这是我所在的位置: .price .woocommerce-Price
我需要有关棘手问题的专家建议。 场景是: 电子商务网站 很多产品 这些产品有很多折扣 产品由唯一的 ProductID 标识并具有销售价格。很经典的剧情。该产品还可以有一个或多个折扣。 折扣可以有不同
我想在用户第一次购买之前将结帐的账单字段的值预填充到数据库存储的值中。 我试过下面的代码: add_filter( 'woocommerce_checkout_fields' , function (
我想了解数据库的可扩展性,所以我刚刚听过一个关于高度可扩展的 Web 应用程序的习惯的演讲 http://techportal.inviqa.com/2010/03/02/habits-of-high
在我的电子商务应用程序(用于咖啡馆/餐馆)中,我目前具有以下数据库结构。 cart 就是购物车,可以在其中添加商品,商品/订单发送到服务器之前的一个临时场所。 ProductCart 是一个行项目,许
我在我的项目中实现了 Google Analytics。在他们要求我启用电子商务之前,一切似乎都很好。 按照所有设置步骤,我已在 GA 仪表板上为我的项目启用电子商务,并且 Unity 中的设置必须正
我想使用 GTM 来跟踪电子商务交易。这是针对客户端环境的测试,其中代码可能位于 GTM 代码片段 之后的 ,这就是为什么使用 Dom Ready 作为事务标签的触发器不可靠的原因。 这是我的测试代码
我需要覆盖我的 spree 商店的标题颜色。我在 ../mystore/vendor/assets/stylesheets/spree/frontend 目录下创建了一个 custom.css。但它不
我正在使用 Odoo 10。在新用户注册后(通过 localhost:8069/web/signup)我希望他自动分配到我在我自己的自定义模块上创建的组中(用户将需要身份验证稍后来自管理员,以便他可以
我希望构建一个用户能够从我的站点购买产品的应用程序。购买将包括他们购买的实物、运输、税收(如果适用)等。我知道 PayPal 有许多付款选项,其中一个是 Web 服务,另一个只是重定向到他们的网站。我
我正在开发一个电子商务网站。我正在尝试使用 ajax 请求设置购物车商品数量。 我明白了 if (isset($_POST['product_id']) && isset($_POST['new_qu
假设用户访问我的网站并购买了一个棚子。棚子将被添加到购物车并完成工作。在我的数据库中,我已经有了棚子的尺寸(以显示给客户)。 假设客户还想要棚子的地毯(你永远不知道)我希望我的网络应用程序自动理解地毯
我正在尝试设置一个 AJAX 函数来清空我的购物车 HTML Go to Product JavaScript function clearCart(d) { jQuery(document)
我正在尝试在我的应用程序中设置 Spree(我愿意使用 Gem 或在供应商模式下运行它)。 我已经查看了文档和 wiki,但对于它如何在我现有的应用程序中工作,我仍然有些困惑。我可以为 Spree 使
目前正在使用 GTag 将购买数据记录到 Google Analytics E-Commerce。我正在使用标准电子商务。现在我要把这个过程作为后期处理。 (即)需要使用 C# 应用程序将购买数据记录
我是一名优秀的程序员,十分优秀!