1.订单码支付,首先下载官方网站提供的sdk包到你的项目中。
2.选择控制器复制官方文档的获取二维码相关的代码示例。打开sdk包中v2的index.php文件,这个才是你选择语言的具体代码。
3.引用里面所需要的类文件,文件下载到你的项目中后,需要根据你的项目文件,重新配置命名空间,而后在你的控制器中引用。(有些引用的文件中会引用到其他文件,那么相对应的文件也需配置新的命名空间)
4.将例图中示例代码复制到控制器中,修改为你的appid、公钥私钥等信息,及订单号价格等。(不要改动其他数据格式)
5.访问此代码,会得到一个二维码的信息,只需交给前端展示就行。
6.异步请求验证签名信息:
1)在配置信息中会提前设定好异步请求的路径信息。
2)异步验签官方文档:小程序文档 - 支付宝文档中心。此为php,选择异步同步通知数据验签的代码。
3)我在验签中,使用文档中的签名串拼接验签一直不通过,后来询问他们技术,说按post返回的数据顺序排列拼接签名字符串,结果就通过了。
<?php
public function alipay_notify_url()
{
$public_key = ""; //公钥
$notify_data = $_POST;
testLog('notifyOrder', date('Y-m-d H:i:s') . "【支付宝充值正常测试回调data】\r\n" . json_encode($notify_data,JSON_UNESCAPED_UNICODE) . "\r\n");
$aop = new AopClient ();
//编码格式
$aop->postCharset="UTF-8";
//签名方式
$sign_type="RSA2";
//支付宝公钥赋值
$aop->alipayrsaPublicKey= $public_key;
//回调的待验签字符串
$_POST ="gmt_create=".$notify_data['gmt_create']."&charset=utf-8&seller_email=".$notify_data['seller_email']."&subject=".$notify_data['subject']."&sign=".$notify_data['sign']."&buyer_id=".$notify_data['buyer_id']."&body=".$notify_data['body']."&invoice_amount=".$notify_data['invoice_amount']."¬ify_id=".$notify_data['notify_id']."&fund_bill_list=".$notify_data['fund_bill_list']."¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=".$notify_data['receipt_amount']."&buyer_pay_amount=".$notify_data['buyer_pay_amount']."&app_id=".$notify_data['app_id']."&sign_type=RSA2&seller_id=".$notify_data['seller_id']."&gmt_payment=".$notify_data['gmt_payment']."¬ify_time=".$notify_data['notify_time']."&version=1.0&out_trade_no=".$notify_data['out_trade_no']."&total_amount=".$notify_data['total_amount']."&trade_no=".$notify_data['trade_no']."&auth_app_id=".$notify_data['auth_app_id']."&buyer_logon_id=".$notify_data['buyer_logon_id']."&point_amount=0.00";
//把字符串通过&符号拆分成数组
$data = explode('&', $_POST);
$params = array();
//遍历数组
foreach ($data as $param) {
$item = explode('=', $param,"2");
$params[$item[0]] = $item[1];
}
//输出拆分后的数据,验签代码
$flag = $aop->rsaCheckV1($params, null, $sign_type);
}
7.回调通知这里,若刚开始失败,可用打印到文件里的信息取出来直接访问测试。我原本就是刚开始真机调试了多次,到验签最后一步一直没成功,也没打印到任何数据。后来用打印数据直接调试发现是验签方法中有个类文件未引用成功。
当然,若遇到其他问题,也可直接咨询支付宝在线技术支持,他们会详细的给你解答你遇到的问题。