0

Payeezy支付网关已经成功与php集成。将交易类型保留为“AUTH_ONLY”。要完成交易,将进入管理面板并将其标记为完成,如屏幕截图所示。

在此处输入图像描述

现在我们希望允许商家添加运费,从我们的应用程序中计算总额,然后向 Payeezy 发送一个请求,其中包含要针对之前收到的交易标签收取的总金额并完成之前的预授权完成。

这是如何实现它的链接,但无法理解如何使用php。

提前致谢。

关于,苏迪尔

4

1 回答 1

0

我得到了正确的代码来做到这一点。这是 php 中的正确代码,并用正确的 payeezy 值填充所有变量。

class SoapClientHMAC extends SoapClient {
    public function __doRequest($request, $location, $action, $version, $one_way = NULL) {
global $context;
$hmackey = "********************"; // <-- Insert your HMAC key here
$keyid = "******"; // <-- Insert the Key ID here
$hashtime = date("c");
$hashstr = "POST\ntext/xml; charset=utf-8\n" . sha1($request) . "\n" . $hashtime . "\n" . parse_url($location,PHP_URL_PATH);
$authstr = base64_encode(hash_hmac("sha1",$hashstr,$hmackey,TRUE));
if (version_compare(PHP_VERSION, '5.3.11') == -1) {
    ini_set("user_agent", "PHP-SOAP/" . PHP_VERSION . "\r\nAuthorization: GGE4_API " . $keyid . ":" . $authstr . "\r\nx-gge4-date: " . $hashtime . "\r\nx-gge4-content-sha1: " . sha1($request));
      } 
   else {
    stream_context_set_option($context,array("http" => array("header" => "aut horization: GGE4_API " . $keyid . ":" . $authstr . "\r\nx-gge4-date: " . $hashtime . "\r\nx-gge4-content-sha1: " . sha1($request))));
        }
return parent::__doRequest($request, $location, $action, $version, $one_way);
     }

      public function SoapClientHMAC($wsdl, $options = NULL) {
global $context;
$context = stream_context_create();
$options['stream_context'] = $context;
return parent::SoapClient($wsdl, $options);
 }
   }

   $trxnProperties = array(
"User_Name" => "*******",
"Secure_AuthResult" => "",
"Ecommerce_Flag" => "",
"XID" => "",
"ExactID" => "******-**", //Payment Gateway
"CAVV" => "",
"Password" => "**********************", //Gateway       Password
"CAVV_Algorithm" => "",
"Transaction_Type" => $txn_type, //Transaction Code I.E. Purchase="00" Pre-Authorization="01" etc.
"Reference_No" => "",
"Customer_Ref" => "",
"Reference_3" => "",
"Client_IP" => "", //This value is only used for fraud investigation.
"Client_Email" => "", //This value is only used for fraud investigation.
"Language" => "en", //English="en" French="fr"
"Card_Number" => "4111111111111111", //For Testing, Use Test#s VISA="4111111111111111" MasterCard="5500000000000004" etc.
"Expiry_Date" => "1121", //This value should be in the format MM/YY.
"CardHoldersName" => "test",
"Track1" => "",
"Track2" => "",
"Authorization_Num" => $_POST["auth_no"],
"Transaction_Tag" => $_POST["txn_tag"],
"DollarAmount" => $_POST["amt"] + $_POST["shippingfee"],
"VerificationStr1" => "",
"VerificationStr2" => "",
"CVD_Presence_Ind" => "",
"Secure_AuthRequired" => "",
"Currency" => "",
"PartialRedemption" => "",
// Level 2 fields 
"ZipCode" => "",
"Tax1Amount" => "",
"Tax1Number" => "",
"Tax2Amount" => "",
"Tax2Number" => "" );


$client = new SoapClientHMAC("https://api.demo.globalgatewaye4.firstdata.com/transaction/v12/wsdl");
$trxnResult = $client->SendAndCommit($trxnProperties);


if(@$client->fault){
    // there was a fault, inform
    print "<B>FAULT:  Code: {$client->faultcode} <BR />";
    print "String: {$client->faultstring} </B>";
    $trxnResult["CTR"] = "There was an error while processing. No TRANSACTION DATA IN CTR!";
}
//Uncomment the following commented code to display the full results.

echo "<H3><U>Transaction Properties BEFORE Processing</U></H3>";
echo "<TABLE border='0'>\n";
echo " <TR><TD><B>Property</B></TD><TD><B>Value</B></TD></TR>\n";
foreach($trxnProperties as $key=>$value){
    echo " <TR><TD>$key</TD><TD>:$value</TD></TR>\n";
}
echo "</TABLE>\n";

echo "<H3><U>Transaction Properties AFTER Processing</U></H3>";
echo "<TABLE border='0'>\n";
echo " <TR><TD><B>Property</B></TD><TD><B>Value</B></TD></TR>\n";
foreach($trxnResult as $key=>$value){
    $value = nl2br($value);
    echo " <TR><TD valign='top'>$key</TD><TD>:$value</TD></TR>\n";
}
echo "</TABLE>\n";


// kill object
unset($client); 
于 2016-11-08T07:20:55.357 回答