一、前期准备(1-3个工作日)
-
商户认证
- 在拉卡拉官网注册企业商户账号,提交营业执照、法人身份证等材料,完成实名认证并获取商户号(MCH ID)和API密钥。
- 在拉卡拉开发者后台下载API文档(含接口参数说明)和SDK工具包(支持Java/PHP等语言)。
-
配置参数
- 在Likeshop后台设置拉卡拉支付参数:商户号、API密钥、异步通知地址(如
https://yourdomain.com/notify
)。 - 将拉卡拉支付域名(如
api.lakala.com
)加入Likeshop服务器白名单。
- 在Likeshop后台设置拉卡拉支付参数:商户号、API密钥、异步通知地址(如
二、技术对接(3-5个工作日)
1. 调用统一下单API生成支付订单
通过拉卡拉统一下单接口创建预支付订单,获取prepay_id
(支付凭证)。
- 请求参数(示例):
{ "merchant_id": "YOUR_MERCHANT_ID", // 拉卡拉商户号 "out_trade_no": "ORDER123456", // 订单号(需唯一) "total_fee": 100, // 金额(单位:分) "body": "商品描述", // 订单标题 "notify_url": " https://yourdomain.com/notify ", // 异步通知地址 "return_url": " https://yourdomain.com/return " // 同步跳转地址(可选) }
- 代码示例(Java):
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import com.google.gson.Gson; public class LakalaPayment { private static final String API_URL = " https://api.lakala.com/pay/unifiedorder "; private static final String API_KEY = "YOUR_API_KEY"; public String createOrder(String orderId, int amount) throws Exception { // 构建请求参数 String json = new Gson().toJson(new PaymentRequest( "YOUR_MERCHANT_ID", orderId, amount, "商品描述" )); // 发送HTTP请求 CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(API_URL); post.setHeader("Content-Type", "application/json"); post.setEntity(new StringEntity(json)); // 处理响应 try (CloseableHttpResponse response = client.execute(post)) { if (response.getStatusLine().getStatusCode() == 200) { String result = new String(response.getEntity().getContent().readAllBytes()); return parseResponse(result); // 解析返回的prepay_id } else { throw new Exception("支付请求失败:" + response.getStatusLine().getStatusCode()); } } } }
2. 前端唤起支付
- 若为H5/小程序,通过拉卡拉JS-SDK调用支付界面:
// 示例:调用拉卡拉支付SDK LakalaSDK.pay({ orderId: "ORDER123456", amount: 100, success: function(res) { console.log("支付成功", res); }, fail: function(err) { console.error("支付失败", err); } });
- 若为APP,直接跳转拉卡拉收银台页面(需集成SDK)。
三、异步通知与订单处理
- 接收支付结果
- 拉卡拉会向
notify_url
发送异步通知(POST请求),包含支付状态、订单号等信息。 - 示例通知参数:
{ "out_trade_no": "ORDER123456", "trade_status": "SUCCESS", // 支付状态(SUCCESS/FAIL) "total_fee": 100, "sign": "签名数据" // 需验证签名合法性 }
- 拉卡拉会向
- 验证签名与更新订单
- 使用拉卡拉提供的签名工具验证请求参数合法性(如RSA校验)。
- 若验证通过,更新订单状态为“已支付”,并触发后续业务逻辑(如发货、分账)。
四、测试与上线
- 沙箱环境测试
- 使用拉卡拉提供的测试商户号和沙箱接口,模拟支付成功/失败、退款等场景,验证回调逻辑和异常处理。
- 切换生产环境
- 测试通过后,将配置中的沙箱参数替换为生产环境参数,正式启用拉卡拉支付。