使用 Payflow Pro 退还费用的 PHP 代码

标签 php paypal payflowpro payflowlink

PayPal Payflow Pro 没有 PHP SDK。如何使用 PHP 退还 Payflow Pro 信用卡费用?如何做到这一点才能使我们符合 PCI 标准——不使用信用卡号?

最佳答案

下面是一些使用 curl 退还信用卡费用的 PHP 代码。此代码基于 Radu Manole 的 SDK。有关详细信息,请参阅 Payflow Pro 开发人员指南:https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_guide.pdf

$user = 'CHANGEME'; // API User Username
$password = 'CHANGEME'; // API User Password
$vendor = 'CHANGEME'; // Merchant Login ID

// Reseller who registered you for Payflow or 'PayPal' if you registered
// directly with PayPal
$partner = 'PayPal'; 

$sandbox = true;

$transactionId = 'CHANGEME'; // The PNREF # returned when the card was charged
$amount = '3';
$currency = 'USD';

$url = $sandbox ? 'https://pilot-payflowpro.paypal.com'
  : 'https://payflowpro.paypal.com';

$params = array(
  'USER' => $user,
  'VENDOR' => $vendor,
  'PARTNER' => $partner,
  'PWD' => $password,
  'TENDER' => 'C', // C = credit card, P = PayPal
  'TRXTYPE' => 'C', //  S=Sale, A= Auth, C=Credit, D=Delayed Capture, V=Void                        
  'ORIGID' => $transactionId,
  'AMT' => $amount,
  'CURRENCY' => $currency
);

$data = '';
$i = 0;
foreach ($params as $n=>$v) {
    $data .= ($i++ > 0 ? '&' : '') . "$n=" . urlencode($v);
}

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'Content-Length: ' . strlen($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
curl_close($ch);

// Parse results
$response = array();
$result = strstr($result, 'RESULT');    
$valArray = explode('&', $result);
foreach ($valArray as $val) {
  $valArray2 = explode('=', $val);
  $response[$valArray2[0]] = $valArray2[1];
}

print_r($response);

if (isset($response['RESULT']) && $response['RESULT'] == 0) {
  echo 'SUCCESS!';
} else {
  echo 'FAILURE: ' . $response['RESPMSG'] . ' ['. $response['RESULT'] . ']';
}

关于使用 Payflow Pro 退还费用的 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24073752/

相关文章:

paypal - 链式支付和 PayPal

paypal - 您能否在客户离开您的网站时实现 PayPal 自适应支付?

php - 为什么更新包时 "composer.json"没有更新?

php - PayPal Plus - Webhook - 更改数据库中的付款状态

php - Yii CDBCriteria 复杂连接查询

php - 如何在 paypal 重定向之前提交电子邮件

paypal - 关于 PayFlow Pro API 和最新版本下载地址的问题? (paypal_base.dll,版本 5.6.65.1,运行时 v1.1.4322)

paypal - 如何使用 PayPal PayFlow Pro 对信用卡处理进行完整测试?

php - 如何每 30 天自动更新数据库中的账户余额

php - 在 jQuery 中获取 PHP 变量