- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在努力寻找在我的网站中集成 Paypal“立即购买”按钮 的最佳方式,但我对所有各种 Paypal 集成技术(托管按钮、动态按钮, IPN, PDT, 等各种API)
我想集成满足我需要的更好/最简单的解决方案,以及一个安全的解决方案...
我真的不知道要去哪里...
非常感谢您的帮助!
我拥有一个旨在成为销售数字商品的“市场”的网站。
一些人(让我们称他们为SELLERS)在我的网站上注册为“卖家”并上传他们想要销售的一些数字商品。我为他们销售的每个“产品”生成在线页面。
其他一些人(我们称他们为BUYERS)也仅作为“买家”注册到我的网站:他们只是想从不同的卖家那里购买这些数字商品。
我想在每个产品页面上集成卖家的 paypal 按钮,这样他就可以直接付款。我不想成为付款的中间人。
所以我需要在每个产品页面上集成一个不同的按钮,具体取决于该产品的卖家。
我还需要为每个产品动态指定不同的价格,具体取决于所售产品(价格将由卖家在我网站的后台确定)
交易完成后(买家付款),我需要为这位买家解锁商品页面的商品下载。事实上,我需要更新我的数据库以将产品与该买家相关联,因此当他稍后再次访问我的网站时,他购买的产品总是处于“解锁状态”。
<form name="_xclick" action="https://www.paypal.com/fr/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="item_name" value="Digital good 1">
<input type="hidden" name="amount" value="12.99">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="quantity" value="1">
<input type="hidden" name="item_number" value="internal_user_and_product_id">
<input type="hidden" name="business" value="seller@abusiness.com">
<input type="hidden" name="notify_url" value="https://mywebsite.com/paypal-ipn.php">
<input type="image" src="http://www.paypal.com/fr_FR/i/btn/x-click-but01.gif" border="0" name="submit">
</form>
这里好像只需要向卖家询问其Paypal企业邮箱或ID,并为他和他的产品动态生成一个按钮即可。我还可以提供我的 IPN 监听器 URL,以便在收到完整交易后使用通过“item_number”传递的数据为我的数据库中的买家解锁产品。很简单。
但是:
- 这不安全
(任何人都可以在购买前更改 HTML 中的金额或 paypal ID)
- 如果卖家提供不正确(拼写错误)的电子邮件地址会怎样?
(我尝试使用测试按钮和虚假电子邮件地址“djfhsgfshdgfsd@dghe.com”进行购买,并且我能够处理付款!这不是商业 ID 不正确的情况...)
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="PJM2WY8H648ZK">
<input type="hidden" name="item_name" value="Digital good 2">
<input type="hidden" name="quantity" value="1">
<input type="hidden" name="item_number" value="internal_user_and_product_id">
<input type="hidden" name="notify_url" value="https://mywebsite.com/paypal-ipn.php">
<input type="image" src="http://www.paypal.com/fr_FR/i/btn/x-click-but01.gif" border="0" name="submit">
<input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" border="0" name="submit">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>
这将避免使用托管在 Paypal 上的按钮进行欺诈。
但是:
- 我无法动态生成按钮(如金额和货币)。
这意味着我将不得不要求卖家为他们想要销售的每件商品生成一个托管按钮,并设置正确的价格。
这是否也意味着我将无法在我的网站上显示产品价格?事实上,如果卖家在他的 Paypal 托管按钮中设置 2 美元,但在我的后台设置 1 美元,我将在我的网站上显示 1 美元,而实际价格是 2 美元......
我对后续步骤也有很多疑问,例如 IPN/PDT 以及我真正可以用这些做些什么。但让我们先回答我可以使用和集成的按钮类型!
最佳答案
您最好的解决方案是不使用 PayPal 按钮。您可能希望使用 PayPal Express Checkout 解决方案。这里有一个例子:
http://marshalcurrier.com/paypal/ExpressCheckout/SetDo.php
此过程需要更多编程,但它会解决您的所有问题。金额从您的服务器直接传递到 PayPal,不能通过 HTML 修改。此外,当您完成付款后,您会立即收到付款确认。这样您就不必依赖 IPN。
这里是介绍页面的直接链接:
https://developer.paypal.com/docs/classic/express-checkout/gs_expresscheckout/
这是上面的 Express Checkout 示例链接的代码:
买家邮箱:buyer@clubcovert.com
买家密码:test1234
<a href='http://marshalcurrier.com/paypal/ExpressCheckout/custom/SetDo.php'>RESET</a><br>
<form method='post'><input type="text" name="CHARGE" value="1"/><input type="submit" value="Pay Now"/><form>
<?php
session_start();
$PPUSER = 'marshal_api1.clubcovert.com';
$PPPWD = 'LL6NV7TDRB9RFXQ5';
$PPSIG = 'ANc3YRaMB1Tgm9TediH0gENHB02JAksSKWD08wVNN3w3pwHqdBW8Im6y';
function url(){ //PayPal Payment URL (TEST or LIVE)
$url = "https://api-3t.sandbox.paypal.com/nvp"; //Test Server
//$url = "https://api-3t.paypal.com/nvp"; //Live Server
return $url;
}
function curlCall($nvp){ // Function for Curl Call to PayPal.
$url = url();
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($nvp) );
//echo http_build_query($nvp); //Print String
curl_setopt($ch, CURLOPT_URL, $url);
$server_output = curl_exec($ch);
mb_parse_str($server_output, $arr);
return $arr;
}
if(isset($_POST['CHARGE'])){ // SetExpressCheckout Call
$_SESSION['AMT'] = $_POST['CHARGE'];
$nvp = array(
'USER' => $PPUSER,
'PWD' => $PPPWD,
'SIGNATURE' => $PPSIG,
'METHOD' => 'SetExpressCheckout',
'VERSION' => '123',
'PAYMENTREQUEST_0_PAYMENTACTION' => 'SALE',
'PAYMENTREQUEST_0_AMT' => $_POST['CHARGE'],
'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD',
'RETURNURL' => 'http://marshalcurrier.com/paypal/ExpressCheckout/SetDo.php',
'CANCELURL' => 'http://marshalcurrier.com/paypal/ExpressCheckout/SetDo.php',
);
$arr = curlCall($nvp);
echo '<br><br>SetExpressCheckout Call to PayPal:<br><pre>';
print_r ($nvp);
echo '</pre>';
echo 'SetExpressCheckout Server Response:<br><pre>';
print_r ($arr);
echo '</pre>';
echo '<a href="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token='.($arr['TOKEN']).'">Go To PayPal</a>';
}
if(isset($_GET['PayerID'])){ // DoExpressCheckoutPayment Call
if (isset($_SESSION['AMT'])){
$AMT = $_SESSION['AMT'];
}else{
$AMT = null;
}
$nvp = array(
'METHOD' => 'DoExpressCheckoutPayment',
'VERSION' => '123',
'USER' => $PPUSER,
'PWD' => $PPPWD,
'SIGNATURE' => $PPSIG,
'PAYERID' => $_GET['PayerID'],
'TOKEN' => $_GET['token'],
'PAYMENTREQUEST_0_PAYMENTACTION' => 'SALE',
'PAYMENTREQUEST_0_AMT' => $AMT,
'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD',
);
$arr = curlCall($nvp);
echo '<br><br>DoExpressCheckoutPayment Call to PayPal:<br><pre>';
print_r ($nvp);
echo '</pre>';
echo 'DoExpressCheckoutPayment Server Response:<br><pre>';
print_r ($arr);
echo '</pre>';
unset($_SESSION['AMT']);
}
?>
关于paypal - 如何更好地为 3rd 方卖家集成 Paypal "Buy Now"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610932/
遇到 now() 在 Postgres 中的函数中使用时的行为与“now”不同的问题。 drop table if exists test_date_bug; CREATE TABLE test_da
Google 刚刚发布了一项名为 Now on Tap 的 Google Now 新功能。它使用户能够从不同的应用程序 (The Verge video example) 获得上下文帮助。 是否只是截
performance.now() 和 Date.now() 有什么区别? 我是否应该将 performance.now() 视为 Date.now() 的替代品,因为 performace.now(
需要了解为什么我会得到时差。 这是我的 VBA 代码: Public OHLCArray(1 To 481, 0 To 28, 0 To 3) As Single 'debug stm
假设: rAF now时间是在所有回调集被触发时计算的。因此,在调用该帧的第一个回调之前发生的任何阻塞都不会影响 rAF now它是准确的——至少对于第一次回调来说是这样。 在触发 rAF 集之前进行
在我的程序中,每个表都有一列 last_modified: last_modified int8 DEFAULT (date_part('epoch'::text, now()::timestamp)
这是 Form1 中的代码: private DateTime dt; [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLa
什么时候应该使用 django 的 timezone.now() 以及什么时候应该使用 python 的 datetime.datetime.now()。 例如,在下面的 INSERT 中哪个更有意义
我正在将我的项目从 Django 1.8.2 升级到 1.9.7,我收到了这个警告: WARNINGS: my_app.my_model.date_available: (fields.W161) F
我应该在我的 Rails 应用程序中使用两者中的哪一个: DateTime.now or Time.now 在应用程序中同时使用两者有什么坏处吗? 在上述 (now) 示例中,两者之间是否存在任何差异
这个问题已经有答案了: Date vs new Date in JavaScript (8 个回答) 已关闭 6 年前。 我更多地谈论添加“new”如何影响变量,为什么/何时使用它,以及为什么我在打印
// Data-Bind is Here // Data-Bind is Here Show
我想做一个查询来检查今天是否有值,如果没有,则显示今天之前最近的条目。 这是我使用的查询: $variable = 'var1'; SELECT * FROM `table` WHERE `somet
我有一个表,其中有一列 event_time。如何选择 NOW() 之前的两行和 NOW() 之后的下一行,按 event_time 排序? 单个查询是否可行? 最佳答案 怎么样 SELECT * F
我如何向 Google Now 提供我的信息或我的应用程序数据卡片?有没有我可以使用的 API? 最佳答案 Google Now API 仅提供给在 Google 注册其应用程序的用户,它一直是私有(
...当我尝试执行如下所示的查询时: Session().query(MyMappedClass).update({MyMappedClass.time:func.now()}) 我得到: Inval
我试图了解 time.Now() 和 time.Now().Local() 之间的区别。我首先在我的笔记本电脑上打印它们(运行 Ubuntu 18.04): fmt.Println(time.Now(
假设我有一个包含三个字段的数据库表:id、内容和时间戳。 全天都会收到参赛作品,因此会有大量参赛作品,并且仍会定期收到参赛作品。 当访问者查看将显示条目的网页时,该页面将显示最近的 10 个条目以及访
我对夏令时处理有点困惑 设置.py: TIME_ZONE = 'Europe/London' USE_TZ = True 在 django shell 中: >>> from django.utils
我正在使用 node.js 和 now.js。一切正常。但我想制作一个可以从命令行运行的简单客户端(因此无需浏览器)。 http://nowjs.com/doc/example 在示例中,提供了一个
我是一名优秀的程序员,十分优秀!