银联支付 PHP

下载银联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.可以把其中一个商户添加另一个商户为共享关系,这样两个商户号就可以共享一个证书。比较方便。如图,右键->查看原图.






陈永鹏 Yoper

2016.10.24










其他链接

零零糖

微信支付

支付宝支付







猜你喜欢

转载自blog.csdn.net/yoperman/article/details/52794833