背景:在项目,需要用到支付功能,支付宝提供沙箱测试环境,阿里巴巴快打广告费…

一. 支付宝沙箱环境

1.1 注册账号

在准备之前,你得有一个账号,

https://open.alipay.com/platform/appDaily.htm?tab=info官网注册账号

Ios怎么登录沙盒测试账号_Ios怎么登录沙盒测试账号

1.2 创建研发应用

我用到的是网页&移动应用,你可以根据你的需要完成创建应用,按照提示创建即可,需要提交审核,名称不能包含阿里,支付宝等等,应用图标不能为常见的图标,存在侵权,等待审核通过。

Ios怎么登录沙盒测试账号_java_02


接下来,配置沙箱配置,APPID,支付宝网关保持默认就好,设置RSA2(SHA256)密钥(推荐):点击感叹号,进入生成。

Ios怎么登录沙盒测试账号_java_03


近期上线了在线生成密钥,点击生成密钥,保存密钥,后面会用到。

Ios怎么登录沙盒测试账号_Ios怎么登录沙盒测试账号_04


将应用公钥设置到RSA2(SHA256)密钥(推荐),选择加签模式为公钥,保存设置,会生成一个支付宝公钥,保存一下,后面会用到。

Ios怎么登录沙盒测试账号_支付宝_05


授权回调地址可以选填,后面有说明。

1.3 沙箱账号

Ios怎么登录沙盒测试账号_spring boot_06


在沙箱应用中,有下载沙箱测试APP二维码,目前只有Android的,根据你的沙箱账号登录即可。

二. 接入项目

2.1 配置类

@Configuration
public class AlipayConfig {
    //填写您的AppId(必填)
    private static final String APP_ID = "";
    //应用私钥(必填)
    private static final String APP_PRIVATE_KEY ="";
    //支付宝公钥,而非应用公钥(必填)
    public static final String ALIPAY_PUBLIC_KEY = "";
    //默认即可(必填)
    public static final String CHARSET = "utf-8";
    //默认即可(必填)
    public static final String SIGN_TYPE = "RSA2";

    @Bean
    public AlipayClient alipayClient(){
        return new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do",
                APP_ID,
                APP_PRIVATE_KEY,
                "json",
                CHARSET,
                ALIPAY_PUBLIC_KEY,
                SIGN_TYPE);
    }
}

2.2 实现类

  • 不知道为什么这种方式用了,报订单信息无法识别,请联系卖家的错误,修改了参数,还是不行。存在钓鱼风险提示页面
request.setBizContent("{" +
"\"out_trade_no\":\"20150320010101001\"," +
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
"\"total_amount\":88.88," +
"\"subject\":\"Iphone6 16G\"," +
"\"body\":\"Iphone6 16G\"" +
"}"}

修改为直接设置

public String alipayTradePagePay(Order order) throws AlipayApiException {
        //实例化客户端
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();

        AlipayTradePagePayModel model = new AlipayTradePagePayModel();
        String outTradeNo = UUID.randomUUID().toString().replace("-", "");
        // 设置支付信息
        model.setOutTradeNo(outTradeNo);
        model.setProductCode("FAST_INSTANT_TRADE_PAY");
        model.setSubject("");
        model.setTotalAmount("");
        model.setTimeoutExpress("30m");
        request.setBizModel(model);
        // 设置回调地址
        request.setReturnUrl("");//支付成功后返回的页面
        request.setNotifyUrl("");//回调的页面,用来执行支付成功后的接口调用
        try {
            // 返回支付页面
            AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
//            System.out.println(response.getBody());//输出的就是Form表单
            return response.getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        return null;
    }

request.setNotifyUrl("");地址需要公网能够访问,最好使用域名。在下面填写你的授权回调地址。

Ios怎么登录沙盒测试账号_支付宝_05


出现问题,可以通过https://opensupport.alipay.com/support/tools/cloudparse?ant_source=openmonitor排查。

  • vue
handlerAlipay:function(){
   axios.post(url, this.order)
        .then(response => {
            console.log(response);
            document.querySelector('body').innerHTML = response.data;//查找到当前页面的body,将后台返回的form替换掉他的内容
            document.forms[0].submit();  //执行submit表单提交,让页面重定向,跳转到支付宝页面
        }).catch(err => {
            console.log(err);
        })
},

三. 测试

Ios怎么登录沙盒测试账号_java_08