app集成支付宝,服务器生成请求签名字符串demo(PHP)
2017-09-22 18:25
676 查看
public function signstr(Request $request){ // 获取商户订单号 $tradeid = $request->input("tradeid"); // 查询订单信息 $info = DB::connection("bm")->table("bm_border")->where("tradeid","=",$tradeid)->first(); if($info){ // 拼接biz_content的内容 $biz_array = []; $biz_array['subject'] = $info["title"]; $biz_array['seller_id'] = Config::get("latrell-alipay-app.seller_id"); // $biz_array['total_amount'] = $info["total"]; $biz_array['total_amount'] = "0.01"; $biz_array['product_code'] = "QUICK_MSECURITY_PAY"; $biz_array['out_trade_no'] = $info["tradeid"]; $biz_array['timeout_express'] = "30m"; $biz_array['body'] = "我是测试数据"; $biz_str = json_encode($biz_array); // 获取参数值 $priKey = Config::get("latrell-alipay-app.privateKey"); $res = "-----BEGIN RSA PRIVATE KEY-----\n" . wordwrap($priKey, 64, "\n", true) . "\n-----END RSA PRIVATE KEY-----"; $oridata = [ 'notify_url'=>"http://www.cuijiapeng.com/notify.php", 'app_id'=>Config::get("latrell-alipay-app.app_id"), 'biz_content'=>$biz_str, 'charset'=>'utf-8', 'method'=>'alipay.trade.app.pay', 'timestamp'=>date("Y-m-d H:i:s",time()), 'version'=>'1.0', 'sign_type'=>'RSA2', ]; $uri = ""; // 将数组的关键字进行排序 ksort($oridata); $arraykey = array_keys($oridata); $arrayval = array_values($oridata); // 组装uri并且将值进行 encode 编码 foreach ($arraykey as $key => $value) { if($value == "timestamp"){ $arrayval[$key] = str_replace(" ","%20",$arrayval[$key]); $arrayval[$key] = str_replace(":","%3A",$arrayval[$key]); $uri .= $value."=".$arrayval[$key]."&"; }else{ $uri .= $value."=". urlencode($arrayval[$key])."&"; } } $uri = rtrim($uri,"&"); // 组装待签名字符串 $sigdata = ""; ksort($oridata); $arraykey = array_keys($oridata); $arrayval = array_values($oridata); foreach ($arraykey as $kk => $vv) { $sigdata .= $vv."=".$arrayval[$kk]."&"; } $sigdata = rtrim($sigdata,"&"); // 将组装好的待签名的字符串进行签名 openssl_sign($sigdata, $sign, $res, OPENSSL_ALGO_SHA256); //SRA2 $sign = urlencode(base64_encode($sign)); // 组装生成最终的请求字符串 $ordersign = $uri."&"."sign=".$sign; $datas['code'] = 200; $datas['singstr'] = $ordersign; }else{ $datas['code'] = 409; } return response()->json($datas); }Laravel版本Demo
相关文章推荐
- 1. elasticsearch配合mysql实现全文搜索(2678) 2. php支付宝rsa签名生成(2533) 3. centos7搭建gitlab服务器、汉化(595)
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- php生成android端支付宝请求参数
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝支付签名、请求、解析demo
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- PHP实现RSA签名生成订单功能【支付宝示例】
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- PHP生成腾讯云COS接口需要的请求签名
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- PHP 做 RSA 签名 生成订单(支付宝例子)
- [置顶] 支付宝APP支付-php后台生成请求参数
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改