1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > WAP 站 支付宝付款流程代码演示

WAP 站 支付宝付款流程代码演示

时间:2020-03-19 11:27:49

相关推荐

WAP 站 支付宝付款流程代码演示

支付宝调用方法

public function alipay($out_trade_no,$total_amount){$pri_key =私钥;//手动更改$arr = ['app_id' => APPID,//手动更改'method' => 'alipay.trade.wap.pay','return_url' => '/return_state','charset' => 'utf-8','sign_type' => 'RSA2','timestamp' => date('Y-m-d H:i:s'),'version' => '1.0','notify_url' => '/notify_state','biz_content' => '',];$arr_param = ['subject' => '测试','out_trade_no' => $out_trade_no,//订单号'total_amount' => $total_amount,//商品总金额'product_code' => 'QUICK_WAP_WAY',];//转换json格式$arr['biz_content'] = json_encode($arr_param,JSON_UNESCAPED_UNICODE);//按键排序ksort($arr);//拼接url参数$str = urldecode(http_build_query($arr));$rsa = new \RSA();//生成签名$arr['sign'] = $rsa->rsaSign($str, $pri_key);//请求支付宝header('location:/gateway.do?' . http_build_query($arr));}

异步回调方法代码

/*** 支付宝异步返回*/public function notify_state(){$pub_key =支付宝公钥;//获取支付宝发送的数据$params = $_POST;//测试是否能走通//file_put_contents('./test.php', print_r($params,true) . "\r\n",FILE_APPEND);$sign = $params['sign'];//除去sign、sign_typeunset($params['sign']);unset($params['sign_type']);//排序ksort($params);//拼接字符串$str = urldecode(http_build_query($params));//使用公钥验签$rsa = new \RSA();$stat = $rsa->rsaCheck($str, $pub_key, $sign);if($stat){//判断支付状态if($params['trade_status'] == 'TRADE_SUCCESS' || $params['trade_status'] == 'TRADE_FINISHED'){$data = DB::table('order')->where('order_number',$params['out_trade_no'])->first();//根据订单号 判断订单金额是否一致if($data->sum_price == $params['total_amount']){//update order stat 更新订单状态$res = DB::table('order')->where('order_number',$params['out_trade_no'])->where('status',1)->update(['status'=>2]);if($res > 0){echo 'success';}}}}}

RSA类

<?phpclass RSA{/*** RSA签名* @param $data 待签名数据* @param $private_key 私钥字符串* return 签名结果*/function rsaSign($data, $private_key) {$search = ["-----BEGIN RSA PRIVATE KEY-----","-----END RSA PRIVATE KEY-----","\n","\r","\r\n"];$private_key=str_replace($search,"",$private_key);$private_key=$search[0] . PHP_EOL . wordwrap($private_key, 64, "\n", true) . PHP_EOL . $search[1];$res=openssl_get_privatekey($private_key);if($res){openssl_sign($data, $sign,$res,OPENSSL_ALGO_SHA256);openssl_free_key($res);}else {exit("私钥格式有误");}$sign = base64_encode($sign);return $sign;}/*** RSA验签* @param $data 待签名数据* @param $public_key 公钥字符串* @param $sign 要校对的的签名结果* return 验证结果*/function rsaCheck($data, $public_key, $sign) {$search = ["-----BEGIN PUBLIC KEY-----","-----END PUBLIC KEY-----","\n","\r","\r\n"];$public_key=str_replace($search,"",$public_key);$public_key=$search[0] . PHP_EOL . wordwrap($public_key, 64, "\n", true) . PHP_EOL . $search[1];$res=openssl_get_publickey($public_key);if($res){$result = (bool)openssl_verify($data, base64_decode($sign), $res,OPENSSL_ALGO_SHA256);openssl_free_key($res);}else{exit("公钥格式有误!");}return $result;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。