開發第三方銀生寶支付DEMO

簡述

        第三方的支付機構很多,每個支付機構的支付方式也都大不相同,有的甚至還沒有開發DEMO,最近項目中使用的就是銀生寶這一第三方支付機構。並且沒有參考代碼,僅有一個文檔描述。DEMO還需自行開發。故此,將代碼記錄一些,如有需要的博友,自行閱讀。

源碼

首頁支付請求:index.php

<?php

/**
 * ===============================================
 * Copy: Created by WEI ZHI HUA
 * Author: ZHIHUA·WEI<[email protected]>
 * Date: 2018/5/25
 * Time: 08:51
 * Project: 銀生寶支付DEMO
 * Power: 首頁演示
 * ===============================================
 */
date_default_timezone_set("Asia/Shanghai");

//銀生寶正式支付接口地址
//$unspay_url = "http://www.unspay.com/unspay/page/linkbank/payRequest.do";
//銀生寶測試環境支付地址
$unspay_url = "http://xxxxx(測試環境ip:port)/unspay/page/linkbank/payRequest.do";
$version = '3.0.0';
$merchantId = 'xxxxxxxxxxxxxx(銀生寶提供的商戶號)';
$merchantUrl = 'https://xxxxxxx(回調地址)/notify.php';
$responseMode = '2';
$orderId = 'D' . time();
$currencyType = 'CNY';
$amount = 0.01;
$assuredPay = '';
$time = date("YmdHis");
$remark = 'payTest';
$merchantKey = 'xxxxxxx(銀生寶商戶密鑰)';

$s = "merchantId=";
$s .= $merchantId;
$s .= "&merchantUrl=";
$s .= $merchantUrl;
$s .= "&responseMode=";
$s .= $responseMode;
$s .= "&orderId=";
$s .= $orderId;
$s .= "¤cyType=";
$s .= $currencyType;
$s .= "&amount=";
$s .= $amount;
$s .= "&assuredPay=";
$s .= $assuredPay;
$s .= "&time=";
$s .= $time;
$s .= "&remark=";
$s .= $remark;
$s .= "&merchantKey=";
$s .= $merchantKey;
$mac = strtoupper(md5($s));
//$bankCode = 'mock';
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="ZHIHUA·WEI,銀生寶支付DEMO">
    <meta name="description" content="銀生寶支付DEMO,銀生寶,PHP開發,ZHIHUA· WEI">
    <meta name="author" content="ZHIHUA·WEI">
    <meta name="version" content="1.0.0">
    <title>銀生寶支付DEMO</title>
</head>
<body>
<div style="margin: 0;text-align:center;">
    <h2>銀生寶支付DEMO</h2>
</div>
<div style="margin:0 18%;">
    <h4>請求地址:</h4>
    <ul>
        <li><?php echo $unspay_url; ?></li>
    </ul>
</div>
<form action="<?php echo $unspay_url; ?>" method="post" target="_blank">
    <input type="hidden" name="version" value="<?php echo $version; ?>">
    <input type="hidden" name="merchantId" value="<?php echo $merchantId; ?>">
    <input type="hidden" name="merchantUrl" value="<?php echo $merchantUrl; ?>">
    <input type="hidden" name="responseMode" value="<?php echo $responseMode; ?>">
    <input type="hidden" name="orderId" value="<?php echo $orderId; ?>">
    <input type="hidden" name="currencyType" value="<?php echo $currencyType; ?>">
    <input type="hidden" name="amount" value="<?php echo $amount; ?>">
    <input type="hidden" name="assuredPay" value="<?php echo $assuredPay; ?>">
    <input type="hidden" name="time" value="<?php echo $time; ?>">
    <input type="hidden" name="remark" value="<?php echo $remark; ?>">
    <input type="hidden" name="mac" value="<?php echo $mac; ?>">
<!--    <input type="hidden" name="bankCode" value="--><?php //echo $bankCode; ?><!--">-->
    <input type="hidden" name="merchantKey" value="<?php echo $merchantKey; ?>">

    <div style="margin:0 18%;">
        <h4>請求參數:</h4>
        <ul>
            <li>version:<?php echo $version; ?></li>
            <li>merchantId:<?php echo $merchantId; ?></li>
            <li>merchantUrl:<?php echo $merchantUrl; ?></li>
            <li>responseMode:<?php echo $responseMode; ?></li>
            <li>orderId:<?php echo $orderId; ?></li>
            <li>currencyType:<?php echo $currencyType; ?></li>
            <li>amount:<?php echo $amount; ?></li>
            <li>assuredPay:<?php echo $assuredPay; ?></li>
            <li>time:<?php echo $time; ?></li>
            <li>remark:<?php echo $remark; ?></li>
            <li>mac:<?php echo $mac; ?></li>
            <li>merchantKey:<?php echo $merchantKey; ?></li>
        </ul>
        <button type="submit">提交</button>
    </div>

</form>

</body>
</html>

回調地址文件:notify.php

<?php
/**
 * ===============================================
 * Copy: Created by WEI ZHI HUA
 * Author: ZHIHUA·WEI<[email protected]>
 * Date: 2018/5/25
 * Time: 11:57
 * Project: 銀生寶支付DEMO
 * Power: 支付回調接收
 * ===============================================
 */

$merchantId = $_REQUEST["merchantId"];
$merchantKey = "123456abc";
$responseMode = $_REQUEST["responseMode"];
$orderId = $_REQUEST["orderId"];
$currencyType = $_REQUEST["currencyType"];
$amount = $_REQUEST["amount"];
$returnCode = $_REQUEST["returnCode"];
$returnMessage = $_REQUEST["returnMessage"];
$mac = $_REQUEST["mac"];
$success = $returnCode == "0000";
$paid = $returnCode == "0001";
$s = "merchantId=";
$s .= $merchantId;
$s .= "&responseMode=";
$s .= $responseMode;
$s .= "&orderId=";
$s .= $orderId;
$s .= "¤cyType=";
$s .= $currencyType;
$s .= "&amount=";
$s .= $amount;
$s .= "&returnCode=";
$s .= $returnCode;
$s .= "&returnMessage=";
$s .= $returnMessage;
$s .= "&merchantKey=";
$s .= $merchantKey;
$nowMac = strtoupper(md5($s));
//進行密文驗證
if ($nowMac == $mac) {
    //說明支付成功,在此處進行你的業務邏輯修改開發
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //商戶訂單號
    $order_sn = $orderId;

    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
} else {
    //此處支付未成功,進行支付未成功邏輯開發
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if ($success || $paid) {
        $success = false;
        $paid = false;
        $returnCode = "0401";
        $returnMessage = "mac值校驗錯誤!";
    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}

?>

頁面效果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章