【问题标题】:Adding custom variable to paypal parallel payments IPN PHP将自定义变量添加到贝宝并行支付 IPN PHP
【发布时间】:2015-05-16 08:16:40
【问题描述】:

您好,我正在尝试实现 PAYPAL PARALLEL API,并且我正在尝试将自定义变量传递给 paypal IPN 这是我的 PHP 代码,它在没有自定义变量的情况下工作,我不知道在哪里添加这个自定义字段:

$apiUrl = "https://svcs.sandbox.paypal.com/AdaptivePayments/";
$paypalUrl = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-payment&paykey=";

$headers = array(
    "X-PAYPAL-SECURITY-USERID : ".$paypal_user_id,
    "X-PAYPAL-SECURITY-PASSWORD : ".$paypal_pass,
    "X-PAYPAL-SECURITY-SIGNATURE : ".$paypal_user_signature,
    "X-PAYPAL-APPLICATION-ID : ".$paypal_app_id,
    "X-PAYPAL-REQUEST-DATA-FORMAT : JSON",
    "X-PAYPAL-RESPONSE-DATA-FORMAT : JSON"
);

// curl wrapper for sending thhings to paypal
function paypalSend($data,$call){
    global $apiUrl;
    global $headers;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL , $apiUrl.$call);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    return json_decode(curl_exec($ch),true);
}

//create the pay request
$createPacket = array(
    "actionType"=>"PAY",
    "currencyCode"=>"USD",
    "receiverList"=> array(
        "receiver" => array(
            array(
                "amount" => $amount,
                "email" => $email
            )
        )
    ),
    "returnUrl" => "http://www.mywebsite.com/finish_withdraw.php",
    "cancelUrl" => "http://www.mywebsite.com/cancel_withdraw.php",

    "requestEnvelope"=> array(
        "errorLanguage"=>"en_US",    // Language used to display errors
        "detailLevel"=>"ReturnAll"
    )
);

$response = paypalSend($createPacket, "Pay");

$payKey = $response['payKey'];
$paymentExecStatus = $response['paymentExecStatus'];

$detailPacket = array(
    "requestEnvelope"=> array(
        "errorLanguage"=>"en_US",    // Language used to display errors
        "detailLevel"=>"ReturnAll"
    ),
    "payKey" => $payKey,
    "receiverOptions" => array(
        array(
            "receiver"=> array("email" => $email),
            "invoiceData" => array(
                "item" => array(
                    array(
                        "name" => "product 1",
                        "price" => $amount,
                        "identifier" => "p1"
                    )
                )
            )
        )
    )
);

$response = paypalSend($detailPacket, "SetPaymentOptions");

//Wrapper to get payent details
$packet = array(
    "requestEnvelope"=> array(
        "errorLanguage"=>"en_US",    // Language used to display errors
        "detailLevel"=>"ReturnAll"
    ),
    "payKey" => $payKey,
);

$dets = paypalSend($packet, "GetPaymentOptions");

header('location: '.$paypalUrl.$payKey);

【问题讨论】:

  • 告诉我更多关于您想要发送什么样的自定义数据,以及您希望如何使用它。
  • 感谢您的回复^^,我尝试发送的是一个包含执行付款的用户ID的变量,这个ID我可以从我的数据库中获取它,我想收到这个ID在 ipn 通知中,以便将此付款插入我的数据库中,并通过他的 ID 将付款与特定用户链接。

标签: php paypal paypal-ipn paypal-sandbox paypal-adaptive-payments


【解决方案1】:

我相信我在以下网站上找到了您问题的答案:

https://enjoysmile.com/paypal-adaptive-payment-ipn-with-custom-variables/

只需在 IPN URL 上添加所需的变量。 示例:(在“取消 URL”后添加以下代码) "ipnNotificationUrl" => "http://www.example.com/paypal_ipn.php?custom1=1&custom2=2',

如果您检查 IPN 消息,您会在“ipn_notification_url”值上收到此值。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    除非贝宝在过去 3 年内修复了某些问题,否则我能做到这一点的唯一方法是将连字符数据作为 item_number 发送

    "item_number1": "t-253-22768-",
    

    这种格式是“类型”-“产品ID”-“用户ID”-“折扣码”

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2014-02-21
      • 2015-09-11
      • 2015-06-29
      • 2016-10-01
      • 1970-01-01
      • 2016-05-27
      • 2013-01-25
      • 2011-11-23
      相关资源
      最近更新 更多