简述
第三方的支付机构很多,每个支付机构的支付方式也都大不相同,有的甚至还没有开发DEMO,最近项目中使用的就是银生宝这一第三方支付机构。并且没有参考代码,仅有一个文档描述。DEMO还需自行开发。故此,将代码记录一些,如有需要的博友,自行阅读。
源码
首页支付请求:index.php
<?php
/**
* ===============================================
* Copy: Created by WEI ZHI HUA
* Author: ZHIHUA·WEI<zhihua_wei@qq.com>
* 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<zhihua_wei@qq.com>
* 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值校验错误!";
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
?>
页面效果
转载:https://blog.csdn.net/Zhihua_W/article/details/80460343
查看评论