开发第三方银生宝支付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值校验错误!";
    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}

?>

页面效果

 

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