这是我的代码:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('name');
$gateway->setPassword('pass');
$gateway->setSignature('sig');
$gateway->setTestMode(true);
$resp = $gateway->purchase(
array(
'cancelUrl' => 'mysite/',
'returnUrl' => 'mysite/success',
'description' => "mysite item",
'amount' => $amount, //final amount
'currency' => 'EUR'
)
)->send();
if ($resp->isSuccessful()) {
// payment was successful: update database
// never reached
$a = new database('database');
$a->write database;
$dbp = null; die;
print_r($resp);
} elseif ($resp->isRedirect()) {
// redirect to offsite payment gateway
$resp->redirect();
} else {
echo $resp->getMessage();
header('Location: mysite/error');
exit;
}
如何在重定向后检索有关交易的信息?
如何在PayPal上修改此代码用于信用卡?
答案 0 :(得分:0)
根据您的评论,我认为您没有进入成功的付款阶段。
考虑到这一点,让我们看看快速结账流程并将其与DoDirectPayment api电话进行比较
===============
SetExpressCheckout API Call - 购物车宣布结账详情并返回“快速结账令牌”。令牌标识了商店从PayPal
将买方重定向到快速结帐网址,并将该标记附加到重定向网址 - https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6C677292NP7377708
(如果跳过第5步,则必须在重定向网址中添加useraction = commit参数)
买家登录并批准付款
买方被重定向回SetExpressCheckout API调用中宣布的返回URL,其中PayerID和令牌作为HTTP GET参数添加到返回URL
5.集成启动GetExpressCheckoutDetails API调用,检索送货信息并向买方显示最后一个概述和增加的运费。
===============
对于通过DoDirectPayment API进行的信用卡付款,API NVP请求和响应将如下所示 - 它应该非常简单。
Request:
VERSION = 109.0
METHOD = DoDirectPayment
PAYMENTACTION = Sale
IPADDRESS = 192.168.0.1
AMT = 0.01
CREDITCARDTYPE = Visa
ACCT = xxxxxxxx6840
EXPDATE = 102020
CVV2 = 123
FIRSTNAME = John
LASTNAME = Test
STREET = 12312 Port Grace Blvd
CITY = La Vista
STATE = NE
COUNTRYCODE = US
ZIP = 68128
CURRENCYCODE = USD
Response:
TIMESTAMP=2015-01-20T16:00:27Z
CORRELATIONID=180513f33ad52
ACK=Success
VERSION=109.0
BUILD=14726230
AMT=0.01
CURRENCYCODE=USD
AVSCODE=X
CVV2MATCH=M
TRANSACTIONID=0PA61839GE498951M}
===============
根据您在代码中的评论判断,您假设在第4步完成后交易完成。
由于我没有看到任何启动DoExpressCheckoutPayment API调用的代码,因此您需要确保至少完成第6步。
https://devtools-paypal.com/integrationwizard/包含可能有用的独立示例代码。 但是,使用基于SDK的集成将减轻很多痛苦:
https://devtools-paypal.com/guide/expresscheckout/php?interactive=ON&env=sandbox
...
如果您想在稍后阶段检索付款明细,可以针对DoDirectPayment API调用或DoExpressCheckoutPayment调用中返回的交易ID运行GetTransactionDetails API调用。
答案 1 :(得分:0)
您可以使用即时付款通知接收有关刚刚完成的交易的通知。 IPN是推荐的方式。