服务端
/**
* 支付宝小程序支付 (统一收单交易创建接口)
*
* @param [String] $out_trade_no 商户订单号(不可重复)
* @param [Price] $total_amount 订单总金额,单位为元
* @param [String] $buyer_id 买家的支付宝唯一用户号
* @param [String] $body 商品的描述
* @param [String] $subject 订单标题
* @param [String] $timeout_express 该笔订单允许的最晚付款时间
* @param [String] $product_code 销售产品码
* 更多参数查看官方文档
*
* @return array
*
*/
public function aliPay($out_trade_no, $total_amount, $buyer_id, $body = '会员充值', $subject = '会员充值', $timeout_express = '30m', $product_code = 'FACE_TO_FACE_PAYMENT')
{
$appId = '应用ID';
$privateKey = '开发者私钥';
$publicKey = '支付宝公钥';
$notify_url = '接收支付结果通知的回调地址';
$biz_data=[
'out_trade_no' => $out_trade_no,
'total_amount' => $total_amount,
'buyer_id' => $buyer_id,
'body'=> $body,
'subject'=> $subject,
'timeout_express'=> $timeout_express,
'product_code'=> $product_code,
];
$aop = new AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = $appId;
$aop->rsaPrivateKey = $privateKey;
$aop->alipayrsaPublicKey = $publicKey;
$aop->apiVersion = '1.0';
$aop->signType = "RSA2";
$aop->postCharset = "UTF-8";
$aop->format = "json";
$request = new AlipayTradeCreateRequest();
$request->setNotifyUrl($notify_url);
$request->setBizContent(json_encode($biz_data));
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if (!empty($resultCode) && $resultCode == 10000) {
$re_array=['trade_no'=> $result->$responseNode->trade_no];
return ['status' => true, 'msg' => $result->$responseNode->msg, 'data' => $re_array];
} else {
return ['status' => false, 'msg' => $result->$responseNode->msg, 'data' => []];
}
}
/**
* 支付回调处理
*
* @param [String] $app_id 应用ID
* @param [String] $out_trade_no 商户订单号
* @param [String] $trade_no 支付宝交易号
* @param [Number] $total_amount 订单金额
* 更多返回参数查看文档
*
*/
public function notify()
{
//验证订单是否存在
//验证回调金额与订单金额是否一致
//处理的业务逻辑 修改订单状态等操作
echo 'success';
}
小程序支付
my.tradePay({
// 调用订单创建接口,获得返回字段支付宝交易号trade_no
tradeNO:'trade_no',
success: (res) => {
content: JSON.stringify(res)
},
fail: (res) => {
content: JSON.stringify(res)
}
});