1) 我正在尝试一段时间让 Omnipay/PayPal 工作。我的问题是我得到"ACK = 成功",但是当进入沙盒测试帐户时,买家和卖家都没有将交易显示为已预订。
2)我也觉得并非所有API都正确传输到PayPal(例如,使用Angell库正确显示品牌名称,但使用Omnipay它不接受变量。
任何人都可以在这两个问题上提供帮助。? - 请参阅下面的代码。我在这里检查了其他文章,它们不能解决我的问题。
<?php
//
// Input Variables
//
// Config
$domain = "http://localhost";
$directory = "http://localhost/omnipay/";
$returnURL = $directory."success.php";
$cancelURL = $directory."cancel.php";
$landingpage = "Billing";
$brandname = "TEST COMPANY";;
$customerservicenumber = "";
// Purchase Data
$invoiceNumber = "0000200202023939";
$currencyCode = "USD";
// PRODUCT DATA
$subscriptionName = "XXX";
$subscriptionDesc = "ZZZ";
$subscriptionAmt = "5.00";
require 'vendor/autoload.php';
use OmnipayOmnipay;
$gateway = Omnipay::create('PayPal_Express');
$gateway->setUsername('XXX');
$gateway->setPassword('XXX');
$gateway->setSignature('XXX');
$gateway->setTestMode(true);
$response = $gateway->purchase(
array(
// Settings
'brandname' => '',
'customerservicenumber'=> '',
'cancelURL' => $cancelURL,
'returnURL' => $returnURL,
'reqconfirmshipping' => '0',
'noshipping' => '1',
'allownote' => '0',
// Buyer data
'email' => $email,
'description'=> $subscriptionDesc,
'amount'=> $subscriptionAmt,
'currency'=> $currencyCode,
)
)->send();
$response->redirect();
?>
成功.php是同一个剧本,除了结尾
....
)->send();
$data = $response->getData();
//echo '<pre>'; print_r($data);
if($data['ACK'] == "Success"){
echo "ACK = Success!!!!!!";
}
?>
如前所述,我总是在最后得到 ACK = 成功,但金额不会从沙盒用户帐户中扣除。所以有些不对劲。知道吗?
看起来您没有完成购买。你的成功.php应该看起来像:
$response = $gateway->completePurchase($params)->send();
在重定向到PayPal之前,请将交易参数保存在会话变量中,然后在PayPal返回时使用它们完成购买。有关更多详细信息,请查看示例代码:https://github.com/omnipay/example/blob/master/index.php#L181