【网页支付】支付宝内置浏览器调用支付功能

申明: 内容中的图片都消失了。

最近有这个需求,扫描二维码后打开一个网页,在网页中选择支付方式。

如果是微信打开,就调用微信的网页支付功能。

如果是支付宝打开,就调用支付宝的网页支付功能。

这篇讲解支付宝内置浏览器支付。


创建支付宝应用

完善这个需求之前,登录支付宝的管理平台。

进入开发者重点,创建一个应用。


选择支付应用,并填写应用名称



点击创建。

这个时候,注意功能选项里面添加 手机网站支付 , 需要签约。根据支付宝需要的信息签约。


设置公钥和私钥

我们查看支付宝官方密钥生成方法,我下载的Window密钥生成工具。

打开 RSA 签名工具后,选择密钥长度 2048。


然后设置到支付宝,并配置网关。




保存提交审核。



搭建Java服务器

支付宝官方文档中介绍的其实已经够详细。

我封装的核心代码:
创建AliPay.java 类。
 
private AlipayClient mClient;
private AlipayTradeWapPayRequest mAliPayRequest;

/**
* properties 是我的配置文件帮助类。
* url : https://openapi.alipay.com/gateway.do
* appId: 刚才创建的应用的APPID. 
* 公钥和私钥以及其它必须字段
 
   
 
   
*/
public AliPay() {
	mClient = new DefaultAlipayClient(
			properties.getAliURL(), properties.getAliAppID(), properties.getAliPrivateKey(),
				"json", "utf-8", properties.getAliPublicKey(), "RSA2");
	mAliPayRequest = new AlipayTradeWapPayRequest();
	}
	
/**
* 封装请求支付信息
* @param subject		商品名称
* @param totalAmount		商品金额
* @param body			Body
* @throws AlipayApiException 生成订单异常
* @return 支付宝交易页面 Web
*/
public String pay(String subject, String totalAmount, String body) throws AlipayApiException {
	AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
	String outTradeNo = getOutTradeNo();
	
	// 商户网站唯一订单号
	model.setOutTradeNo(getOutTradeNo());
	// 商品名称
	model.setSubject(subject);
	// 商品金额
	model.setTotalAmount(totalAmount);
	model.setBody(body);
	model.setProductCode("QUICK_WAP_PAY");
	mAliPayRequest.setBizModel(model);
	mAliPayRequest.setNotifyUrl(properties.getAliNotifyUrl()); // 异步支付通知
	return mClient.pageExecute(mAliPayRequest).getBody();
}
// 在外使用, String from = new AliPay().pay("费用", "0.01", "Your Body");

 
   
 
  

错误与原因



ISV 错误: 原因,未完成上面提到的签约操作。


欢迎大家补充。
以上

你可能感兴趣的:(支付宝,微信)