使用支付宝沙箱进行平台支付

1.payService

String alikey = aliPayService.unifiedorder(transaction, subject, amount);
                System.out.println(alikey);
                AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
                AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
                AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
                //商户转账唯一订单号
                model.setOutBizNo("201809070000001");
                //收款方账户类型。
                //1、ALIPAY_USERID:pid ,以2088开头的16位纯数字组成。
                //2、ALIPAY_LOGONID:支付宝登录号(邮箱或手机号)
                model.setPayeeType("ALIPAY_LOGONID");
                //收款方账户。与payee_type配合使用。付款方和收款方不能是同一个账户。
                model.setPayeeAccount("***@sandbox.com");
                //测试金额必须大于等于0.1,只支持2位小数,小数点前最大支持13位
                model.setAmount("1.10");
                //当付款方为企业账户且转账金额达到(大于等于)50000元,remark不能为空。
                model.setRemark("转账备注");
                request.setBizModel(model);
                AlipayFundTransToaccountTransferResponse response = alipayClient.sdkExecute(request);
                System.out.println(response.getBody());
                if(response.isSuccess()){
                    System.out.println("调用成功");
                    incomeWithdrawuMapper.passUserWithdraw(id);
                    accountuMapper.updateEarningByWirhdrawu(userId,amount);
                    return 1;
                }else {
                    System.out.println("调用失败");
                    return 0;
                }

因为是实用沙箱进行支付,所以”alipayClient.sdkExecute”这个地方不可以写成”alipayClient.Execute”,后者是支付宝环境的支付

2.AliPayService


import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import backStage.exception.SimpleException;
import backStage.exception.SystemException;
import backStage.module.Configuration;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Map;

@Service
public class AliPayService {
    /**
     * 支付宝支付
     * @param transaction
     * @param subject
     * @param amount
     * @return
     */
    public String unifiedorder(String transaction,String subject, BigDecimal amount) {
        String domain = Configuration.property(Configuration.PROJECT_DOMAIN);
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", Configuration.property(Configuration.ALIPAY_APP_ID) ,Configuration.property(Configuration.ALIPAY_APP_PRIVATE_KEY), "json", "UTF-8", Configuration.property(Configuration.ALIPAY_ALIPAY_PUBLIC_KEY), "RSA2");
        AlipayTradeAppPayModel alipayTradeAppPayModel = new AlipayTradeAppPayModel();
        alipayTradeAppPayModel.setSubject(subject);
        alipayTradeAppPayModel.setOutTradeNo(transaction);
        alipayTradeAppPayModel.setTotalAmount(amount.toPlainString());
        alipayTradeAppPayModel.setProductCode("QUICK_MSECURITY_PAY");
        AlipayTradeAppPayRequest alipayTradeAppPayRequest = new AlipayTradeAppPayRequest();
        alipayTradeAppPayRequest.setBizModel(alipayTradeAppPayModel);
        alipayTradeAppPayRequest.setNotifyUrl(domain + Configuration.SYSTEM_ALI_PAYMENT_NOTIFY_URI);
        AlipayTradeAppPayResponse alipayTradeAppPayResponse = null;
        try {
            alipayTradeAppPayResponse = alipayClient.sdkExecute(alipayTradeAppPayRequest);
        } catch (AlipayApiException e) {
            throw new SystemException("支付宝支付异常:" + e.getErrCode() + "," + e.getErrMsg());
        }
        return alipayTradeAppPayResponse.getBody();
    }


    /**
     * 支付宝支付回调,参数校验
     * @param param
     */
    public void verified(Map<String, String> param){
        boolean signVerified = false;
        try{
            signVerified = AlipaySignature.rsaCheckV1(param, Configuration.property(Configuration.ALIPAY_ALIPAY_PUBLIC_KEY), "UTF-8", "RSA2");
        } catch (AlipayApiException e) {
            throw new SystemException("支付宝支付签名验证异常: " + e);
        }
        if(!signVerified){
            throw new SimpleException("非法的参数签名");
        }
    }
}

3.AlipayConfig
这里写图片描述
注意红框的位置,还是同样的问题,使用沙箱环境进行测试,参数应该是“alipaydev”,而使用支付宝环境时,应该是“alipay”

欢迎大家补充
ps:这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值