$token = $paypal->SetExpressCheckOut($products, $charges);
echo json_encode( array('token'=>$token ) );
只有2行,它采取了一个数组我们的产品&任何其他运输/手续费&返回了交易令牌,但新的方法很疯狂,它只是返回相同的交易ID....
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
$amount = new \PayPal\Api\Amount();
$amount->setTotal($cartTotal);
$amount->setCurrency('GBP');
$transaction = new \PayPal\Api\Transaction();
$transaction->setAmount($amount);
$redirectUrls = new \PayPal\Api\RedirectUrls();
$redirectUrls->setReturnUrl("https://www.paypal.com/checkoutnow/error")
->setCancelUrl("https://www.paypal.com/checkoutnow/error");
$payment = new \PayPal\Api\Payment();
$payment->setIntent('authorize')
->setPayer($payer)
->setTransactions(array($transaction))
->setRedirectUrls($redirectUrls);
try {
// $apiContext, set within our bootstrap file
$payment->create($apiContext);
// need to dig through the response 'approval_url'
// Locate token in links array,
// object "rel" == "approval_url":
/*
{
"href": "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXXXXXXXXXXXX",
"rel": "approval_url",
"method": "REDIRECT"
}
*/
// looking for token: EC-XXXXXXXXXXXXXXXXX
$res_data = json_decode($payment, true);
$urlInfo = parse_url($res_data['links'][1]['href']);
parse_str($urlInfo['query'], $queryParams);
// PASS THE TOKEN BACK TO JS FILE
echo json_encode(
array(
'token'=>$queryParams['token'],
'id' => $res_data['id']
)
);
}
catch (\PayPal\Exception\PayPalConnectionException $ex) {
// Print detailed information on the exception.
// HELPFUL FOR DEBUGGING
echo $ex->getData();
}
但是试图复制旧的getExpressicheckoutDetails以返回payerID是有问题的。
我的旧GetExpressCheckoutDetails方法如下所示。
$cartTotal = Context::getContext()->cart->getOrderTotal(true);
echo json_encode($paypal->GetExpressCheckoutDetails($cartTotal));
/*
return(
'res' => 'Success'
'token' => 'EC-XXXXXXXXXXXX',
'payerID' => 'MYT3NHXXXXXX'
)
*/
如果有人能提供一些关于如何返回付款后的付款ID捕获将是伟大的…
多谢
马蒂
让我试着让它变得简单,下面的方法将被调用为付款后的返回url
public function paypal_success(){
$payment = Payment::get($_REQUEST['paymentId'], $this->_api_context);
$paymentExecution = new \PayPal\Api\PaymentExecution();
$paymentExecution->setPayerId($_REQUEST['PayerID']);
$payment->execute($paymentExecution, $this->_api_context);
//var_dump($_REQUEST);
echo '<pre>';
var_dump($payment);
exit;
}
它将使用两类PayPal SDK:
$this->_api_context = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential("CLIENT_ID", "SECRET")
);
问题内容: 我正在从xml配置转移到注释。我想转换一个会话范围的bean是 可以通过注释完成此操作吗?如果没有,我该怎么做才能使该声明继续工作? 问题答案: 在spring上下文xml中,执行以下操作: 请注意,尽管如此,你将需要为该包中的所有类编写接口。
我目前使用PostGIS作为我在python脚本中执行的许多空间功能的主干。特别是取几个shapefile几何图形,看看它们是否相交,然后将它们分类到不同的目录中。我使用shp2pgsql上传shapefiles,然后使用ST_Intersects关联它们,然后使用脚本中的os/shutil函数对它们进行排序。 我的问题是,我们的一个团队只在政府网络上工作,无法获得系统管理员的postgres/p
问题内容: 我正在尝试做这样的事情: 但是,Python不允许这样做,这显然是有充分理由的。 有没有人有一个简单的解决方法? 问题答案: 该解决方案位于您在问题中提供的链接: 完整示例: 输出:
问题内容: 该表示法是: 实际上不哈希对象;它实际上只是转换为字符串(通过它是一个对象,还是其他各种原始类型的内置转换),然后在“ ”中查找该字符串,而不对其进行哈希处理。也不会检查对象是否相等-如果两个不同的对象具有相同的字符串转换,则它们将彼此覆盖。 鉴于此-在JavaScript中是否有任何有效的hashmap实现?(例如,第二个Google结果产生的实现对任何操作都是O(n)。其他各种结果
问题内容: 我正在尝试从Swift的iTunesU中的“开发适用于iPhone和iPad的ios7应用程序”中复制斯坦福Matchismo游戏。 在第3讲幻灯片的第77页上,它显示了使用,这不是Swift上的选项。Swift文档示例显示了一个具有数组的示例,但是我不知道如何使Interface Builder将多个插座连接到同一个/ Array。 有人知道如何做到这一点吗? 我知道我可以创建1
我正在尝试编写一个以便比较一些RDBMS、NewSQL和NoSQL。这个脚本只是执行查询并测量执行时间。 但是在mongodb-php中,函数返回一个 和是否等价(时间/数据成本)?游标不加载数据,我必须迭代游标才能加载数据…为什么在MySQL和mongoDB之间执行查询的时间如此不同或者仅仅是mongoDB的岩石... 我想知道将我的代码更改为:
问题内容: 我是一名普通的C#开发人员,但有时我会使用Java开发应用程序。我想知道是否有Java等效于C#async / await?简单来说,java相当于什么: 问题答案: 不,在Java中-甚至在v5之前的C#中,都没有等效的异步/等待方式。 在后台构建状态机是一项相当复杂的语言功能。 Java中对异步/并发的 语言 支持相对较少,但是该软件包包含许多与此相关的有用 类 。(不完全等同于任
问题内容: 我正在开发Java程序,我确实需要能够以一定的频率和持续时间播放声音,类似于c#方法System.Beep,我知道如何在C#中使用它,但是我找不到用Java做到这一点的一种方法。是否有等效的方法或另一种方法? 问题答案: 我认为没有办法在便携式2 Java 中用“哔”声播放音乐1。您将需要使用我认为的API …除非找到可以为您简化事情的第三方库。 如果您想走这条路,那么此页面可能会给您