This code refers to the last 5 lectures from Han Shunping 149 video. Friends who need to learn can refer to this code
This is a test picture:
The following is the code part:
1 php 2 3 4 function HmacMd5($data, $key) 5 { 6 7 //The environment needs to be configured to support iconv, otherwise Chinese parameters cannot be processed normally 8 $key = iconv("GB2312", "UTF-8", $key); 9 $data = iconv("GB2312", "UTF-8", $data); 10 $b = 64; 11 if (strlen($key) > $b) { 12 $key = pack("H*", md5($key)); 13 } 14 $key = str_pad($key, $b, chr(0x00)); 15 $ipad = str_pad('', $b, chr(0x36)); 16 $opad = str_pad('', $b, chr(0x5c)); 17 $k_ipad = $key ^ $ipad; 18 $k_opad = $key ^ $opad; 19 return md5($k_opad . pack("H*", md5($k_ipad . $data))); 20 }21 //We asked Yibao payment how to generate a signature string 22 //Pass each request parameter in as $data: $key is the key assigned by Yibao to the merchant 23 24 ?> common.php 1 2 3 4 5 27 pay.php 1 2 3 4 5 php 6 include 'common.php'; 7 // Here we get the information submitted by the user 8 9 // 1. Get the order number 10 $p0_Cmd = "Buy"; 11 $p1_MerId = "10001126856"; 12 $p2_Order = $_REQUEST['p2_Order']; 13 $p3_Amt = $_REQUEST['p3_Amt']; 14 $p4_Cur = "CNY"; 15 // Product Name 16 $p5_Pid = ""; 17 $p6_Pcat = ""; // Product Type 18 $p7_Pdesc = ""; // Product introduction 19 // Just after Yibao payment is successful, information will be returned to the url 20 $p8_Url = "http://loaclhost/FUCKPHP/onlinezhifu/res.php"; 21 $p9_SAF = "0"; // Shipping Address 22 $pa_MP = ""; // Additional introduction 23 $pd_FrpId = $_REQUEST['pd_FrpId']; // Payment Channel 24 $pr_NeedResponse = "1"; // Response mechanism 25 // We splice the request parameters one by one (the order is very important when splicing!!) 26 $data=""; 27 $data=$data.$p0_Cmd; 28 $data=$data.$p1_MerId; 29 $data=$data.$p2_Order; 30 $data=$data.$p3_Amt; 31 $data=$data.$p4_Cur; 32 $data=$data.$p5_Pid; 33 $data=$data.$p6_Pcat; 34 $data=$data.$p7_Pdesc; 35 $data=$data.$p8_Url; 36 $data=$data.$p9_SAF; 37 $data=$data.$pa_MP; 38 $data=$data.$pd_FrpId; 39 $data=$data.$pr_NeedResponse; 40 41 $merchantKey ="69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl"; 42 // hmac是签名串,是用于易宝和商家互相确认的关键字 43 // 这里我们需要使用算法来生成(md5-hmac算法) 44 $hmac = HmacMd5($data,$merchantKey); 45 ?> 46 你的订单号是:echo $p2_Order; ?>支付的金额是echo $p3_Amt; ?> 47 48 65 payConfirm.php 1 php 2 include 'common.php'; 3 //获取从易宝支付网关返回的信息 4 $p1_MerId = "10001126856"; 5 $r0_Cmd = $_REQUEST['r0_Cmd']; 6 $r1_Code = $_REQUEST['r1_Code']; 7 $r2_TrxId = $_REQUEST['r2_TrxId']; 8 $r3_Amt = $_REQUEST['r3_Amt']; 9 $r4_Cur = $_REQUEST['r4_Cur']; 10 $r5_Pid = $_REQUEST['r5_Pid']; 11 $r6_Order = $_REQUEST['r6_Order']; 12$r7_Uid = $_REQUEST['r7_Uid']; 13 $r8_MP = $_REQUEST['r8_MP']; 14 $r9_BType = $_REQUEST['r9_BType']; 15 $hmac = $_REQUEST['hmac']; 16 17 // 拼接 18 $res_src = ""; 19 $res_src = $res_src . $p1_MerId; 20 $res_src = $res_src . $r0_Cmd; 21 $res_src = $res_src . $r1_Code; 22 $res_src = $res_src . $r2_TrxId; 23 $res_src = $res_src . $r3_Amt; 24 $res_src = $res_src . $r4_Cur; 25 $res_src = $res_src . $r5_Pid; 26 $res_src = $res_src . $r6_Order; 27 $res_src = $res_src . $r7_Uid; 28 $res_src = $res_src . $r8_MP; 29 $res_src = $res_src . $r9_BType; 30 $merchantKey = "69c1522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4P1"; 31 // 对返回的结果进行MD5-hmac加密处理,和返回的hmac签名串比较 32 if (HmacMd5($res_src, $merchantKey) == $hmac) { 33 if ($r1_Code == 1) { 34 if ($r9_BType == 1) { 35 echo '交易成功!'; 36 echo '订单号为' . $r6_Order . '支付成功!' . '所付金额是' . $r3_Amt . '易宝支付订单号' . $r2_TrxId; 37 echo '