Php 对于贝宝,为什么要用三种方法来完成付款?
我不明白 据我目前所知,要完成一项完整的交易,必须有三种方法Php 对于贝宝,为什么要用三种方法来完成付款?,php,paypal,Php,Paypal,我不明白 据我目前所知,要完成一项完整的交易,必须有三种方法 SetExpressCheckout 有意义的是,我创建了一个包含所有项目的付款,然后将用户重定向到我在响应中收到的重定向URI GetExpressCheckoutDetails 此方法应位于SetExpressCheckout的returnurl上指定的url上。通过获取来自paypal的令牌并将其用于调用此方法,我们可以获得付款人ID,我们将使用该ID调用最终方法DoExpressCheckoutPayment DoExpres
$DECPFields = array(
'token' => $_GET['token'], // Required. A timestamped token, the value of which was returned by a previous SetExpressCheckout call.
'payerid' => $_GET['PayerID'], // Required. Unique PayPal customer id of the payer. Returned by GetExpressCheckoutDetails, or if you used SKIPDETAILS it's returned in the URL back to your RETURNURL.
'returnfmfdetails' => '1', // Flag to indiciate whether you want the results returned by Fraud Management Filters or not. 1 or 0. 'allowedpaymentmethod' => 'InstantPaymentOnly', // The payment method type. Specify the value InstantPaymentOnly.
'buttonsource' => '', // ID code for use by third-party apps to identify transactions in PayPal.
'USESESSIONPAYMENTDETAILS' => '1'
);
$PayPalRequest = array(
'DECPFields' => $DECPFields
);
$decp = $PayPal -> DoExpressCheckoutPayment($PayPalRequest);
这是请求/响应
Array
(
[TIMESTAMP] => 2014-04-13T00:14:26Z
[CORRELATIONID] => 7f6dd4f8798aa
[ACK] => Failure
[VERSION] => 112.0
[BUILD] => 10567876
[L_ERRORCODE0] => 10400
[L_SHORTMESSAGE0] => Transaction refused because of an invalid argument. See additional error messages for details.
[L_LONGMESSAGE0] => Order total is missing.
[L_SEVERITYCODE0] => Error
[ERRORS] => Array
(
[0] => Array
(
[L_ERRORCODE] => 10400
[L_SHORTMESSAGE] => Transaction refused because of an invalid argument. See additional error messages for details.
[L_LONGMESSAGE] => Order total is missing.
[L_SEVERITYCODE] => Error
)
)
[PAYMENTS] => Array
(
)
您对其他支付网关的解释本质上是什么。这是一个非常基本的HTML表单,它将用户发送到网关,用户在那里登录或输入cc详细信息以完成支付并完成支付。然后,您可以设置接收有关该事务的数据,并自动执行您提到的后处理任务 更先进。它使用了实际的API,并提供了更多的自由,可以按照您希望的方式来集成内容,以满足您的需求 首先,GetExpressCheckoutDetails是可选的。当您调用SetExpressCheckout然后重定向到PayPal时,您可以使用重定向URL上的“useraction”参数来更改体验。如果使用useraction=commit,那么将发生两件事
- PayPal查看页面上的按钮将从“继续”更改为“支付”
- PayPal将用户发送回您的站点时,PayRid将作为URL参数返回。如果愿意,可以直接跳到DoExpressCheckoutPayment
希望有帮助 假设我不使用useraction=commit——贝宝有什么想法?创建订单->重定向到贝宝->返回商户站点查看订单?(但是express checkout不是为了让你在完成之前不会回到商家商店吗?)-因为我仍然不理解GetExpress checkout细节部分,为什么它会在那里正常的流程包括用户被发送到PayPal登录或输入cc细节,然后查看订单并单击继续。那时它们会被发送回您的站点。您可以使用GECD获取发货地址,这样您就可以计算可能需要应用的发货/税务,并在致电DECP完成整件事情之前向您的买家显示最终审查页面。非常好的解释!所以我使用了useraction=commit,这样即使使用了SessionPaymentDetails和token,我也可以在失败时直接调用DoExpressCheckoutPayment,payerid提供:缺少订单总数?请检查我更新的答案代码。当它应该使用setexpress中的付款详细信息时,我不应该在这个请求中指定合计?好吧,是的,这种方式确实有效,而且也没有那么复杂。因为你已经在秒内完成了,所以在DECP中再做一次基本上是复制/粘贴。特别是如果你在用我的图书馆。