我已使用非企业帐户创建沙箱帐户。 交易已创建:-
$amount = $_POST["amount"];
$nonce = $_POST["payment_method_nonce"];
$result = $gateway->transaction()->sale([
'amount' => $amount,
'paymentMethodNonce' => $nonce,
'options' => [
'submitForSettlement' => true]
]);
我得到的结果是:
错误处理交易:代码:2081文字:PayPal待付款 不支持
我不确定是由于帐户问题还是由于集成引起的问题。
答案 0 :(得分:0)
进行一些研究,这是您的沙盒帐户产生的货币问题。我为您提供了答案,并提供了源链接以进一步调查,因为这是一张公开票。
您的沙盒帐户似乎已设置为阻止来自PayPal帐户的付款,而该帐户使用的币种与您发出请求的币种不同。
如果这是您想要的行为,则需要使用与“插入”设置相同的币种创建一个测试客户帐户。
如果这不是您想要的行为,则可以登录sandbox.paypal.com并转到Profile > My Selling Tools > Block Payments
调整设置,或转到Profile > My Money > PayPal Balance section > More > Currencies
添加您尝试使用的帐户的币种使用。
答案 1 :(得分:0)
这为我解决了:
1)贝宝:在贝宝沙箱帐户中,我重新创建了一个新的企业帐户,该帐户指示有效运行应用程序的国家(在我的情况下为IT)。
2)贝宝(Paypal):使用刚刚生成的业务帐户,我创建了新的贝宝应用程序,并获得了贝宝客户ID和密码。
3)Braintree:我重新链接了我的Paypal Sandbox应用程序,指示新Paypal商业帐户的凭据:刚刚生成的应用程序的电子邮件,客户ID和客户密码。
4)进入我的应用程序/集成:在我的Braintree SDK js代码(v3)中,我在paypal设置js代码中设置了正确的货币(在我的情况下为EUR):
<script>
var form = document.querySelector('#checkout-form');
var client_token = "{{ $clientToken }}";
var price = $('#selected_service_price').val();
braintree.dropin.create({
authorization: client_token,
selector: '#bt-dropin',
paypal: {
flow: 'checkout',
amount: price,
currency: 'EUR'
}
}, function (createErr, instance) {
if (createErr) {
console.log('Create Error', createErr);
return;
}
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Request Payment Method Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});