加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP后端银联支付及退款实例代码

发布时间:2021-01-25 03:16:29 所属栏目:PHP教程 来源:网络整理
导读:副标题#e# 声明:此文以当前银联官方最新SDK(2016-08-09 5.1.0版)进行说明,若出现包不相同的情况请检查是否是此版本 近期遇到银联支付以及相关退款(此文仅以手机控件支付作为前提)操作,下面会依次写出期间遇到的问题以及基本流程,在此之前通过官方的一张

public function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}

}

二、全渠道商品订单推送

相关代码请点击查看

/**

  • 银联支付下单

  • @param $orders

  • @param $orders_type

  • @return array
    */
    public function unionPay($orders,$orders_type = 0)
    {
    include_once dirname(dirname(dirname(FILE))) . '/Model/unionpay-sdk/sdk/acp_service.php';
    $config = new SDKConfig();
    $AcpService = new AcpService();
    $log = LogUtil::getLogger();
    $time = date('YmdHis',time());
    $params = array(

    //以下信息非特殊情况不需要改动
    'version' => $config->getSDKConfig()->version,//版本号
    'encoding' => 'utf-8',//编码方式
    'txnType' => '01',//交易类型
    'txnSubType' => '01',//交易子类
    'bizType' => '000201',//业务类型
    'frontUrl' => $config->getSDKConfig()->frontUrl,//前台通知地址
    'backUrl' => $this->getURL('api_pay_unionpay_call_back'),//后台通知地址
    'signMethod' => $config->getSDKConfig()->signMethod,//签名方法
    'channelType' => '08',//渠道类型,07-PC,08-手机
    'accessType' => '0',//接入类型
    'currencyCode' => '156',//交易币种,境内商户固定156

    //TODO 以下信息需要填写
    'merId' => $this->getParameter('mer_id'),//商户代码,请改自己的测试商户号
    'orderId' => $orders["orderno"],//商户订单号,8-32位数字字母,不能含“-”或“
    'txnTime' => $time,//订单发送时间,格式为YYYYMMDDhhmmss,取北京时间
    'txnAmt' => $orders['total_price'] * 100,//交易金额,单位分
    );

$AcpService->sign ( $params ); // 签名
$url = $config->getSDKConfig()->appTransUrl;

$result_arr = $AcpService->post ($params,$url);

if(count($result_arr)<=0) { //没收到200应答的情况 $log->LogInfo('没收到200应答的情况');
}

// $this->printResult ($url,$params,$result_arr ); //页面打印请求应答数据

if (!$AcpService->validate ($result_arr) ){
  $log->LogInfo('应答报文验签失败');
}
if ($result_arr["respCode"] == "00"){
  //成功
  return array('txn_time'=>$time,'tn'=>$result_arr["tn"]);

// echo "后续请将此tn传给手机开发,由他们用此tn调起控件后完成支付。
n";
// echo "手机端demo默认从仿真获取tn,仿真只返回一个tn,如不想修改手机和后台间的通讯方式,【此页面请修改代码为只输出tn】。
n";
} else {
//其他应答码做以失败处理
return array('txn_time'=>$time,'tn'=>0);
//echo "失败:" . $result_arr["respMsg"] . "。
n";

}

}

在此注意txnTime格式不要传错,测试环境下应该不会出现什么问题,将得到的tn返回APP进行支付即可

三、异步通知处理以及订单交易状态查询

这一步主要作用为处理银联交易成功信息,并尽可能避免出现回调未处理导致问题。

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读