因为版本的问题,不支import()这种引入类方法,就只能用require。。。
支付宝给的sdk不支持composer,只能手动导入
我是在vendor下创建alipay,然后再aop,接着放下载到的sdk
在需要的地方引入
require CMF_ROOT.'/vendor/alipay/Aop/AopClient.php';
require CMF_ROOT.'/vendor/alipay/Aop/request/AlipaySystemOauthTokenRequest.php';
然后使用支付宝给出的示例,但是在5.1版本引入时候需要在new后面加上\
公钥跟私钥完全按照官方给出的软件下载生成就好
$c = new \AopClient;
$c->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$c->appId = "app_id";
$c->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串' ;
$c->format = "json";
$c->charset= "utf-8";
$c->signType= "RSA2";
$c->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify
$request = new \AlipayOpenPublicTemplateMessageIndustryModifyRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
$request->setBizContent = "{" .
" \"primary_industry_name\":\"IT科技/IT软件与服务\"," .
" \"primary_industry_code\":\"10001/20102\"," .
" \"secondary_industry_code\":\"10001/20102\"," .
" \"secondary_industry_name\":\"IT科技/IT软件与服务\"" .
" }";
$response= $c->execute($request);
然后是小程序的支付,首先生成订单发起统一下单
//进行支付宝统一下单操作
public function alipay_do_order(){
$param= $this->request->param();
$order_sn='T02002082158045248850232';//自己生成的唯一订单号
$user_id='2088***********';//上一步获取的user_id
$order_money='0.01';
$aop = new \AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '******';//这个是应用id
$aop->rsaPrivateKey = '*********=';//私钥
$aop->alipayrsaPublicKey='###';//公钥
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='utf-8';
$aop->format='json';
$request = new \AlipayTradeCreateRequest ();
$arr_info=array(
'out_trade_no'=>$order_sn,
'total_amount'=>$order_money,
'subject'=>'华为P30',//产品的标题
'buyer_id'=>$user_id,
// 'timeout_express'=>'30m',
);
$arr_info_json= json_encode($arr_info);
$request->setBizContent($arr_info_json);
$result = $aop->execute ( $request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode;
$the_result= json_decode( json_encode( $resultCode),true);
if ($the_result['code'] == 1000) {
# code...
session('the_result',$the_result);
}
$this->success('请求成功!', $the_result );
}
成功返回后会获得交易单号跟订单号,在小程序端把交易号发送然后拉起支付界面
my.tradePay({
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号trade_no
tradeNO: '201711152100110410533667792',//填在这里
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});
然后根据返回的resultCode 进行回调操作