下载银联PHP sdk
添加银联技术服务QQ:800033969(遇到问题可以咨询,反应比较快捷)
运行银联支付SDK,测试商户号是否有权限.
如图:
点击跳转到“银联页面支付”,见到如下页面则说明SDK正常
我们把商户号(红色方框)改成自己的商户号,点击跳转到银联支付页面,如果提示以下报错,则通过刚刚的QQ联系技术支持,选择人工客服。
当客服处理好后。再进行开发。
需要注意的还有一点,银联支付PC和手机要在两个不同的商户。
所以配置上需要处理一下,会更加方便和符和逻辑。
使用银联SDK的时候,我就把配置文件改了,原来是
<?php
namespace com\unionpay\acp\sdk;
// ######(以下配置为PM环境:入网测试环境用,生产环境配置见文档说明)#######
// 签名证书路径
const SDK_SIGN_CERT_PATH = 'D:/WWW/pay/assets/test_cer/acp_test_sign.pfx';
// 签名证书密码
const SDK_SIGN_CERT_PWD = '000000';
// 密码加密证书(这条一般用不到的请随便配)
const SDK_ENCRYPT_CERT_PATH = 'D:/WWW/pay/Common/Conf/union_certs/dev/acp_test_enc.cer';
// 验签证书路径(请配到文件夹,不要配到具体文件)
const SDK_VERIFY_CERT_DIR = 'D:/WWW/pay/assets/test_cer/';
// 前台请求地址
const SDK_FRONT_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/frontTransReq.do';
// 后台请求地址
const SDK_BACK_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/backTransReq.do';
// 批量交易
const SDK_BATCH_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/batchTrans.do';
//单笔查询请求地址
const SDK_SINGLE_QUERY_URL = 'https://101.231.204.80:5000/gateway/api/queryTrans.do';
//文件传输请求地址
const SDK_FILE_QUERY_URL = 'https://101.231.204.80:9080/';
//有卡交易地址
const SDK_Card_Request_Url = 'https://101.231.204.80:5000/gateway/api/cardTransReq.do';
//App交易地址
const SDK_App_Request_Url = 'https://101.231.204.80:5000/gateway/api/appTransReq.do';
// 前台通知地址 (商户自行配置通知地址)
const SDK_FRONT_NOTIFY_URL = 'http://pay.dev.linglingtang.com/index.php?s=Pay/unionpay_return';
// 后台通知地址 (商户自行配置通知地址,需配置外网能访问的地址)
const SDK_BACK_NOTIFY_URL = 'http://pay.dev.linglingtang.com/index.php/Pay/unionpay_notify';
//文件下载目录
const SDK_FILE_DOWN_PATH = 'D:/file/';
//日志 目录
const SDK_LOG_FILE_PATH = 'D:/logs/';
//日志级别,关掉的话改PhpLog::OFF
const SDK_LOG_LEVEL = PhpLog::DEBUG;
/** 以下缴费产品使用,其余产品用不到,无视即可 */
// 前台请求地址
const JF_SDK_FRONT_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/frontTransReq.do';
// 后台请求地址
const JF_SDK_BACK_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/backTransReq.do';
// 单笔查询请求地址
const JF_SDK_SINGLE_QUERY_URL = 'https://101.231.204.80:5000/jiaofei/api/queryTrans.do';
// 有卡交易地址
const JF_SDK_CARD_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/cardTransReq.do';
// App交易地址
const JF_SDK_APP_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/appTransReq.do';
?>
改成:
<?php
namespace Common\Library\Pay\Unionpay\sdk;
// ######(以下配置为PM环境:入网测试环境用,生产环境配置见文档说明)#######
/**
* 银联配置
* @author Yoper
*
*/
class SDKConfig
{
// ######(以下配置为PM环境:入网测试环境用,生产环境配置见文档说明)#######
// 签名证书路径
private $SDK_SIGN_CERT_PATH = 'D:/certs/acp_test_sign.pfx';
// 签名证书密码
private $SDK_SIGN_CERT_PWD = '000000';
// 密码加密证书(这条一般用不到的请随便配)
private $SDK_ENCRYPT_CERT_PATH = 'D:/certs/acp_test_enc.cer';
// 验签证书路径(请配到文件夹,不要配到具体文件)
private $SDK_VERIFY_CERT_DIR = 'D:/certs/';
// 前台请求地址
private $SDK_FRONT_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/frontTransReq.do';
// 后台请求地址
private $SDK_BACK_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/backTransReq.do';
// 批量交易
private $SDK_BATCH_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/batchTrans.do';
//单笔查询请求地址
private $SDK_SINGLE_QUERY_URL = 'https://101.231.204.80:5000/gateway/api/queryTrans.do';
//文件传输请求地址
private $SDK_FILE_QUERY_URL = 'https://101.231.204.80:9080/';
//有卡交易地址
private $SDK_Card_Request_Url = 'https://101.231.204.80:5000/gateway/api/cardTransReq.do';
//App交易地址
private $SDK_App_Request_Url = 'https://101.231.204.80:5000/gateway/api/appTransReq.do';
// 前台通知地址 (商户自行配置通知地址)
// const SDK_FRONT_NOTIFY_URL = 'http://localhost:8085/demo/api_01_gateway/FrontReceive.php';
private $SDK_FRONT_NOTIFY_URL = 'http://pay.dev.linglingtang.com/index.php/Pay/unionpay_notify';
// 后台通知地址 (商户自行配置通知地址,需配置外网能访问的地址)
// const SDK_BACK_NOTIFY_URL = 'http://222.222.222.222/demo/api_01_gateway.php';
private $SDK_BACK_NOTIFY_URL = 'http://pay.dev.linglingtang.com/index.php/Pay/unionpay_return';
//文件下载目录
private $SDK_FILE_DOWN_PATH = 'D:/file/';
//日志 目录
private $SDK_LOG_FILE_PATH = 'D:/logs/';
//日志级别,关掉的话改PhpLog::OFF
private $SDK_LOG_LEVEL = PhpLog::DEBUG;
/** 以下缴费产品使用,其余产品用不到,无视即可 */
// 前台请求地址
private $JF_SDK_FRONT_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/frontTransReq.do';
// 后台请求地址
private $JF_SDK_BACK_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/backTransReq.do';
// 单笔查询请求地址
private $JF_SDK_SINGLE_QUERY_URL = 'https://101.231.204.80:5000/jiaofei/api/queryTrans.do';
// 有卡交易地址
private $JF_SDK_CARD_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/cardTransReq.do';
// App交易地址
private $JF_SDK_APP_TRANS_URL = 'https://101.231.204.80:5000/jiaofei/api/appTransReq.do';
private $merId = '';
function __construct($payment_code='chinaunion')
{
$pay_unionpay_config = C('PAY.unionpay');
$payment_code=='chinaunion'?$pay_unionpay_config =$pay_unionpay_config['pc']:$pay_unionpay_config =$pay_unionpay_config['mobile'];
$this->merId=$pay_unionpay_config['merId'];
$this->SDK_SIGN_CERT_PATH=$pay_unionpay_config['SDK_SIGN_CERT_PATH'];
$this->SDK_SIGN_CERT_PWD=$pay_unionpay_config['SDK_SIGN_CERT_PWD'];
$this->SDK_ENCRYPT_CERT_PATH=$pay_unionpay_config['SDK_ENCRYPT_CERT_PATH'];
$this->SDK_VERIFY_CERT_DIR=$pay_unionpay_config['SDK_VERIFY_CERT_DIR'];
$this->SDK_FRONT_NOTIFY_URL=$pay_unionpay_config['SDK_FRONT_NOTIFY_URL'];
$this->SDK_BACK_NOTIFY_URL=$pay_unionpay_config['SDK_BACK_NOTIFY_URL'];
}
/**
* 获取指定配置
* @param string $cnfname
*/
public function getConfigByName($cnfname)
{
if(empty($cnfname))
{
return false;
}
return $this->$cnfname;
}
}
?>
这样就可以这样调用配置,$config中就可以分别赋值pc的配置或者手机的配置
$SDKConfig_obj = new \Common\Library\Pay\Unionpay\sdk\SDKConfig($config);
$SDKConfig_obj->getConfigByName('SDK_FRONT_NOTIFY_URL')
SDK有个地方修改下
全局搜索“.LogInfo”,替换成“->LogInfo”.
生产环境证书
1.根据如下信息下载证书(下面是开户邮件的截图):
2.通过IE浏览器导出证书
亲爱的用户,您本次交易可能存在风险
为了保障您的资金安全,本次交易已被关闭,并仔细核对交易信息(如:商家的网址、名称及金额等), 谨防他人通过邮件、即时通讯工具等渠道发送到虚假商品、服务信息实施诈骗。
如果遇到这个问题,是因为银联有防钓鱼功能,联系商务处理。
注意:
1.银联支付同一个帐号不能集成网关支付和wap支付。所以做银联支付需要开通两个商户号,一个用于PC网关支付,一个用于移动端支付(APPLE PAY+APP+WAP)。
2.可以把其中一个商户添加另一个商户为共享关系,这样两个商户号就可以共享一个证书。比较方便。如图,右键->查看原图.
2016.10.24
其他链接
微信支付
支付宝支付