0

这是我的代码:

$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;
    }

重定向后如何检索有关交易的信息?
如何将此代码改编为贝宝上的信用卡?

4

2 回答 2

0

您可以使用即时付款通知来接收有关刚刚完成的交易的通知。IPN是推荐的方式。

于 2015-01-21T05:18:52.760 回答
0

根据您的评论,我认为您没有进入成功的付款阶段。

考虑到这一点,让我们看一下快速结帐流程并将其与 DoDirectPayment api 调用进行比较

================

  1. SetExpressCheckout API 调用 - 购物车宣布结帐详情并取回“快速结帐令牌”。令牌标识商店已向 PayPal 请求的结帐会话

  2. 买家被重定向到 Express Checkout URL,令牌被附加到重定向 URL - https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6C677292NP7377708

(如果跳过第 5 步,则必须在重定向 URL 中添加 useraction=commit 参数)

  1. 买家登录并批准付款

  2. 买家被重定向回在 SetExpressCheckout API 调用中宣布的返回 URL,其中 PayerID 和作为 HTTP GET 参数添加到返回 URL 的令牌

5. 集成启动 GetExpressCheckoutDetails API 调用,检索运输信息并向买家显示最后一个概览和添加的运输费用

  1. 一旦买家决定完成付款,他就会通过您在您网站上的集成来启动付款。然后网站调用 DoExpressCheckoutPayment 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 调用。

请参阅:https ://developer.paypal.com/webapps/developer/docs/classic/api/merchant/GetTransactionDetails_API_Operation_NVP/

于 2015-01-20T16:08:25.037 回答