- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从 Paypal 取回用户输入的详细信息。
问题 1) 如何从 paypal 获取电子邮件地址和其他详细信息?
Q 2) 系统生成的邮件应该从成功案例发送还是从ipn案例发送?
Q 3) 交易成功后,我在 paypal 屏幕上收到消息 - “我们将向 foo@email.com 发送一封确认电子邮件”。但我根本没有收到任何电子邮件。
注意:我正在沙盒上进行测试。
问题 4) 我没有向买家的地址运送任何元素。那么是否可以从 paypal 屏幕上删除运送地址?
<?php
switch($action){
case "process": // case process insert the form data in DB and process to the paypal
echo "in process";
mysql_query("INSERT INTO `purchases` (`invoice`, `product_id`, `product_name`, `product_quantity`, `product_amount`, `payer_fname`, `payer_lname`, `payer_address`, `payer_city`, `payer_state`, `payer_zip`, `payer_country`, `payer_email`, `payment_status`, `posted_date`) VALUES ('".$_POST["invoice"]."', '".$_POST["product_id"]."', '".$_POST["product_name"]."', '".$_POST["product_quantity"]."', '".$_POST["product_amount"]."', '".$_POST["fname"]."', '".$_POST["lname"]."', '".$_POST["address"]."', '".$_POST["city"]."', '".$_POST["state"]."', '".$_POST["zip"]."', '".$_POST["ccCountry"]."', '".$_POST["email"]."', 'pending', NOW())");
$this_script = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$p->add_field('business', PAYPAL_EMAIL_ADD); // Call the facilitator eaccount
$p->add_field('cmd', $_POST["cmd"]); // cmd should be _cart for cart checkout
$p->add_field('upload', '1');
$p->add_field('return', $this_script.'?action=success'); // return URL after the transaction got over
$p->add_field('cancel_return', $this_script.'?action=cancel'); // cancel URL if the trasaction was cancelled during half of the transaction
$p->add_field('notify_url', $this_script.'?action=ipn'); // Notify URL which received IPN (Instant Payment Notification)
$p->add_field('currency_code', $_POST["currency_code"]);
$p->add_field('invoice', $_POST["invoice"]);
$j=1;
for ($i = 0; $i < $N; $i++) {
$p->add_field('item_name_'.$j, $_POST["product_name"]);
$p->add_field('item_number_'.$j, $test[$i]);
$p->add_field('quantity_'.$j, $_POST["product_quantity"]);
$p->add_field('amount_'.$j, $_POST["product_amount"]);
$j++;
}
$p->add_field('first_name', $_POST["fname"]);
$p->add_field('last_name', $_POST["lname"]);
$p->add_field('address1', $_POST["address"]);
$p->add_field('city', $_POST["city"]);
$p->add_field('state', $_POST["state"]);
$p->add_field('country', $_POST["country"]);
$p->add_field('zip', $_POST["zip"]);
$p->add_field('email', $_POST["email"]);
$p->submit_paypal_post(); // POST it to paypal
$p->dump_fields(); // Show the posted values for a reference, comment this line before app goes live
break;
case "success": // success case to show the user payment got success
echo '<title>Payment Done Successfully</title>';
echo '<style>.as_wrapper{
font-family:Arial;
color:#333;
font-size:14px;
padding:20px;
border:2px dashed #17A3F7;
width:600px;
margin:0 auto;
}</style>
'; echo '<div class="as_wrapper">';
echo "<h1>Payment Transaction Done Successfully</h1>";
echo '<h4>Use this below URL in paypal sandbox IPN Handler URL to complete the transaction</h4>';
echo '<h3>http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?action=ipn</h3>';
echo '</div>';
echo 'email'.$_POST['email'];
echo 'product name'.$_POST['item_name'];
if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
//==================================================================================================================
break;
case "cancel": // case cancel to show user the transaction was cancelled
echo "<h1>Transaction Cancelled";
break;
case "ipn": // IPN case to receive payment information. this case will not displayed in browser. This is server to server communication. PayPal will send the transactions each and every details to this case in secured POST menthod by server to server.
$trasaction_id = $_POST["txn_id"];
$payment_status = strtolower($_POST["payment_status"]);
$invoice = $_POST["invoice"];
$log_array = print_r($_POST, TRUE);
$log_query = "SELECT * FROM `paypal_log` WHERE `txn_id` = '$trasaction_id'";
$log_check = mysql_query($log_query);
if(mysql_num_rows($log_check) <= 0){
mysql_query("INSERT INTO `paypal_log` (`txn_id`, `log`, `posted_date`) VALUES ('$trasaction_id', '$log_array', NOW())");
}else{
mysql_query("UPDATE `paypal_log` SET `log` = '$log_array' WHERE `txn_id` = '$trasaction_id'");
} // Save and update the logs array
$paypal_log_fetch = mysql_fetch_array(mysql_query($log_query));
$paypal_log_id = $paypal_log_fetch["id"];
if ($p->validate_ipn()){ // validate the IPN, do the others stuffs here as per your app logic
mysql_query("UPDATE `purchases` SET `trasaction_id` = '$trasaction_id ', `log_id` = '$paypal_log_id', `payment_status` = '$payment_status' WHERE `invoice` = '$invoice'");
$subject = 'Instant Payment Notification - Recieved Payment';
$p->send_report($subject); // Send the notification about the transaction
echo 'email'.$_POST['payer_email'];
echo 'product name'.$_POST['item_name'];
//==================================================================================================================
if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
}else{
$subject = 'Instant Payment Notification - Payment Fail';
$p->send_report($subject); // failed notification
}
break;
}
?>
最佳答案
如果没有关于 PayPal 集成的更多信息,无法完整回答,但是:
Q1:PayPal 在 IPN 和大多数相关 API 调用(DoExpressCheckout 等)的响应中提供买家信息。在某些情况下,即使在付款完成之前,它也会有单独的专用调用来获取买家信息(例如 GetExpressCheckout)。在不知道您要集成到哪个支付产品/API 的情况下不能说更多。
Q2:无论卖家是否使用IPN,付款成功后都会发送邮件。 IPN 和电子邮件是独立的功能,彼此无关。
问题 3:沙盒帐户只发送沙盒电子邮件(以防止人们将它们误认为是真正的付款电子邮件)。了解如何在 PayPal 沙盒中查看您的沙盒电子邮件。
问题 4:是的,许多 PayPal 产品都可以做到这一点,但具体情况因您集成的产品而异。例如。您可以在 POST 参数中传递 &shipping=0,或者您可能需要设置 NoShipping=True...阅读您用于设置/将用户重定向到 PayPal 授权流程的特定 PayPal 操作的文档。
关于php - 支付成功后获取交易明细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056780/
我听过很多次公司喜欢HBase的强一致性。我阅读了 HBase 并喜欢它。然后我想到了mongodb write和那时候的区别。查了一下MongoDB似乎也有很强的一致性。但它是一致的吗?看起来 HB
区块链入门 ③ - 交易 交易 概述 比特币交易本质上包含交易参与者价值转移的相关信息数据结构。比特币区块链是一本全球复式记账总账簿,每笔交易都是在比特币区块链上的一个公开记录.
我有以下情况: 我正在迭代我的Affiliate 实体,对于每个实体,我需要在一个唯一的事务中保存和更新数据。因此,我有一个服务,其方法用 Spring @Transactional 注释(其中创建和
我无法理解 DaoManager 的默认行为。 DaoManager.createDao(connectionSource, theClass); 这需要一个 connectionSource - 而
我是 Spring 新手,有一个关于事务的问题。 我知道对于每个 http 请求都有一个 servlet 线程,它有自己的堆栈。据我所知,所有局部变量和方法都驻留在堆栈上。因此,如果我有一个方法 pu
我想设计一个简单的应用程序(没有 j2ee 和 jms),可以处理大量消息(比如在交易系统中) 我创建了一个服务,可以接收消息并将它们放入队列中,这样系统就不会在过载时卡住。 然后我创建了一个包装队列
如果使用 PDO 事务,是否需要锁定表? 如果用户 a 有 50 笔钱,将 50 笔转给用户 b,PDO 交易是否会确保它们都无误地执行? 另外,如果说我有一个 if 语句, if ($user['m
我正在实现一个方法,它会做类似的事情: ... try { myPojo.setProperty("foo"); myService.execute(myPojo); } catch (E
我正在尝试使用 ActiveRecord::Base.transaction。我认为使用 Rails 1.2.6 和 mysql 5.0 默认情况下回滚不起作用。多玩一点我发现 autocommit
我在我的网站上使用嵌入式支付,支付交易直接从买家到卖家发起,服务充当 API 调用方。商品价格由卖家以美元设定,以简化国际贸易。 当发件人和收件人都是俄罗斯居民时,发件人会收到错误消息: The pa
如果我删除我的应用程序中的数据,然后重新购买一些我知道该帐户已经拥有的托管 IAP,iOS 会给我原生的“您确定要重新购买该项目吗?您不会被收取费用”对话框。这符合预期。 当购买返回到我的应用程序时,
我一直在阅读 transactions & jooq但我很难看到如何在实践中实现它。 假设我为 JOOQ 提供了一个自定义 ConnectionProvider,它恰好使用了一个自动提交设置为 fal
我们正在使用 Entity Framework 并在事务范围内运行单元测试。我们最初在标题中遇到错误。 我已经设法将问题隔离开来。 using (TransactionScope scope1 = n
我有一个注册页面,基本上我需要将数据插入到 4 个表中。我是 PDO 的新手,对某些事情感到困惑。 基本上,如果任何插入失败,我不想向数据库中添加任何内容,这看起来很简单。 我的困惑是,我需要首先在我
我使用枢轴点进行交易。我在屏幕指示器上使用以下指标“CM_Pivots_Filtered”、“Pivots”、“CD_PivotR”和“CM_Gaps_Intra-Day_V2.1”。这些枢轴工作得很
我正在努力解决 Sonar 问题: squid:S2229 "Methods should not call same-class methods with incompatible "@Transa
在我的 Controller 中,我有一些类似的代码... ... if user.save something = Something.where("thing = ?", thing)
我使用 StoreKit 进行应用内购买。我发现当用户按下“取消”按钮时,API 的行为很奇怪。 例如,如果我在“确认您的应用内购买”屏幕上按“取消”,我会收到一个带有 error.code == S
AppStore 在自动续订自动续订订阅时是否会发出交易?如果是这样,如果应用程序将自己设置为观察者,那么下次应用程序加载时是否可以可靠地检测到它: [[SKPaymentQueue defaultQ
我正在研究 EMV 技术,并寻找终端和发行者之间的通信(请求/响应)以进行授权/在线 PIN 检查。 我知道离线数据验证仅在终端上进行检查,然后终端将数据发送给发行者。我想知道授权过程需要发送哪些数据
我是一名优秀的程序员,十分优秀!