【发布时间】:2020-11-01 15:20:58
【问题描述】:
我是PHP新手,不知道能不能做到。我正在建立一个在线商店,我想在将数据发送到支付网关之前将订单保存在数据库中。当我将数据发送到外部页面(支付网关)时,我无法先记录买家的数据,而无需执行额外的步骤(页面)。
编辑:我应该提到我已经缩短了我附加的代码。是的,在 SESSION 中有一个购物车,我有所有订单详细信息。问题是我从 Redsys 使用的方法是重定向。我通过向其发送数组中的一些字段来将付款委托给他们的网关。因此,当用户单击“支付”按钮时,我离开我的网站并转到网关,在那里付款,如果一切正常,网关允许我转到 URLOK 或 URLKO。我尝试的是在结帐表单中,它由买家/客户数据和重定向到网关的“summit”按钮组成,在转到网关 URL 之前,将订单插入状态为“PENDING”,然后当它从 URLOK 或 URLKO 返回更新状态。简而言之,我需要通过单击执行这两个步骤:
- 在数据库中插入
- 向 REDSYS Gatewey 提交数据
否则,您将不得不执行一个额外步骤,首先制作一个保存买家和订单数据的表单,然后制作一个“检查您的数据”类型的额外屏幕,然后将必要的内容发送到网关。
<?php
include 'config/apiRedsys.php';
$miObj = new RedsysAPI;
$currency="978";
$url="";
$urlOKKO="http://localhost/confirmed";
$urlKO="http://localhost/ko";
$id=time();
$amount=50000;
// Fill fields
$miObj->setParameter("DS_MERCHANT_AMOUNT",$amount);
$miObj->setParameter("DS_MERCHANT_ORDER",$id);
$miObj->setParameter("DS_MERCHANT_CURRENCY",$currency);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$url);
$miObj->setParameter("DS_MERCHANT_URLOK",$urlOKKO);
$miObj->setParameter("DS_MERCHANT_URLKO",$urlKO);
$version="HMAC_SHA256_V1";
$kc = 'key';
$request = "";
$params = $miObj->createMerchantParameters();
$signature = $miObj->createMerchantSignature($kc);
?>
<form class="needs-validation" novalidate action="https://sis-t.redsys.es:25443/sis/realizarPago" method="POST" target="_blank">
<input type="hidden" name="Ds_SignatureVersion" value="<?php echo $version; ?>"/>
<input type="hidden" name="Ds_MerchantParameters" value="<?php echo $params; ?>"/>
<input type="hidden" name="Ds_Signature" value="<?php echo $signature; ?>"/>
<div class="row">
<div class="col-md-6 mb-3">
<label for="firstName">Name</label>
<input type="text" class="form-control" id="firstName" name="firstName" placeholder="" required>
<div class="invalid-feedback">
Required valid name
</div>
</div>
<div class="col-md-6 mb-3">
<label for="lastName">Apellidos</label>
<input type="text" class="form-control" id="lastName" name="lastName" placeholder="" required>
<div class="invalid-feedback">
Required valid surname
</div>
</div>
</div>
<div>
<input type="submit" value="Confirm and pay" class="a-button-input" />
</div>
</form>
【问题讨论】:
-
你需要使用
Ajax&jQuery
标签: php