永发信息网

php 5.3.13怎么使用支付宝RSA2

答案:2  悬赏:60  手机版
解决时间 2021-03-19 21:18
php 5.3.13怎么使用支付宝RSA2
最佳答案
    配置开发者信息「私钥」And「App_id」

// 支付宝分配给开发者的应用ID
$app_id='';
// 开发者私钥,为这里填入方便,去头、去尾、去换行 字符串私钥,私钥处理放在签名方法内。
$private_key='';
// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$sign_type='RSA2';
2.组装部分请求参数:根据接口文档组装参数 app_id、method、format、timestamp、charset、version、notify_url、sign_type 

       
// 支付宝分配给开发者的应用ID
$params['app_id'] = $app_id;
// 接口名称
$params['method'] = 'alipay.trade.app.pay';
// 仅支持JSON
$params['format'] = 'json'; 
// 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
$params['timestamp'] = date("Y-m-d H:i:s");
// 请求使用的编码格式,如utf-8,gbk,gb2312等
$params['charset'] = 'UTF-8';
// 调用的接口版本,固定为:1.0
$params['version'] = '1.0';
// 支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
$params['notify_url'] = '';
// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
$params['sign_type'] = $sign_type;
       
3.组装业务参数json格式,并填充在$params数组中

// 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
$bizcontent['body'] = '非sdk原生php服务端生成请求订单';
// 商品的标题/交易标题/订单标题/订单关键字等。
$bizcontent['subject'] = 'php代码示例';
       

$date=date("YmdHis"); 
$arr=range(1000,9999);
shuffle($arr);
$out_trade_no=$date.$arr[0];

// 商户网站唯一订单号
$bizcontent['out_trade_no'] = $out_trade_no;
// 设置未付款支付宝交易的超时时间,一旦超时,该笔交易就会自动被关闭。当用户进入支付宝收银台页面(不包括登录页面),会触发即刻创建支付宝交易,此时开始计时。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
$bizcontent['timeout_express']='10m';
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
$bizcontent['total_amount'] = '0.01';
// 销售产品码,商家和支付宝签约的产品码
$bizcontent['product_code'] = 'QUICK_MSECURITY_PAY';
// 商品主类型:0—虚拟类商品,1—实物类商品 注:虚拟类商品不支持使用花呗渠道
$bizcontent['goods_type'] = '0';
// 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
$bizcontent['passback_params']='spicy%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b01%26custom%3d%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%82%e6%95%b02';
       
$biz_content=json_encode($bizcontent,JSON_UNESCAPED_UNICODE);

       
// 将业务参数填充在请求参数内
$params['biz_content'] = $biz_content;4.排序签名得到sign,并填充在$params数组中「签名方法请往下翻」
// 排序
ksort($params);
// 调用签名方法得到sign填入请求参数
$params['sign'] = sign($params, $params['sign_type'], $private_key);5.将参数urlencode输出查看,打印出来的参数可以直接放在客户端使用
// htmlspecialchars是为防止浏览器将参数中的「×」和「¬」转义
echo htmlspecialchars(http_build_query($params));工具方法:签名方法和检查是否为空方法

function sign($params,$signType,$private_key){
    $stringToBeSigned = "";
    $i = 0;
    // 将数组使用&符号拼接
    foreach ($params as $k => $v) {
        if (false === checkEmpty($v) && "@" != substr($v, 0, 1)) {
            if ($i == 0) {
                $stringToBeSigned .= "$k" . "=" . "$v";
            } else {
                $stringToBeSigned .= "&" . "$k" . "=" . "$v";
            }
            $i++;
        }
    }
    unset ($k, $v);
       
    // 私钥处理
    $res = "-----BEGIN RSA PRIVATE KEY-----".PHP_EOL.wordwrap($private_key, 64, PHP_EOL, true).PHP_EOL."-----END RSA PRIVATE KEY-----";
    ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置'); 
       
    // 
    if ("RSA2" == $signType) {
        openssl_sign($stringToBeSigned, $sign, $res, OPENSSL_ALGO_SHA256);
    } else {
        openssl_sign($stringToBeSigned, $sign, $res);
    }
    return base64_encode($sign);
}
       

function checkEmpty($value) {
    if (!isset($value))
        return true;
    if ($value === null)
        return true;
    if (trim($value) === "")
        return true;
    return false;
}
全部回答
直接安装在电脑上,直接打开就行了,有不会的可以问我或者和我一起在后盾人线上收费直播培训里学习,这里还提供全套课程资料和课堂视频,可以无限次反复观看。可好了。Σ(๑º㉨º๑ )
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
《劳动合同法》中提前解约会有哪些处罚?
绿野仙踪的篇名是什么
为什么中国的航天器要在东经发射?
销售公司用什么客户管理crm软件好,我们在南
孙玉芳超市我想知道这个在什么地方
某同学手指受伤并少量出血,在伤口自动凝固止
龙眼花结果可以施肥吗?
交通银行密码网上交易一天输入错误三次第二天
南京公交异型卡在哪办?
二天前塑料刷子掉进了蹲便器里,当时没注意放
雨刮清洗液老是提示不足请添加,可是我家了清
佰度造型地址在什么地方,我要处理点事!
女生推迟来大姨妈了心里是怎么想的
鄂尔多斯市东胜区赢兴教育咨询有限公司地址有
乌鲁木齐在哪里批发烟酒?
推荐资讯
电动托盘叉车和手推电动搬运车区别是什么?
股票最底价是多少
求杭盖乐队的《轮回》mp3
被动态、使役态、使役被动态的问题
2011情人节如何对拒绝我的女孩表白!!!
购买招行朝朝盈对办理信用卡有帮助吗
淘宝挥霍笔数是什么
吉他新手 想买吉他 自学 Epiphone dr100 还是
宝马标配防爆胎,为什么奥的不配
街头篮球黄颜色名字是怎么弄的?
第四大题??????????????
裕莀在名字里什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?