【问题标题】:Paypal card payment贝宝卡支付
【发布时间】:2015-06-25 18:17:37
【问题描述】:

您好,我正在使用 php Paypal SDK,以下代码在输入重定向 url 时有效。但是我正在尝试设置直接卡支付,这是否需要重定向 url,因为所有示例代码似乎都忽略了它?

当使用重定向 url 对象时,我的应用程序只是将我重定向到 Paypal api 沙箱并要求登录帐户(这不是直接卡支付)

这是我返回的代码:

致命错误:未捕获的异常 'PayPal\Exception\PayPalConnectionException' 带有消息'Got Http 访问时响应码 400 https://api.sandbox.paypal.com/v1/payments/payment.'在 /Applications/MAMP/htdocs/tealtique/library/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php 在第 176 行

我的代码不包含名称间距,因为文件是控制器对象,名称间距没有问题。

    $apiContext = $this->paypal_access_token();
    $payment_description = 'Payment to comapany';
    $invoice_number = uniqid();

    $addr = new BaseAddress();
    $addr->setLine1($_POST['adr_line1']);
    $addr->setCity($_POST['adr_city']);
    $addr->setCountryCode($_POST['adr_country']);
    $addr->setPostalCode($_POST['adr_postal_code']);
    $addr->setState($_POST['adr_county']);

    $card = new CreditCard();
    $card->setNumber($_POST['card_number']);
    $card->setType($_POST['card_type']);
    $card->setExpireMonth($_POST['card_expire_mounth']);
    $card->setExpireYear($_POST['card_expire_year']);
    $card->setCvv2($_POST['card_cvv2']);
    $card->setFirstName($_POST['card_first_name']);
    $card->setLastName($_POST['card_last_name']);
    $card->setBillingAddress($addr);

    $fi = new FundingInstrument();
    $fi->setCreditCard($card);

    $payer = new Payer();
    $payer->setPaymentMethod("paypal");

    $item = new Item();
    $item->setName('Payment Instalment')
        ->setCurrency(PAYPAL_CURRENCY)
        ->setQuantity(1)
        ->setPrice($_POST['payment_amount']);

    $itemList = new ItemList();
    $itemList->setItems(array($item));

    $details = new Details();
    $details->setShipping(0)
            ->setFee(PAYPAL_FEE)
            ->setTax(0)
            ->setSubtotal($_POST['payment_amount']);

    $amount = new Amount();
    $amount->setCurrency(PAYPAL_CURRENCY)
        ->setTotal($_POST['payment_amount'])
        ->setDetails($details);

    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setItemList($itemList)
        ->setDescription($payment_description)
        ->setInvoiceNumber($invoice_number);

    $payment = new Payment();
    $payment->setIntent("sale")
        ->setPayer($payer)
        ->setTransactions(array($transaction));

    try {       
        $payment->create($apiContext);
    } catch (Exception $ex) {
        echo 'exception : <pre>';print_r(json_decode($ex->getData()));
        exit(1);
    }


    //$approvalUrl = $payment->getApprovalLink();
    //header('location:' . $approvalUrl);

我对如何使用 sdk 捕获错误消息也有点困惑,因为 Paypal 开发者网站上的文档只是说明了哪些错误会重新运行以及它们的含义,而不是如何捕获它们。

【问题讨论】:

  • 信用卡直接付款不需要重定向网址,因为买家永远不会离开您的网站。
  • 是的,我就是这样,但没有它们我会收到验证错误。有什么想法吗?

标签: php paypal sdk payment


【解决方案1】:

第一件事:

您可以捕获 PayPalHttpConnection 异常并打印详细消息,说明失败的原因。为此,请在您的代码周围添加一个 try catch 块。

try {
    $creditCard->create($apiContext);
    echo $creditCard;
}
catch (\PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getData();
}

我会将其添加到https://github.com/paypal/PayPal-PHP-SDK/wiki 的维基页面之一

其次,如果您打算使用信用卡直接付款,则不需要重定向 URL。您可以按照Payments using credit card information提供的示例https://paypal-php-sdk.herokuapp.com/

此外,您可以通过一个命令轻松地在本地计算机上设置示例,因为它已经随 SDK 一起提供。只需按照说明given here

【讨论】:

  • 谢谢您运行代码时信用卡号出错(可能是自动完成),但我的 cade 确实有效。关于错误发现和可用功能的更详细的文档会很棒。谢谢。
  • 我肯定会这样做。我们正在尝试向paypal.github.io/PayPal-PHP-SDK 添加越来越多的资源,并尽我们所能帮助您更轻松地进行集成。
猜你喜欢
  • 2011-01-08
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 2013-05-09
  • 2014-10-26
  • 2011-10-08
相关资源
最近更新 更多