Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PayPal链接支付帮助[PHP]_Php_Paypal_Payment - Fatal编程技术网

PayPal链接支付帮助[PHP]

PayPal链接支付帮助[PHP],php,paypal,payment,Php,Paypal,Payment,我只是想用paypal链接支付做一个测试,这真的很令人沮丧。我这次测试的目标是向主接收器发送$15,然后向辅助接收器发送$1。这是我的密码: $api = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay"; $input = array( "actionType" => "PAY", "currencyCode" => "USD", "feesPayer" => "EACHRECEIVER",

我只是想用paypal链接支付做一个测试,这真的很令人沮丧。我这次测试的目标是向主接收器发送$15,然后向辅助接收器发送$1。这是我的密码:

$api = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay";

$input = array(
    "actionType" => "PAY",
    "currencyCode" => "USD",
    "feesPayer" => "EACHRECEIVER",
    "cancelUrl" => "https://www.google.com", //test url
    "returnUrl" => "https://www.google.com", //test url
    "receiverList" => array(    
        "receiver" => array( //send primary receiver $15
            "amount" => "15.00",
            "email" => "rbxseller1@gmail.com",
            "primary" => true
        ),
        "receiver" => array( //send owner of site $1 commission
            "amount" => "1.00",
            "email" => "rbxowner@gmail.com",
            "primary" => false
        )
    ),
    "requestEnvelope" => array(
        "errorLanguage" => "en_US"
    )
);

$headers = array(
    "X-PAYPAL-SECURITY-USERID: ".USER_ID, //predefined
    "X-PAYPAL-SECURITY-PASSWORD: ".USER_PASS, //predefined
    "X-PAYPAL-SECURITY-SIGNATURE: ".USER_SIG, //predefined
    "X-PAYPAL-REQUEST-DATA-FORMAT: JSON",
    "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON",
    "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T"
);

$ch = curl_init($api);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($input));

$response = curl_exec($ch);
var_dump($response);
当我尝试这样做时,它起作用了,但在我的付款详细信息中,它只向辅助收款人显示$1,没有主收款人的踪迹:

"receiver" => array(    
    array(/*primary receiver info*/),
    array(/*secondary receiver info*/)
),
{“paymentInfo”:[{“接收人”:{“金额”:“1.00”,“电子邮件”:”rbxowner@gmail.com“,”主“:”假“,”付款类型“:”服务“,”帐户ID“:”6LBSVJQNVE9DA“}”,待付款退款“:”假“}]}”

我尝试将“actionType”设置为“PAY_PRIMARY”,结果出现以下错误:

“消息”:“无效的请求参数:操作类型PAY_PRIMARY只能用于链接付款”,“参数”:[“PAY_PRIMARY”]

当我在youtube、stackoverflow、一些论坛网站等上查找时,发现没有太多有用的信息,这让我感到非常沮丧


非常感谢任何愿意花时间阅读本文并帮助我的人

您的错误在于这里的PHP数组语法:

"receiverList" => array(    
    "receiver" => array(/*primary receiver info*/),
    "receiver" => array(/*secondary receiver info*/)
),
关联数组的每个键只能有一个值(要了解原因,请想象一下从以这种方式声明的数组访问
$receiverList['receiver']
;它不知道您想要哪个)

对于PHP,这与编写
$foo=1相同$foo=2并期望1和2仍然在某个地方“存在”。所有发送到Paypal的信息如下:

"receiverList" => array(    
    "receiver" => array(/*secondary receiver info*/)
),
如果您回显
json\u encode($input)
,您可以自己看到这一点

我不知道数组应该是什么样子,但绝对不是这样。如果没有看到文档,我的最佳猜测是一个没有指定键的简单列表:

"receiverList" => array(    
    array(/*primary receiver info*/),
    array(/*secondary receiver info*/)
),
或者可能需要有
“receiver”
键,其中有两个条目:

"receiverList" => array(
    "receiver" => array(
        array(/*primary receiver info*/),
        array(/*secondary receiver info*/)
    )
),
或者您误读了文档,没有“receiverList”键,只有“receiver”:


无论是哪种变体,在你把这一点弄清楚之前,都没有必要更改查询的其余部分,因为现在你只向Paypal发送了一组接收者详细信息。

这真是令人沮丧。
欢迎来到Paypal的世界。@cola我更新了我的答案,提供了更多的解释和更多的可能性;我不知道哪一个是正确的,但我100%肯定你在问题中所说的是错误的,并且会导致你描述的症状。非常感谢!我对PHP和整个编程都是新手,你真的帮了我的忙。非常感谢您抽出时间,我真的很感谢您。此处列出的示例代码表明,IMSoP的“最佳猜测”建议是正确的解决方案。