Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

PaymentBankCardDemo.java 4.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package io.renren.demo;
  2. import com.alibaba.fastjson.JSON;
  3. import io.renren.dto.temp.PaymentBankCardInfo;
  4. import io.renren.dto.temp.PaymentBankCardParams;
  5. import io.renren.dto.temp.PaymentBankCardPayMethods;
  6. import io.renren.dto.temp.PaymentBankCardResult;
  7. import io.renren.dto.temp.PaymentPayerInfo;
  8. import io.renren.dto.temp.TradeCreateResult;
  9. import io.renren.dto.temp.ValidationSmsParams;
  10. import io.renren.dto.temp.ValidationSmsResult;
  11. import io.renren.util.LLianPayClient;
  12. import io.renren.util.LLianPayDateUtils;
  13. import security.LLianPayAccpSignature;
  14. /**
  15. * 银行卡快捷支付 Demo
  16. */
  17. public class PaymentBankCardDemo {
  18. public static void main(String[] args) {
  19. // 调用统一支付创单接口进行创单
  20. TradeCreateResult tradeCreateResult = TradeCreateDemo.userTopup();
  21. // 使用银行卡快捷方式完成支付
  22. PaymentBankCardParams params = new PaymentBankCardParams();
  23. String timestamp = LLianPayDateUtils.getTimestamp();
  24. params.setTimestamp(timestamp);
  25. params.setOid_partner(tradeCreateResult.getOid_partner());
  26. params.setTxn_seqno(tradeCreateResult.getTxn_seqno());
  27. params.setTotal_amount(tradeCreateResult.getTotal_amount());
  28. params.setRisk_item("{\"frms_ware_category\":\"4007\",\"goods_name\":\"西瓜\",\"user_info_mercht_userno\":\"LLianPayTest-In-User-12345\",\"user_info_dt_register\":\"20220823101239\",\"user_info_bind_phone\":\"13208123456\",\"user_info_full_name\":\"连连测试\",\"user_info_id_no\":\"\",\"user_info_identify_state\":\"0\",\"user_info_identify_type\":\"4\",\"user_info_id_type\":\"0\",\"frms_client_chnl\":\" H5\",\"frms_ip_addr\":\"127.0.0.1\",\"user_auth_flag\":\"1\"}");
  29. // 设置付款方信息
  30. PaymentPayerInfo payerInfo = new PaymentPayerInfo();
  31. payerInfo.setUser_id(tradeCreateResult.getUser_id());
  32. // 用户:LLianPayTest-In-User-12345 密码:qwerty,本地测试环境测试,没接入密码控件,使用本地加密方法加密密码(仅限测试环境使用)
  33. payerInfo.setPassword(LLianPayAccpSignature.getInstance().localEncrypt("112233"));
  34. params.setPayerInfo(payerInfo);
  35. // 设置付款银行卡信息
  36. PaymentBankCardInfo bankCardInfo = new PaymentBankCardInfo();
  37. // 使用该用户的绑卡协议号
  38. bankCardInfo.setLinked_agrtno("2022101500415011");
  39. params.setBankCardInfo(bankCardInfo);
  40. // 设置付款方式信息,支持组合支付,传入数组
  41. PaymentBankCardPayMethods payMethod = new PaymentBankCardPayMethods();
  42. // 协议支付借记卡
  43. payMethod.setMethod("AGRT_DEBIT_CARD");
  44. payMethod.setAmount(tradeCreateResult.getTotal_amount());
  45. params.setPayMethods(new PaymentBankCardPayMethods[]{payMethod});
  46. // 测试环境URL
  47. String url = "https://accpapi-ste.lianlianpay-inc.com/v1/txn/payment-bankcard";
  48. LLianPayClient lLianPayClient = new LLianPayClient();
  49. String resultJsonStr = lLianPayClient.sendRequest(url, JSON.toJSONString(params));
  50. PaymentBankCardResult bankCardResult = JSON.parseObject(resultJsonStr, PaymentBankCardResult.class);
  51. System.out.println(bankCardResult);
  52. // 小额免验,不需要验证码,直接返回0000
  53. if ("0000".equals(bankCardResult.getRet_code())) {
  54. System.out.println("支付成功!!!");
  55. return;
  56. }
  57. // 需要输入短信验证码,调用交易二次短信验证接口
  58. // 用Debug模式,断点打到这里,Debug的时候把verifyCode设置成手机收到的真实验证码
  59. String verifyCode = "";
  60. if ("8888".equals(bankCardResult.getRet_code())) {
  61. ValidationSmsParams validationSmsParams = new ValidationSmsParams();
  62. validationSmsParams.setTimestamp(LLianPayDateUtils.getTimestamp());
  63. validationSmsParams.setOid_partner(bankCardResult.getOid_partner());
  64. validationSmsParams.setPayer_id(bankCardResult.getUser_id());
  65. validationSmsParams.setPayer_type("USER");
  66. validationSmsParams.setTxn_seqno(bankCardResult.getTxn_seqno());
  67. validationSmsParams.setTotal_amount(bankCardResult.getTotal_amount().toString());
  68. validationSmsParams.setToken(bankCardResult.getToken());
  69. validationSmsParams.setVerify_code(verifyCode);
  70. // 测试环境URL
  71. String validationSmsUrl = "https://accpapi-ste.lianlianpay-inc.com/v1/txn/validation-sms";
  72. String resultJsonStr2 = lLianPayClient.sendRequest(validationSmsUrl, JSON.toJSONString(validationSmsParams));
  73. ValidationSmsResult validationSmsResult = JSON.parseObject(resultJsonStr2, ValidationSmsResult.class);
  74. System.out.println(validationSmsResult);
  75. }
  76. }
  77. }